我非常了解 k 折交叉验证是什么。在我的学习和工作中,我总是听到一些类似的东西:
我们最常使用
k=10,因为有证据表明它对k. 较小的值不能提供好的估计值,较大的值也不能提供更好的结果。
我凭直觉可以绕开这个问题。但是,我似乎找不到任何将声明k=10为默认值的研究。如何继续证明10 是最有价值的?
我理解在偏差方面使用较小k与较大的影响。k但是为什么是10?没有5个或20个?一个人怎么会排在第 10 位?
我非常了解 k 折交叉验证是什么。在我的学习和工作中,我总是听到一些类似的东西:
我们最常使用
k=10,因为有证据表明它对k. 较小的值不能提供好的估计值,较大的值也不能提供更好的结果。
我凭直觉可以绕开这个问题。但是,我似乎找不到任何将声明k=10为默认值的研究。如何继续证明10 是最有价值的?
我理解在偏差方面使用较小k与较大的影响。k但是为什么是10?没有5个或20个?一个人怎么会排在第 10 位?
该声明:
我们最常使用 k=10,因为有证据表明它是 k 的最佳值。较小的值不能提供好的估计值,较大的值也不能提供更好的结果。
只是断然错误。人们默认 K=10 的原因是因为他们不知道 K 的变化如何影响他们对泛化误差的估计,并且他们(像您一样)在某处听说 K=10 是好的。
要了解是什么使 K 具有良好的值(以及 K=10 实际上是否比 K=9 或 K=11 更好),您需要了解更改此值对您的估计有什么影响。
随着 K 的减小,您估计中的偏差会增加。这是因为 K 值越低,您训练的数据就越少。例如,K = 2 只对一半数据进行训练,因此您的估计会有一个悲观的偏差,因为您减少了可供模型学习的数据量。K = 3 次对三分之二的数据进行训练,可用于训练的数据更多,性能更好。
过去人们认为存在偏差/方差权衡,因为 K 的减小会导致方差减小(随着偏差的增加),虽然这部分是正确的,但它并不总是成立。由于您的训练集相关性较低,较低的 K 值将具有较低的方差。想想 K = N(留一个)的极端例子。所有训练集看起来都非常相似,这意味着您收到的估计高度依赖于您必须训练的样本。如果您要从总体中抽取许多样本并使用留一来估计误差,那么由于样本之间的差异,您的估计会有很大的差异。这是相信在选择 K 时存在偏差/方差权衡的最初理由。
然而,这篇文章概述了情况并非如此,并且关于随着 K 增加或减少方差会发生什么,并没有普遍的真理。一些研究表明方差随着 K 的增加而增加,一些研究表明它随着 K 的增加而减小。
要考虑的另一件事是计算复杂性。如果您正在处理具有数百万条记录的数据集,则使用非常大的 K 值可能是不可行的,尤其是在您进行嵌套和/或重复交叉验证时。很多人只是根据计算时间来选择 K。
摘自 ESL -
理想情况下,如果我们有足够的数据,我们会留出一个验证集并使用它来评估我们的预测模型的性能。由于数据通常稀缺,这通常是不可能的。为了解决这个问题,K-fold 交叉验证使用部分可用数据来拟合模型
因此,关键目标是获得完整数据的方差,同时获得验证集。
这意味着什么-
应该以这样一种方式选择
K,即训练数据具有足够的方差以实现学习。所以应该是验证数据中的方差
让我们看这个表的两种情况。% 是每种情况下验证数据的一部分 -
足够的数据案例- 10% 或更少可能无法为训练集提供足够的方差。
数据不足- 20% 验证集可能会将训练集的大小减少到低于所需水平。
所以,我认为 20% 和 10% 都适用于各自的情况。但一般来说,当我们有足够的数据时,K-Fold 并没有多大用处。所以,剩下的是 10%。
不用说-
最好的价值永远是超值的。但我们人类更喜欢处理 5、10 或 8、16 等的倍数。否则9、11、10、22也可以同样好。