训练集、验证集、交叉验证与自助法
层级:A|必学
1. 评估的是完整学习流程
模型性能不是参数在训练集上的函数,而是“数据抽样 → 预处理 → 特征选择 → 调参 → 拟合 → 阈值选择”的完整流程对未来数据的表现。任何用到标签或分布统计的步骤都必须留在训练侧。
2. 三分法
- training:拟合模型参数和训练侧统计;
- validation:选择架构、超参数、checkpoint、阈值;
- test:一次性评估冻结流程。
测试集不是“永远不能看”,而是看后不能再用其结果做选择并仍声称独立终评。若修改,需新测试数据或承认其已变验证集。
3. 随机切分的适用条件
普通随机切分近似要求行 iid 且部署同分布。以下需特殊切分:
- 用户多行:Group split;
- 时间预测:按时间向前验证;
- 地域/站点泛化:留站点/地域;
- 重复实体/近重复:同组放一侧;
- 推荐曝光:考虑策略与时间。
切分应模拟真正部署泛化单元。
4. k-fold 交叉验证
把数据分成 折。每次用 折训练、1 折验证,得到分数 ,平均:
优点是每个样本都验证一次,适合中小数据。缺点是训练 次,折结果相关,简单把折标准差/ 当标准误通常不严谨。
5. Stratified、Group 与 TimeSeries CV
- stratified:每折保持类别比例,减少不平衡下波动;
- group k-fold:同组不跨训练验证;
- leave-one-group-out:检验对新组泛化;
- rolling/expanding window:只用过去预测未来;
- purge/embargo:金融/标签窗口重叠时防邻近泄漏。
分层不能替代 group/time 约束,可需组合方案。
6. 嵌套交叉验证
外层估计选择流程泛化,内层在外层训练数据中选超参数:
- 外层留一折测试;
- 在外层训练部分做内层 CV 选超参;
- 用所选超参重训外层训练部分;
- 评估外层测试折;
- 汇总外层分数。
若在同一 CV 上既选最优又报告最优分数,会有选择偏差。
7. 预处理 pipeline
每个训练折内部拟合:
- 缺失填补;
- 标准化;
- 类别编码词表;
- 目标编码;
- 特征选择/PCA;
- 过/欠采样;
- 数据增强统计。
然后只 transform 验证折。使用 pipeline 对象可降低手工泄漏风险。
8. Bootstrap
从 个观测有放回抽 次。某个观测一次未被抽中的概率:
所以每个 bootstrap 样本约含 63.2% 不同原观测,其余为重复。未抽中者称 out-of-bag,可用于随机森林内部评估。
9. Bootstrap 用途与限制
用途:标准误、区间、偏差估计、模型稳定性。要对完整 pipeline 重采样。
限制:
- 极值、边界、非光滑统计量;
- 小样本稀有类别;
- 时间/空间/群组依赖;
- 分布外泛化;
- adaptive data collection。
需 block/cluster/parametric bootstrap 或其他方法。
10. .632 估计
训练 bootstrap 样本上评估过于乐观,OOB 评估有效训练样本较少可能悲观。.632 方法把训练与 OOB 误差按约 0.368/0.632 加权;.632+ 再调整过拟合。现代 ML 更常用 CV,但理解来源有助读西瓜书模型评估内容。
11. 指标聚合
若折大小不同,逐折指标简单平均与汇总所有 out-of-fold 预测后计算可能不同,尤其 F1/AUC 等非线性指标。应明确:
- macro across folds;
- sample-weighted;
- pooled out-of-fold;
- group-level aggregation。
阈值若需选择,应在训练/内层验证选,不可用外层测试标签。
12. 置信区间与随机性
性能不确定性包括:
- 测试样本抽样;
- 训练数据抽样;
- 算法 seed;
- 超参数选择。
一次 k-fold 的折标准差不完整。可做 repeated nested CV、外层 bootstrap、多个 seed,并使用配对预测差;具体设计匹配要报告的泛化对象。
13. 最终重训
选择流程完成后,可用训练+验证数据按冻结超参数重训最终模型,再在未触碰测试上评估。部署后还需线上监控,因为离线分布和干预反馈可能不同。
易错点
- 全数据预处理后再 CV 会泄漏。
- 同一 CV 选超参并报最优分数有乐观偏差。
- 时间/群组数据不能普通随机折。
- 折分数相关,不能盲算普通 t 区间。
- 非线性指标的折平均与 pooled 指标不同。
常见问答
Q1:K 选 5 还是 10?
5/10 是常用折衷。K 大训练集更接近全数据但计算更贵、折估计相关和方差结构复杂;应考虑样本量、群组与预算。
Q2:CV 后为何还要测试集?
CV 已参与模型/超参选择,最优分数偏乐观;独立测试评估冻结后的完整选择结果。
Q3:能否对时间序列 bootstrap?
不能逐点 iid 重采样;可用 moving/stationary block bootstrap 等保留局部依赖,或基于时间模型 parametric bootstrap。
练习
- 解释三分法各自用途。
- 为什么标准化必须在折内拟合?
- 嵌套 CV 外层与内层职责。
- Bootstrap 样本约含多少不同原观测?
- 同一用户多行应怎样切分?
答案与提示
- 参数拟合、选择、独立终评。
- 全数据均值方差包含验证折信息。
- 外层评估,内层选择。
- 约 63.2%。
- 按用户分组,整个用户只在一侧/一折。