为什么交叉验证会给出有偏差的误差估计?

机器算法验证 交叉验证 造型 模型选择 偏见
2022-03-10 23:10:51

我在 CrossValidated 上遇到了许多讨论交叉验证和嵌套交叉验证作为替代方案的帖子(例如这里这里)。我不太明白为什么“普通”K-fold 交叉验证会给出有偏差的误差估计,这就是为什么我们需要嵌套交叉验证来以可靠(无偏见)的方式评估所选模型的性能的原因。

在所有这些关于交叉验证的帖子中,都强调了超参数调整(模型选择)和泛化性能估计之间的区别。但是这里有什么区别呢?为什么我不能同时对模型选择和估计这两个任务使用“普通”K-fold 交叉验证?我理解它的方式是模型选择与性能估计有关,因为选择最佳模型我们的评估基于一些指标,例如用于评估性能的 MSE。

这种偏见从何而来?集上训练不同的模型,然后在未用于训练的剩余集上评估性能,所以它应该给我们一个很好的性能估计,不是吗?用于验证的所有我们不使用相同的集合进行训练和验证。我看到如果我们执行重复的交叉验证,验证集在不同的重复中不是独立的,平均误差的标准误差会太低,但我真的看不出这种方法会给我们带来有偏差的估计。K1K

这个推理有什么问题吗?如果是这样,为什么?也许偏见的来源有些棘手,我看不到。

2个回答

最佳模型的 CV 误差是乐观的,因为该模型被精确选择以最小化该误差。如果是第个模型的 CV 误差,则Err^ii

E[min{Err^1,...,Err^m}]E[Err^i]

对于所有i

如果你不做模型选择,那么问题可能更微妙。也就是说,近似的数量不是给定模型在固定数据集上训练的误差,而是给定大小的所有可能数据集的预期泛化误差。换句话说,CV 近似于

Err:=EDPXYn[EXY[loss(fD(X),Y)|D]],

其中训练集本身是随机的,而不是人们可能想要的:D

ErrXY:=EXY[loss(fD(X),Y)|D],

对于固定数据集D

但即使对于,由于 CV 分裂,比如,折叠,实际近似的期望是 wrt 到,所以有一些偏差。当然,随着的降低,这可能变得无关紧要。ErrKDPXYK1KnErrK/n

CV 中的其他误差来源是每个测试样本的误差项中的依赖性:由于常见的训练拆分以及不同训练拆分之间的依赖性,存在无法使用个体损失的经验标准误差估计的方差每个测试样品。这就是为什么常见的置信区间是虚假的并且覆盖范围很差的原因。有关使用嵌套过程提供良好置信区间的嵌套过程,请参阅这篇最近的论文[1]。

[1]贝茨、斯蒂芬、特雷弗·哈斯蒂和罗伯特·蒂布希拉尼。“交叉验证:它估计什么以及它做得如何?”,2021 年 4 月 1 日。

这是否与您的观察可能不独立这一事实有关?想象一下,您正在根据两种成分的特性预测两种成分的给定化学混合物是否会爆炸。某个组件 A 可能出现在不同的观察中:您可以将它混合在 A+B、A+C、A+D 等中。现在,假设您使用 k 折验证。当模型预测 A+C 混合时,可能它已经用观察“A+B”进行了训练,因此,它会偏向于该观察的输出(因为两个观察的一半变量是相同:在一个中,您具有 A 的属性和 C 的属性,而在另一个中,您给出了 A 的属性和 B 的属性)。