当使用交叉验证进行模型选择(例如超参数调整)和评估最佳模型的性能时,应该使用嵌套交叉验证。外循环是评估模型的性能,内循环是选择最好的模型;在每个外部训练集上选择模型(使用内部 CV 循环),并在相应的外部测试集上测量其性能。
这已经在许多线程中进行了讨论和解释(例如,在交叉验证后使用完整数据集进行训练?,请参阅@DikranMarsupial 的答案),我完全清楚。仅对模型选择和性能估计进行简单(非嵌套)交叉验证可以产生正偏差的性能估计。@DikranMarsupial 有一篇 2010 年关于这个主题的论文(关于模型选择中的过度拟合和性能评估中的后续选择偏差),第 4.3 节被称为模型选择中的过度拟合真的是实践中的真正问题吗?——论文表明答案是肯定的。
话虽如此,我现在正在使用多元多元岭回归,我看不出简单 CV 和嵌套 CV 之间有任何区别,因此在这种特殊情况下,嵌套 CV 看起来像是不必要的计算负担。我的问题是:在什么情况下,简单的 CV 会产生明显的偏差,而嵌套 CV 可以避免这种偏差?嵌套 CV 什么时候在实践中很重要,什么时候没那么重要?有什么经验法则吗?
这是使用我的实际数据集的插图。对于岭回归,横轴是纵轴是交叉验证误差。蓝线对应于简单(非嵌套)交叉验证,有 50 个随机 90:10 训练/测试拆分。红线对应于具有 50 个随机 90:10 训练/测试拆分的嵌套交叉验证,其中是通过内部交叉验证循环(也是 50 个随机 90:10 拆分)选择的。线条表示超过 50 个随机分割,阴影显示标准偏差。
红线是平的,因为的整个范围内测量。如果简单的交叉验证有偏差,那么蓝色曲线的最小值将低于红线。但这种情况并非如此。
更新
实际上就是这样:-) 只是差异很小。这是放大:
这里可能会产生误导的一件事是我的误差线(阴影)很大,但是嵌套和简单的 CV 可以(并且曾经)使用相同的训练/测试拆分进行。因此,正如@Dikran 在评论中所暗示的那样,它们之间的比较是成对的。因此,让我们来看看嵌套 CV 误差和简单 CV 误差之间的差异(对于对应于我的蓝色曲线上的最小值同样,在每一折中,这两个错误都是在同一个测试集上计算的。训练/测试拆分中绘制这种差异,我得到以下信息:
零对应于内部 CV 循环也产生的分裂(它几乎发生了一半的时间)。平均而言,差异往往是正的,即嵌套 CV 的误差略高。换句话说,简单的 CV 表现出一种微不足道但乐观的偏见。
(我运行了整个过程几次,每次都会发生。)
我的问题是,在什么情况下我们可以期望这种偏见是微不足道的,在什么情况下我们不应该?