为什么我们需要交叉验证集?

数据挖掘 交叉验证 训练
2022-02-15 01:34:04

我知道我们需要在 onseen 数据上测试我们的模型,但该测试集不是用于吗?如果我们在 kfold 中增加 K 值会发生什么?

1个回答

为简单起见,我将讨论分类问题,但回归遵循相同的规则。

你会得到一些数据:其中一部分带有已知标签,而其他部分带有未知标签。“经典”目标是根据已知标签确定缺失的标签。数据自然地分成两块:(a)没有标签的数据——我们称之为测试集。(b) 带标签的数据——在一些教科书中,它被称为训练集,但训练集也用于另一件事(见下文),所以我将其称为带标签的数据以避免混淆。

您想在某些数据上训练选定的模型并将模型应用于测试集。用于训练的数据称为训练集。所以,一个天真的方案是

  1. 在训练集上训练模型
  2. 预测测试集上的标签。

但是,在对测试集进行预测之前,您需要衡量模型的好坏。我们修改我们的方法

  1. 在训练集上训练模型
  2. 验证模型是否表现良好
  3. 预测测试集上的标签

为了验证模型性能,我们执行以下操作:给定一个称为验证集的集合,我们预测验证集上的标签,然后检查准确性。请注意,验证集必须仅包含标记数据。为什么不使用训练集进行验证?这种方法容易过拟合:

  • 足够深的随机森林将准确预测训练集中的每个条目
  • 具有足够高次数的多项式将以零误差逼近所有点
  • k=1 的 KNN 将使每个节点在训练集上准确猜测,因为最近的节点是它自己。
  • 等等

为了解决这个问题,我们使训练集和验证集不相交。通常,我们将标记的数据随机分成两个块。请注意,测试集包含另一个数据。

在您的问题中,您将验证集称为测试集。一些作者这样做,但这是非常具有误导性的。

为了增加 K 折中的 K 值,我们操纵偏差-方差权衡。这是另一个概念,您可以阅读它,例如,在这里:https ://medium.com/@karenovna.ak/part-ii-evaluating-a-predictive-model-cross-validation-and-bias-和-方差-权衡-9874b836cd2e