嵌套交叉验证解决什么问题?
简化版
嵌套交叉验证用内层 CV 选择超参数、外层 CV 估计整个调参流程的泛化,避免用同一折既选模型又报成绩。最终结果是外层测试折指标分布,不是内层最佳分数。
详细版
-
外层测试折完全不能参与调参。
-
每个外层折都要重新执行内层搜索和特征工程。
-
计算成本约外层折×内层折×候选数。
-
分组/时间约束需在内外两层同时满足。
-
确定流程后可在全数据重新调参训练最终模型。
完整版教学
一、外层评估的是选择算法本身
普通 CV 若尝试很多配置并报告其中最高分,会选择到验证噪声。
嵌套 CV 把“搜索哪个配置”视为训练流程。
外层折模拟这套流程遇到全新数据,从而估计包含超参数选择偏差后的真实性能。
二、底层机制与公式
for outer train,test:
best=inner_CV_search(outer_train)
fit best on outer_train
score on outer_test
report distribution of outer scores
三、带数字的推演
5×4 嵌套 CV、20 个配置,约需 5×4×20=400 次内层拟合,另加 5 次外层重训;代价大,但外层 5 个分数才用于泛化报告。
四、方案对比
| 方案/对象 | 核心特点 | 代价或边界 |
|---|---|---|
| 普通 CV | 成本低 | 调参后分数乐观 |
| 嵌套 CV | 选择与评估隔离 | 计算昂贵 |
| 独立大测试集 | 流程简单 | 占用数据且只给一次估计 |
五、执行流程
外层划分 -> 在外层训练集内运行完整 Pipeline+搜索
-> 选配置并重训 -> 外层测试一次 -> 汇总所有外层折
六、边界条件与工程代价
不能先全量做特征选择再嵌套 CV,选择步骤也必须进入内层流水线。
外层各折最佳参数不同是正常现象;嵌套 CV 评估流程,不承诺唯一超参数。
记忆钩子:嵌套 CV 记成“内层选,外层考”。
七、常见误区与追问
-
误区:内层最高 CV 分数就是最终性能。 它用于选配置,外层分数才用于评估。
-
追问:特征工程放在哪? 所有拟合型变换放进内层 Pipeline。
-
误区:先选一组参数再跑外层即可。 参数选择若看过全数据仍泄漏。
-
追问:为何参数每折不同? 外层训练样本变化会改变最优选择。
-
追问:最终模型如何训练? 用全部开发数据重跑选择流程后拟合,测试不再参与。
八、加强记忆
嵌套 CV 记成“内层选,外层考”。
外层考的不是某个固定参数,而是整套选择流程遇到新数据的表现。