交叉验证:K-fold vs 重复随机子采样

数据挖掘 交叉验证 采样
2021-09-18 04:22:45

我想知道为分类问题选择哪种类型的模型交叉验证:K-fold 或随机子采样(自举采样)?

我最好的猜测是使用 2/3 的数据集(大约 1000 个项目)进行训练,使用 1/3 进行验证。

在这种情况下,K-fold 只给出了 3 次迭代(折叠),这不足以看到稳定的平均误差。

另一方面,我不喜欢随机子采样功能:有些项目永远不会被选择用于训练/验证,有些项目会被多次使用。

使用的分类算法:随机森林和逻辑回归。

2个回答

如果您有足够数量的样本并且想要使用所有数据,那么 k 折交叉验证是可行的方法。大约 1,500 似乎很多,但它是否足以进行 k 折交叉验证还取决于数据的维度(属性数量和属性值数量)。例如,如果每个观测值有 100 个属性,那么 1,500 个观测值是低的。

k-fold 交叉验证的另一个潜在缺点是单个极端异常值可能会扭曲结果。例如,如果您有一个极端异常值可以严重偏向您的分类器,那么在 10 倍交叉验证中,10 个分区中有 9 个将受到影响(尽管对于随机森林,我认为您不会有这个问题)。

当您采样不足或遇到上述情况时,最好使用随机子采样(例如,自举采样),在这种情况下,您不希望每个观察结果出现在 k-1 折中。

我猜您说您想使用 3 折交叉验证,因为您对数据有所了解(使用 k=10 会导致过度拟合?我很好奇您的推理)。我不确定你是否知道这一点,如果不知道,那么你可以简单地使用更大的 k。

如果您仍然认为您不能使用标准的 k 折交叉验证,那么您可以稍微修改一下算法:假设您将数据分成 30 折,每次使用 20 进行训练,使用 10 进行评估(然后向上移动一次折叠并使用第一个和最后 9 个作为评估,其余作为训练)。这意味着您可以使用所有数据。

当我使用 k 折交叉验证时,我通常会使用不同的随机化多次运行该过程,以确保我有足够的数据,如果没有,您将看到取决于随机化的不同性能。在这种情况下,我建议抽样。那么诀窍就是经常这样做。