Skip to content

留出法与交叉验证

Holdout · Cross-validation · 交叉验证 · 嵌套交叉验证

通过隔离训练、模型选择和最终评价的数据角色估计样本外风险,并识别反复查看测试集造成的选择偏差。

三种数据角色

模型开发包含三个不同问题:用什么数据拟合参数,用什么数据选择模型或超参数,以及用什么数据评价最终固定方案。训练集、验证集、测试集不是文件名,而是这三种统计角色。同一条样本可以在不同折中轮换角色,但若一个结果已参与选择,就不能再把它当作对该选择完全独立的最终证据。

最简单的留出法把 IID 样本随机分成训练集 Str 与测试集 Ste。学习器只访问训练集,得到 h^=A(Str)。条件于训练集,h^ 对测试样本是固定的,因此

R^Ste(h^)=1|Ste|zSte(h^,z)

可用普通集中不等式估计 RD(h^)。独立性来自协议隔离,不来自“这个目录叫 test”。

k 折交叉验证

把样本索引划分为 k 个不交叠折 I1,,Ik。第 j 轮在除 Ij 外的数据上训练 h^(j),在 Ij 上评价。交叉验证估计量为

R^CV=1mj=1kiIj(h^(j),Zi).

每条样本恰好被测试一次,训练数据却在各轮高度重叠。因此各折误差不是独立观测,不能把 k 个折均值直接当成 k 个独立实验来算标准误。

k 控制偏差—计算折中。较大的 k 让每轮训练集更接近全数据,训练目标偏差通常较小,却需要更多次拟合,折间相关结构也更强。leave-one-out 是 k=m 的极端,并不因“用了几乎全部数据训练”就必然给最低方差。

模型选择与嵌套交叉验证

若用交叉验证分数在候选集合 Λ 中选择

λ^argminλΛR^CV(λ),

最小分数对其自身存在乐观选择偏差。候选越多、调参越反复,偶然低估越容易获胜。此分数适合选模型,却不再是最终方案的无偏独立评价。

嵌套交叉验证用外层折估计整个选择流程:每个外层训练部分内部再做一轮交叉验证选择 λ,随后只在未被内部流程看见的外层测试折上评价。外层估计的对象是“在给定样本规模上运行整套调参算法”的性能,而不是某个在全数据上训练出的确定模型的条件风险。这一区别在解释结果时应明确。

一个完整协议

假设要在三种特征处理方式和十个正则强度间选择。先保留一次性测试集;在其余数据上进行交叉验证,且每一折内重新拟合标准化、缺失值处理和特征选择,再选出管线。随后用全部非测试数据重新拟合一次,最后只评价一次测试集。

若先在全数据上标准化或筛特征,再切折,测试折的信息已进入训练变换,形成数据泄漏。泄漏不一定表现为直接读取标签;用全体样本估计词表、时间窗口或归一化尺度,也可能让评估对象不再是实际部署时可用的训练流程。

时间、群组与分布边界

随机折分默认样本可交换。时间序列应尊重因果顺序,常用滚动或向前验证;同一用户、病人或设备产生的多条记录应按群组切分,避免近重复实体跨越训练和测试。若部署分布与收集分布不同,即使切分完全独立,估计的仍是旧分布风险,不会自动覆盖分布漂移。

分类不平衡时可做分层切分以稳定各折类别比例,但分层不把条件抽样重新变成原始总体;报告指标时仍需说明目标先验和加权方式。极少数群组或稀有类别下,折数选择受实际可分样本数限制。

置信度与重复使用

一次独立测试集支持固定模型的有限样本置信界。若团队根据测试结果继续改模型,再回来报告同一测试集,模型已经依赖测试反馈。此时要么取得新测试集,要么把旧测试集降格为验证数据,并用自适应数据分析机制明确管理复用。

重复多次随机交叉验证可以描述切分敏感性,但这些重复共享大量样本,不能把重复次数当作独立样本量。最可靠的报告会同时给出切分协议、评价对象、候选搜索范围和不确定性计算方法,而不是只给一个平均分。

参考资料
  • Mervyn Stone, “Cross-Validatory Choice and Assessment of Statistical Predictions,” JRSS B, 1974.
  • Trevor Hastie, Robert Tibshirani, and Jerome Friedman, The Elements of Statistical Learning, model assessment chapter.
  • Sylvain Arlot and Alain Celisse, “A Survey of Cross-Validation Procedures for Model Selection,” Statistics Surveys, 2010.