我并不完全清楚这个问题在问什么,但我认为答案是否定的。对于交叉验证,您需要认真考虑的是,您的算法的任何部分都不能访问测试集。如果是这样,那么您的交叉验证结果将被污染,并且不能准确衡量“真实”错误。
根据您的问题,我假设您正在使用某种迭代学习算法,例如 GBM,并且您正在使用验证集来确定您的 GBM 何时在其集成中有足够的模型并开始过度拟合。如果这是真的,那么您所做的并不是最佳的。
考虑这一点的方法是停止标准是您的学习算法的一部分。如果它是算法的一部分,那么它就不能以任何方式使用测试集。
您可能需要进行嵌套交叉验证。在您的外循环中,您分为测试集和训练集,然后在您的内循环中,您将训练集进一步划分为子测试和训练集,并按照您的方式进行。内循环交叉验证可用于从该训练集学习何时停止学习,但要获得准确的泛化错误,您需要将其应用于尚未触及的外循环的测试集内部循环的目的是从训练数据中找到最佳停止时间。为了清楚起见,假设内循环交叉验证发现最佳迭代次数是 10。在外循环中,您使用完整的外循环训练集学习模型,迭代 10 次,然后看看它在测试集上的表现如何.
这有意义吗?
请注意,根据使用的模型和数据集,这可能是也可能不是大问题。缺点是嵌套交叉验证在计算上可能非常昂贵。在你的情况下,按照你的方式做事很可能是准确性和计算时间之间的适当权衡。对您的问题最严格的回答是否定的,这不是完全有效的交叉验证。它是否适合您的情况是另一个问题。