留一法与K折交叉验证的偏差和方差


83

在模型方差和偏差方面,不同的交叉验证方法如何比较?

我的问题部分源于此线程:折交叉验证中的最佳折叠数:留一法CV始终是最佳选择吗?K ķ。那里的答案表明,通过留一法交叉验证学习的模型具有比通过常规倍交叉验证法学习的模型更高的方差,这使得留一法CV成为较差的选择。K

但是,我的直觉告诉我,在留一式CV中,模型之间的方差应该比折CV 中的方差小,因为我们仅跨折移动一个数据点,因此折之间的训练集实质上重叠。K

或朝另一个方向发展,如果折CV 中的较低,则训练集的折折将完全不同,并且所得的模型更有可能不同(因此方差更高)。 ķKK

如果上述论点是正确的,为什么用留一法CV学习的模型会有更高的方差?


2
嗨Amelio。请注意,由Xavier和由Jake西部荒野这个年长的Q的新的答案提供模拟stats.stackexchange.com/questions/280665,都证明了方差减少与。这直接与当前接受的答案相矛盾,也与最不赞成的答案(先前已接受)相矛盾。我在任何地方都没有看到任何模拟可以证明方差随增加而对LOOCV最高的仿真。 ķKK
amoeba

2
谢谢@amoeba,我正在看两个答案的进展。我一定会尽力确保接受的答案指向最有用和最正确的答案。
Amelio Vazquez-Reina


看看他从哪里得到这张图将是很有趣的,乍一看论文似乎是根据他在引言部分中的解释而构成的。也许它是一个实际的模拟,但没有解释,这肯定不是他的实际实验的结果…………
Xavier Bourret Sicotte,

Answers:


51

为什么采用留一法CV学习的模型具有更高的方差?

[TL:DR]最近的帖子和辩论摘要(2018年7月)

该主题在本站点和科学文献中均已被广泛讨论,其观点,直觉和结论相互矛盾。早在2013年首次提出这个问题时,主要观点是LOOCV导致训练算法从大小为的样本中生成模型的预期泛化误差的较大方差。n(K1)/K

但是,这种观点似乎是对特殊情况的错误概括,我认为正确答案是:“取决于……”。

伊夫·格兰瓦莱特(Yves Grandvalet)的解读,是2004年关于该主题的论文的作者,我将直觉论点总结如下:

  1. 如果交叉验证是对独立估计值求平均,那么留一法式简历应该在模型之间看到相对较低的方差,因为我们仅在折痕上移动一个数据点,因此折痕之间的训练集实质上重叠。
  2. 当训练集高度相关时,情况并非如此:相关性可能随着K的增加而增加,并且这种增加导致第二种情况下方差的整体增加。直觉上,在那种情况下,留一手CV可能对存在的不稳定视而不见,但可能不会因更改训练数据中的单个点而被触发,这使其对于训练集的实现高度可变。

我本人和其他人在此站点上进行的实验模拟以及下面链接的论文中的研究人员进行的模拟表明,该主题没有普遍的真理。大多数实验都具有随单调减小或恒定的方差,但是一些特殊情况表明随增大了方差。 ķKK

该答案的其余部分建议对一个玩具示例进行模拟,并进行非正式的文献综述。

[更新]您可以在这里找到存在异常值的不稳定模型的替代模拟。

玩具示例中的仿真显示出减小/恒定的方差

考虑下面的玩具示例,其中我们将4级多项式拟合到嘈杂的正弦曲线。如学习曲线所示,由于过度拟合,我们预计该模型在小型数据集上的表现不佳。

在此处输入图片说明

请注意,我们在此处绘制1-MSE,以重现ESLII第243页的插图

 方法

您可以在此处找到此仿真的代码。该方法如下:

  1. 产生从分发10000点其中的真实方差是已知εsin(x)+ϵϵ
  2. 重复次(例如100或200次)。在每次迭代中,通过从原始分布中重新采样个点来更改数据集ñiN
  3. 对于每个数据集: i
    • 执行K-折交叉验证用于一个值K
    • 存储整个K折的平均均方误差(MSE)
  4. 一旦完成对的循环,对于相同的值,计算数据集上MSE的均值和标准差ķiiK
  5. 一直对范围内的所有重复上述步骤,直到留下一个CV(LOOCV){ 5 N }K{5,...,N}

对数据集的MSE偏差和方差的影响。Ki

左侧:Kfolds用于200个数据点, 右侧:Kfolds用于40个数据点

在此处输入图片说明

MSE的标准偏差(跨数据集i)与Kfolds

在此处输入图片说明

通过此模拟,似乎:

  • 对于小数目个数据点,增加直到左右显著改善了偏差和方差。对于较大的,对偏差或方差都没有影响。K K = 10 KN=40KK=10K
  • 直觉是,对于太小的有效训练量,多项式模型非常不稳定,尤其是对于K5
  • 对于较大的增加对偏差和方差均无特殊影响。KN=200K

非正式文献回顾

以下三篇论文研究了交叉验证的偏差和方差

Kohavi 1995

本文经常被认为是LOOC具有较高方差的论点。在第1节中:

“例如,休假率几乎没有偏见,但差异很大,导致估算值不可靠(Efron 1983)”

这种说法引起了很多混乱,因为它似乎是1983年的埃夫隆(Efron)而不是科哈维(Kohavi)的。Kohavi的理论论证和实验结果都违背了这一说法:

推论2(简历中的差异)

给定一个数据集和一个诱导子。如果诱导剂引起的删除测试实例为在k倍CV的褶皱为各种值的扰动下是稳定的,则估计的方差将是相同的k

实验 在他的实验中,Kohavi比较了UC Irvine存储库中多个数据集的两种算法:C4.5决策树和朴素贝叶斯分类器。他的结果如下:LHS是准确性vs倍数(即偏差),RHS是标准偏差vs倍数。

在此处输入图片说明

实际上,只有三个数据集上的决策树显然具有增加K的方差。其他结果显示方差减小或恒定。

最后,尽管结论的措辞可以说得更强烈,但没有论据表明LOO具有更高的方差,而恰恰相反。从第6节开始。

“具有中等k值(10-20)的k倍交叉验证减少了方差...随着k减少(2-5)并且样本变小,由于训练集本身的不稳定性,存在方差。

张杨

作者对此主题持强烈看法,并在7.1节中明确指出

实际上,至少平方线性回归,Burman(1989)表明,在k倍CV中,在估计预测误差时,LOO(即n倍CV)具有最小的渐近偏差和方差。...

...然后进行理论计算(Lu,2007)表明,在考虑了所有可能的n_v个删除的所有delete-n个CV中,LOO同时具有最小的偏差和方差

实验结果 同样,Zhang的实验指向随着K减小方差的方向,如下图3和图5所示的True模型和错误模型所示。

在此处输入图片说明

在此处输入图片说明

方差随增加的唯一实验是套索模型和SCAD模型。第31页的解释如下:K

但是,如果涉及模型选择,则由于模型空间大,惩罚系数小和/或使用数据驱动的惩罚系数而导致模型选择的不确定性变高,LOO的性能会变差。


11
+11!最后是一个明确的模拟答案!它直接违背了当前公认和最受推崇的答案的结论。关于您的结论:如果确实是“模型稳定性是关键因素”,那么人们应该能够建立一个仿真,其中方差将随增大。我看过两个模拟:这是您的模拟,两个模拟都表明方差随着减小或保持恒定。在我看到方差越来越大的模拟之前,我会一直对此持怀疑态度。 ķKK
amoeba

4
@amoeba这是LOOCV失败的情况:考虑n个数据点和n阶插值多项式。现在,通过在每个现有点上添加重复的权限,将数据点的数量加倍。LOOCV说错误为零。您需要降低折痕以获得任何有用的信息。
保罗

2
对于有意参与这项讨论茨艾伦-让我们继续聊天:chat.stackexchange.com/rooms/80281/...
泽维尔Bourret Sicotte

1
您是否考虑过例如允许重复的事实?这不是LOOCV的选择,因此应予以考虑。ķ = 10kfoldk=10
D1X

1
@amoeba:关于Kohavi / LOO和方差。我发现某些分类模型的LOO 可能非常(令人惊讶)不稳定。这在较小的样本量中尤其明显,我认为这与始终属于wrt代表性不足的类的测试用例有关。整个样本:在二元分类中,分层的leaves-2-out似乎没有这个问题(但我没有进行广泛的测试)。这种不稳定性会增加观察到的方差,从而使LOO脱离k的其他选择。IIRC,这与Kohavi的发现是一致的。
cbeleites

45

在倍交叉验证我们划分一个数据集到相等大小的非重叠子集。对于每个折叠,在上训练模型,然后在对其进行评估。例如,预测误差的交叉验证估计器被定义为每次折叠获得的预测误差的平均值。ķ 小号小号小号小号小号kkSSiSSiSi

虽然在评估模型的测试集之间没有重叠,但是对于所有,训练集之间都存在重叠。对于留一法式交叉验证,重叠是最大的。这意味着学习的模型是相关的,即是相关的,并且相关变量之和的方差随协方差量的增加而增加(请参阅Wikipedia):k>2

Var(i=1NXi)=i=1Nj=1NCov(Xi,Xj)

因此,与较小的CV相比,留一法交叉验证具有较大的方差。k

但是,请注意,尽管双重交叉验证不存在训练集重叠的问题,但由于训练集仅是原始样本大小的一半,因此通常也存在较大差异。一个很好的折衷方案是十倍交叉验证。

一些有趣的论文涉及这个主题(更多):


5
+1(很久以前),但是现在重新阅读您的答案,我对以下内容感到困惑。您说2倍CV“通常也有很大的差异,因为训练集只是大小的一半”。我知道将训练集减小两倍是一个问题,但是为什么会产生“大差异”呢?难道不是“大偏差”吗?这样,选择倍数的整个问题就变成了偏差方差的折衷,这就是经常出现的问题。
变形虫

1
@Sebastian我认为在这种情况下,“方差”是指“累积”模型性能的方差(所有折的总和),而不是折边本身的方差,就像您在最后两个句子中所暗示的那样。k
变形虫

3
只是在研究一些文学作品。有趣的是,在《统计学习入门》中,James,Witten,Hastie和Tibshirani表示,LOOCV“具有很大的可变性,因为它是基于单个观测值(x1,y1)”。Hastie&Tibshirani&Friedman在《统计学习元素》中说,LOOCV“可以有很大的差异,因为N个训练集非常相似。”

2
这是不正确的。方差应为 =。没错,枚举数更大,但分母也变大。var[Σxi/n]ΣΣcov(xi,xj)/n2
北部的

3
不,那不是真正的“重点”。人们一直使用k倍CV来获得单个全局估计。您当然可以尝试以其他方式使用多重折叠估计,但是将它们组合在一起是估计建模技术保持性能的最常用方法之一。而这正是ESL 7.48式的工作方式。
保罗

27

[...]我的直觉告诉我,在留一式CV中,模型之间的方差应该比折CV 中的方差小,因为我们仅在折点之间移动一个数据点,因此训练在折点之间进行基本上重叠。K

我认为,如果您正在考虑模型在每个留一折下的预测,那么您的直觉是明智的。它们基于相关/非常相似的数据(完整数据集减去一个数据点),因此将做出相似的预测-即低可变性。

但是,混淆的根源是,当人们谈论导致高度可变性的LOOCV时,他们并不是在谈论在保留集的交叉验证循环中建立的许多模型所做出的预测。相反,他们在谈论的是,如果您在新的训练集中训练精确的模型/参数,最终选择的模型(通过LOOCV选择的模型)将具有多少可变性-训练集从未出现过。在这种情况下,可变性会很高。

为什么变异性会很高?让我们简化一下。想象一下,您没有使用LOOCV来选择模型,而是拥有一个训练集,然后测试了使用该训练数据构建的模型,例如,对100个单个测试数据点进行了100次测试(数据点不属于训练集) 。如果您选择在这100个测试中效果最好的模型和参数集,那么您将选择一个模型和参数集,该模型和参数集可以使此特定训练集真正擅长预测测试数据。您可能会选择一个模型,该模型捕获该特定训练数据集和保留数据之间100%的关联。不幸的是,训练数据集和测试数据集之间的某些关联将是噪声或虚假关联,因为尽管测试集发生了变化,但您可以在这一侧识别出噪声,训练数据集没有,您无法确定由噪声引起的解释方差。换句话说,这意味着已经将您的预测与该特定训练数据集过度拟合。

现在,如果您要在新的训练集上用相同的参数多次训练该模型,会发生什么?好吧,当训练集发生更改时(即略微更改训练集,并且该模型将大幅更改其预测),过度适合特定训练数据集的模型将导致其预测发生变化。

因为LOOCV中的所有折叠都是高度相关的,所以它与上面的情况相似(相同的训练集;不同的测试点)。换句话说,如果特定的训练集与那些测试点具有某些虚假的相关性,那么您的模型将很难确定哪些相关性是真实的,哪些是虚假的,因为即使测试集发生了变化,训练集也不会。

相反,较少的训练折叠相关性意味着该模型将适合于多个唯一数据集。因此,在这种情况下,如果您在另一个新的数据集上对模型进行训练,则会得出相似的预测(即,较小的可变性)。


4
我认为此答案比接受的答案更能说明问题,尤其是可以解释接受的答案。
D1X

“现在,如果您要在新的训练集上多次使用相同的参数对该模型进行再训练,那会发生什么?”的意思是什么?训练意味着找到参数,对吧?你是说超参数吗?
MiloMinderbinder

14

尽管这个问题比较老,但我想补充一个答案,因为我认为有必要进一步澄清一下。

我的问题部分是由该线程引起的:K折交叉验证中的最佳折数单挑CV始终是最佳选择吗?。那里的答案表明,通过留一法交叉验证学习的模型比通过常规K折交叉法学习的模型具有更高的方差,这使得留一法CV成为较差的选择。

该答案并不表明,也不应如此。让我们查看那里提供的答案:

留一法交叉验证通常不会产生比K倍更好的性能,并且更可能更糟,因为它具有相对较高的方差(即,其值在不同数据样本中的变化多于K值)。 k倍交叉验证)。

它在谈论性能。在这里,性能必须理解为模型误差估计器性能。当使用这些技术选择模型并提供误差估计时,您要用k倍或LOOCV来估计模型的性能。这不是模型方差,而是(模型的)误差估计量的方差。请参见下面的示例(*)

但是,我的直觉告诉我,在遗忘式简历中,模型之间的方差应该比在K折简历中要小,因为我们只在折页间移动一个数据点,因此折页之间的训练集会大大重叠。

n2n

正是由于模型之间的较低方差和较高的相关性,使得我上面讨论的估计量具有更大的方差,因为该估计量是这些相关量的均值,并且相关数据的均值方差高于不相关数据的均方差。这里显示了原因: 相关数据和非相关数据的均值方差

或朝另一个方向发展,如果K折CV中的K较低,则训练集的折折将完全不同,并且所得模型更有可能不同(因此方差更高)。

确实。

如果上述论点是正确的,为什么用留一法CV学习的模型会有更高的方差?

上面的论点是正确的。现在,这个问题是错误的。模型的差异是一个完全不同的主题。有一个随机变量的方差。在机器学习中,您处理许多随机变量,尤其是但不限于:每个观察值都是随机变量;样本是随机变量;由于该模型是根据随机变量训练的,因此该模型是随机变量;您的模型在面对总体时将产生的误差的估计量是一个随机变量;最后但并非最不重要的一点是,模型的误差是一个随机变量,因为总体中可能存在噪声(这称为不可约误差)。如果模型学习过程涉及随机性,那么随机性也可能更大。区分所有这些变量至关重要。


errerrEerr~err~var(err~)E(err~err)var(err~)kfoldk<nerr=10err~1err~2

err~1=0,5,10,20,15,5,20,0,10,15...
err~2=8.5,9.5,8.5,9.5,8.75,9.25,8.8,9.2...

最后一个尽管具有更大的偏见,但应首选,因为它具有更少的方差和可接受的偏见,即折衷偏见-偏见的权衡)。请注意,如果两者都带有很高的偏差,那么您都不希望偏差很小!


附加说明:在此答案中,我试图澄清(我认为是什么)围绕该主题的误解,尤其是尝试一点一点地回答提问者的确切疑问。特别是,我试图弄清楚我们正在谈论的哪个方差,这正是这里要问的。即,我解释了由OP链接的答案。

话虽这么说,虽然我提供了主张背后的理论依据,但我们尚未找到确凿的经验证据来支持这一主张。因此,请非常小心。

理想情况下,您应该先阅读这篇文章,然后参考Xavier Bourret Sicotte的答案,该答案提供了关于经验方面的深入讨论。

kkfoldk10 × 10 f o l d10 × 10fold


2
KK

3
kN

KK=10K=N

1
还没看过那些论文,有空的时候我会看一下。但是,OLS线性模型是非常简单的模型,确实使其自身具有较低的方差。不仅如此,他们还提供了交叉验证的封闭公式。
D1X

1
+1您的修改可使答案更加清晰-我们对训练集之间的相关性影响保持一致->更高的方差。尽管在实践中(实验上),训练集似乎并不总是相互关联的。
Xavier Bourret Sicotte

12

这些问题确实是微妙的。但是,LOOCV通常具有较大的变化绝对是不正确的。最近的一篇文章讨论了一些关键方面,并解决了一些关于交叉验证的看似普遍的误解。

张永利和杨玉红(2015)。选择模型选择程序的交叉验证。计量经济学杂志,第一卷。187,95-112。

直到现在,以下误解在文献中也很常见:

“留一出式(LOO)简历比留出一分简历的简历偏差小,但方差大”

这种观点很受欢迎。例如,科哈维(Kohavi,1995,第1节)指出:“例如,留一法几乎没有偏见,但差异很大,导致估计值不可靠”。但是,这种说法通常并不正确。

更详细地:

在文献中,甚至包括最近的出版物,都提出了过多的建议。Kohavi(1995)使用10倍CV的一般建议已被广泛接受。例如,Krstajic等人(2014年,第11页)指出:“ Kohavi [6]和Hastie等人[4]从经验上表明,与留一法式交叉验证相比,V折交叉验证的方差较小”。因此,他们在所有数值研究中都采用10倍CV(重复)的建议。我们认为,这种做法可能会产生误导。首先,不应有任何不考虑使用简历的目标的一般建议。尤其是,候选模型/建模过程的CV精度估计的偏差和方差的检查与最佳模型选择(具有前面提到的模型选择的两个目标之一)可能是完全不同的问题。其次,即使限于准确性估计上下文,该声明通常也不正确。对于不稳定性较低的模型/建模过程,LOO通常具有最小的可变性。我们还证明,对于高度不稳定的程序(例如pn远大于n的LASSO),由于偏差增加甚至更大,因此10倍或5倍CV在降低可变性的同时,MSE可能比LOO大得多。对于不稳定性较低的模型/建模过程,LOO通常具有最小的可变性。我们还证明,对于高度不稳定的程序(例如pn远大于n的LASSO),由于偏差增加甚至更大,因此10倍或5倍CV在降低可变性的同时,MSE可能比LOO大得多。对于不稳定性较低的模型/建模过程,LOO通常具有最小的可变性。我们还证明,对于高度不稳定的程序(例如pn远大于n的LASSO),由于偏差增加甚至更大,因此10倍或5倍CV在降低可变性的同时,MSE可能比LOO大得多。

总体而言,从图3-4可以看出,LOO和重复的50倍和20倍CV在这里是最好的,10倍显着更差,k≤5显然很差。对于预测性能评估,我们倾向于认为LOO在偏差和方差方面通常是最佳的,或者是固定模型或非常稳定的建模过程(例如,本文中的BIC)中的最佳值,或者在最佳状态中接近最佳值。 MSE用于更不稳定的程序(例如AIC或pSO n的LASSO)。尽管有时10倍CV(带有重复)当然可能是最好的,但更常见的是,它处于尴尬的位置:预测误差估计比LOO(由于偏差问题)风险更大,通常比删除差-n / 2简历,用于确定最佳候选人。


4
是否可以对此答案进行一些扩展,或者总结一下本文提出的一些关键方面?
Silverfish

3
非常有趣的论文。在回顾Kohavi(1995)时,我感到许多陈述不可能广泛,而且基本上没有根据。这是一篇民间智慧的论文,早就该进行批判性审问了。
保罗

3

在讨论偏差和方差之前,第一个问题是:

交叉验证估计了什么?

Kn(K1)/KKK

K

K

K


4
K

0

我认为有一个更直接的答案。如果增加k,则测试集将变得越来越小。由于褶皱是随机抽样的,因此在较小的测试集上可能会发生,但对于较大的测试集则不太可能,因为它们不能代表随机混洗。一个测试集可能包含所有难以预测的记录,而另一个则包含所有容易预测的记录。因此,当您预测每折叠非常小的测试集时,方差很高。


Xi

4
似乎您在谈论交叉验证期间跨保留集的模型预测中的可变性。我认为这没有太大意义。有趣的是,如果要在不同的数据上训练最终调整的模型,则最终预测的模型是否会大相径庭(即,模型的真实性估计值实际取决于训练集而变化)
captain_ahab

如果不通过当时未知的连续预测数据集之间的观测变化,您如何估计尚未看到的数据的预期变化?不过,我的意思是,仅由实验设置引起的可变性就没有意义了。我的回答:因此,需要选择一种不会引入新的可变性的实验装置。如果这样做的话,就无法将两种可变性区分开,而估计一种感兴趣的扩展性就变得更加困难。
大卫·恩斯特

1
您可以通过仿真来展示这一点(我将寻找论文)。我不确定我们是否在谈论对方-但是当匆忙和人们谈论LOOCV中的训练集之间的高度相关性时,他们强调您基本上是在同一训练数据集上训练模型。这导致过度拟合该训练数据集。更改训练数据集,您对测试示例X的预测建模会发生很大变化。相反,如果你的训练集是不太相关,您可以使用一个全新的训练集,你会得到测试例如X的类似预测
captain_ahab

我认为涉及两个独立的问题。k的增加导致训练集之间更多的重叠,这具有您提到的后果。(我对此并不反对),同时增加k会导致每次折叠的测试集更小,这意味着记录中的记录更有可能以不想要的方式被改组。我认为对于所提出的具体问题,这是主要原因。训练集重叠也可能有贡献。(当您使用重复时,还有另一个问题,因为测试集也会重叠。)
David Ernst,2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.