机器学习数学基础 120 章

训练集、验证集、交叉验证与自助法

层级:A|必学

1. 评估的是完整学习流程

模型性能不是参数在训练集上的函数,而是“数据抽样 → 预处理 → 特征选择 → 调参 → 拟合 → 阈值选择”的完整流程对未来数据的表现。任何用到标签或分布统计的步骤都必须留在训练侧。

2. 三分法

  • training:拟合模型参数和训练侧统计;
  • validation:选择架构、超参数、checkpoint、阈值;
  • test:一次性评估冻结流程。

测试集不是“永远不能看”,而是看后不能再用其结果做选择并仍声称独立终评。若修改,需新测试数据或承认其已变验证集。

3. 随机切分的适用条件

普通随机切分近似要求行 iid 且部署同分布。以下需特殊切分:

  • 用户多行:Group split;
  • 时间预测:按时间向前验证;
  • 地域/站点泛化:留站点/地域;
  • 重复实体/近重复:同组放一侧;
  • 推荐曝光:考虑策略与时间。

切分应模拟真正部署泛化单元。

4. k-fold 交叉验证

把数据分成 KK 折。每次用 K1K-1 折训练、1 折验证,得到分数 s1,ldots,sKs_1,ldots,s_K,平均:

sˉ=1Kksk.\bar s=\frac1K\sum_ks_k.

优点是每个样本都验证一次,适合中小数据。缺点是训练 KK 次,折结果相关,简单把折标准差/K\sqrt K 当标准误通常不严谨。

5. Stratified、Group 与 TimeSeries CV

  • stratified:每折保持类别比例,减少不平衡下波动;
  • group k-fold:同组不跨训练验证;
  • leave-one-group-out:检验对新组泛化;
  • rolling/expanding window:只用过去预测未来;
  • purge/embargo:金融/标签窗口重叠时防邻近泄漏。

分层不能替代 group/time 约束,可需组合方案。

6. 嵌套交叉验证

外层估计选择流程泛化,内层在外层训练数据中选超参数:

  1. 外层留一折测试;
  2. 在外层训练部分做内层 CV 选超参;
  3. 用所选超参重训外层训练部分;
  4. 评估外层测试折;
  5. 汇总外层分数。

若在同一 CV 上既选最优又报告最优分数,会有选择偏差。

7. 预处理 pipeline

每个训练折内部拟合:

  • 缺失填补;
  • 标准化;
  • 类别编码词表;
  • 目标编码;
  • 特征选择/PCA;
  • 过/欠采样;
  • 数据增强统计。

然后只 transform 验证折。使用 pipeline 对象可降低手工泄漏风险。

8. Bootstrap

nn 个观测有放回抽 nn 次。某个观测一次未被抽中的概率:

(11n)ne10.368.\left(1-\frac1n\right)^n\to e^{-1}\approx0.368.

所以每个 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. 最终重训

选择流程完成后,可用训练+验证数据按冻结超参数重训最终模型,再在未触碰测试上评估。部署后还需线上监控,因为离线分布和干预反馈可能不同。

易错点

  1. 全数据预处理后再 CV 会泄漏。
  2. 同一 CV 选超参并报最优分数有乐观偏差。
  3. 时间/群组数据不能普通随机折。
  4. 折分数相关,不能盲算普通 t 区间。
  5. 非线性指标的折平均与 pooled 指标不同。

常见问答

Q1:K 选 5 还是 10?

5/10 是常用折衷。K 大训练集更接近全数据但计算更贵、折估计相关和方差结构复杂;应考虑样本量、群组与预算。

Q2:CV 后为何还要测试集?

CV 已参与模型/超参选择,最优分数偏乐观;独立测试评估冻结后的完整选择结果。

Q3:能否对时间序列 bootstrap?

不能逐点 iid 重采样;可用 moving/stationary block bootstrap 等保留局部依赖,或基于时间模型 parametric bootstrap。

练习

  1. 解释三分法各自用途。
  2. 为什么标准化必须在折内拟合?
  3. 嵌套 CV 外层与内层职责。
  4. Bootstrap 样本约含多少不同原观测?
  5. 同一用户多行应怎样切分?

答案与提示

  1. 参数拟合、选择、独立终评。
  2. 全数据均值方差包含验证折信息。
  3. 外层评估,内层选择。
  4. 约 63.2%。
  5. 按用户分组,整个用户只在一侧/一折。