- 这里的实际目标是什么?我知道我们对我们所做的 k 轮交叉验证取平均值,但我们的输出是什么?我读过我们在计算验证错误后丢弃了每一轮的结果,那么我们如何实际生成一个模型呢?
目标是获得对模型性能的准确估计。交叉验证为数据集中的每个示例生成无偏的模型预测。我们使用这些预测来计算训练数据集的指标,例如准确度或日志损失。当我们实际构建模型时,我们将使用整个数据集而不是交叉验证。
- 验证集和测试集之间有什么区别(如果有)?即,我们通常将我们的数据分为训练数据和测试数据,但是我们是否进一步将我们的训练数据划分为验证集,并在交叉验证过程中保留我们的测试数据,或者我们对整个数据进行交叉验证放?
验证集是在训练阶段使用的一组标记示例,但实际上并非用于训练模型。这可以通过多种方式完成。例如,当通过迭代过程(如神经网络的梯度下降)构建模型时,我们可以使用验证集来决定何时停止迭代。在每个训练步骤之后,训练集的性能几乎总是会提高,但最终会过度拟合并对看不见的数据产生糟糕的预测。在这种情况下,我们可以在验证集上测试模型以检测何时发生过拟合。
另一方面,测试集仅用于在训练完成后评估模型。优化我们在验证集上的性能训练意味着我们稍微偏向它,我们最终应该在一组真正保留的标记数据上进行测试,以评估模型的性能。
交叉验证旨在“取代”对测试集的需求,以提供对模型性能的无偏估计,因此在进行交叉验证时通常不会为拥有测试集而烦恼。但是,如果您有一个大型数据集,通常建议拆分为训练/测试,而不是使用交叉验证。