在 K 交叉折叠验证中确定 K 的指标

数据挖掘 交叉验证 准确性 表现
2021-10-15 00:55:13

考虑一个手头数据集非常大的场景,假设有 50000 个样本(两个类之间非常平衡)。可以使用哪些指标来确定 K 折交叉验证中的 K 值?换句话说,5 倍的 CV 就够了,还是我应该去 10 倍的 CV?

经验法则是 K 越高越好。但是,撇开计算成本不谈,什么可以用来决定 K 的值呢?我们是否应该查看整体性能,例如平均准确度?也就是说,如果accuracy (5CV) ~ accuracy(10CV),我们可以选择5-fold CV?。不同折叠性能之间的标准差重要吗?也就是说,越低越好?

4个回答

经验法则是 K 越高越好。

我认为更好的经验法则是:数据集越大,重要性越低ķ.

但是,对影响的总体了解是有用的ķ关于性能估计器(撇开计算成本):

  • 增加ķ减少偏差,因为训练集更好地代表数据
  • 增加ķ增加估计量的方差,因为训练数据集变得更加相似

还要注意,没有无偏估计量的方差ķ-折叠简历这意味着没有指标可以告诉你最好的ķ如果你把计算成本放在一边。一些实证研究表明,10 是合理的默认值。

并且要清楚,ķ不是您要调整以找到最佳精度的超参数。如果你开始表演ķ2-折叠简历以找到最好的ķ1希望有些事情感觉不对。

首先选择 K 基本上是启发式方法。这取决于数据和模型。在我看来,大多数时候 5 是一个不错的选择。它不需要太多的计算能力和时间,但您需要尝试看看哪个更适合您的数据。天下没有免费的午餐!

我会为您推荐另一个简历创意。例如,如果您使用 5 折 CV(没有分层和随机播放),基本上您将数据分成 5 个相等的折。相等的意思是:每个褶皱都具有相同的形状。每个折叠罐都有不同的分布。因此,您可以手动选择折叠。绘制目标变量的分布并尝试捕捉相同的模式来决定你的折叠。

您还可以根据标准选择具有不同 K 的模型。例如AIC

你应该问自己,为什么我们还要进行交叉验证? 这不是为了获得更好的准确性。您正在尝试对看不见的数据的准确性(或其他指标)进行更好的估计。您想知道模型的泛化程度如何。

如果您尝试对“最佳 K”进行网格搜索,您将浪费一些数据,或者对指标进行更差的估计。

浪费数据 - 您将数据分成两组并在其中一组上进行网格搜索,然后对第二个数据集进行交叉验证(使用“最佳 K”)。不要这样做。

获得更差的估计 - 您对“最佳 K”进行网格搜索,并根据您选择的指标选择能够获得最佳结果的那个。但是现在你带来了你不应该拥有的信息。你对你的估计太乐观了。当您开始进行交叉验证时,这与您想要的完全相反。也不要这样做。

那你应该怎么做?选择对您要解决的问题有意义的最大 K。不要把计算成本放在一边。计算成本应确定 K。

如有必要,您可以尝试留一法,它实际上只是 k 等于数据中的实例数。在您在整个数据集上重新训练模型后,这可能会为您提供最真实的预期准确性。

然而,正如其他人所说,执行留一法的计算成本很高,预期精度的相对增益可能并不重要。例如,如果 k=5 的预期准确率为 95%,k=10 的预期准确率为 97%,并且您有 15000 个实例,那么预期准确率为 97.5% 有什么好处?在某些情况下,可能需要对模型的性能进行最准确的估计,但在大多数情况下,这不是必需的,例如,如果您在 AWS 上进行培训,则成本可能是实际的金钱和巨大的。