为什么关于误差均值估计的留一法交叉验证 (LOOCV) 方差很高?

机器算法验证 方差 交叉验证
2022-01-24 20:43:48

在留一法交叉验证 (LOOCV) 中,每个训练集看起来都与其他训练集非常相似,只有一个观察结果不同。当您想要估计测试误差时,您可以取折叠上的误差平均值。该平均值具有很大的方差。

是否有数学公式、可视化或直观的方式来理解为什么该平均值与k-折叠交叉验证?

4个回答

这个答案的原始版本没有抓住重点(那是答案得到几个反对票的时候)。答案在 2015 年 10 月确定。

这是一个有点争议的话题。

通常声称 LOOCV 的方差高于k-fold CV,之所以如此,是因为 LOOCV 中的训练集有更多的重叠。这使得来自不同折叠的估计比在k-fold CV,推理是这样的,因此增加了整体方差。例如,请参见Hastie 等人的 The Elements of Statistical Learning的引用。(第 7.10.1 节):

我们应该选择什么值K? K=N,交叉验证估计量对真实(预期)预测误差近似无偏,但可能具有高方差,因为N“训练集”彼此非常相似。

另请参阅@BrashEquilibrium (+1) 的答案中的类似引用。交叉验证中的方差和偏差中被接受和最受好评的答案:为什么留一法CV具有更高的方差?给出同样的理由。

但是,请注意 Hastie 等人。不要给出任何引用,虽然这个推理听起来很合理,但我希望看到一些直接证据证明情况确实如此。有时被引用的一个参考文献是Kohavi 1995,但我发现它在这个特定的主张中不是很有说服力。

此外,这里有两个模拟表明 LOOCV 与 10 倍 CV 相比具有相同甚至更低的方差:

统计学习导论

当我们执行 LOOCV 时,我们实际上是在平均输出n拟合模型,每个模型都在几乎相同的一组观察值上进行训练;因此,这些输出彼此高度(正)相关。相反,当我们执行k-折叠简历k<n,我们正在平均输出k由于每个模型中训练集之间的重叠较小,因此彼此相关性较低的拟合模型。由于许多高度相关的量的平均值比许多不高度相关的量的平均值具有更高的方差,因此由 LOOCV 得出的测试误差估计值往往比由k-折叠简历。

总而言之,存在与选择相关的偏差 - 方差权衡kk-折叠交叉验证。通常,鉴于这些考虑,一个执行k-fold 交叉验证k=5或者k=10,因为这些值已根据经验证明可以产生测试错误率估计值,该估计值既不会受到过高偏差的影响,也不会受到非常高的方差的影响。

  • 在简单的情况下,我认为答案是:总均值(在所有测试用例和所有折叠中)具有相同的方差k-fold 和 LOO 验证。

  • 这里简单的意思是:模型是稳定的,所以每个k或者n代理模型对同一样本产生相同的预测(思想实验:使用大型独立测试集测试代理模型)。

  • 如果模型不稳定,情况会变得更加复杂:每个代理模型都有自己的性能,所以你有额外的方差。在这种情况下,所有赌注都是开放的,无论是 LOO 还是k-fold 有更多的额外方差*。但是你可以迭代k-fold CV 并取所有测试用例和所有测试用例的总平均值i×k代理模型可以减轻这种额外的差异。LOO 没有这种可能性:n代理模型都是可能的代理模型。

  • 较大的差异通常是由于两个因素:

    • 小样本量(如果你不是在小样本量的情况下,你不会担心方差;-))。
    • 高方差类型的误差测量。所有比例测试用例类型的分类错误都受到高方差的影响。这是通过计数案例来估计分数的基本属性。像 MSE 这样的回归型错误在这方面表现得更加良性。

对于分类错误,有许多论文着眼于不同重采样验证方案的属性,其中您也看到了差异,例如:

(我想类似的论文也可能存在回归错误,但我不知道)

* 人们可能期望 LOO 的方差较小,因为代理模型是用更多案例训练的,但至少对于某些类型的分类模型,LOO 表现不佳。

LOOCV 中没有像 k-Fold Cross 验证这样的折叠(实际上它们可以被命名为折叠但没有意义)。在 LOOCV 中,它的作用是从整个数据集中留下一个实例作为测试数据,并使用所有其他实例进行训练。因此,在每次迭代中,它将从数据集中留下一个实例进行测试。因此,在特定的评估迭代中,测试数据中只有一个实例,其余的都在训练数据中。这就是为什么您看到所有训练数据集都等于所有时间。

在通过使用分层(一种用于平衡数据集的高级方法,确保每个类在所有样本中代表大致相等的比例)的K 折交叉验证中,我们可以减少估计的方差。

由于 LOOCV 仅使用一个实例进行测试,因此无法应用分层。因此 LOOCV 在误差估计中的方差高于 k 折交叉验证。