文章

05 训练集、开发集、测试集划分(Train、Dev、Test Distributions)

05 训练集、开发集、测试集划分(Train、Dev、Test Distributions)

05 训练集、开发集、测试集划分(Train、Dev、Test Distributions)

🎯 一、核心思想:开发集与测试集必须来自同一分布

在构建机器学习系统时,开发集(Dev Set)和测试集(Test Set)的设立方式直接影响团队迭代效率
关键原则:

开发集和测试集应来自相同的分布,并且该分布应代表你未来希望模型表现良好的真实应用场景。

❌ 错误做法示例

  • 将不同区域(如美国、英国 vs. 印度、中国)的数据分别划入开发集和测试集。
  • 开发集用中等收入邮政编码数据,测试集用低收入邮政编码数据。

这类做法导致:

  • 模型在开发集上表现优异,但在测试集上性能骤降。
  • 团队“瞄准错误的靶心”,浪费数月时间优化一个不具泛化性的目标。

✅ 正确做法

  1. 将所有可用数据混合(shuffle)
  2. 从混合后的整体数据中随机划分开发集和测试集
  3. 确保两者同分布(i.i.d. assumption) ,即:

    \[\mathcal{D}_{\text{dev}} \sim \mathcal{D}_{\text{test}} \sim p_{\text{real}}(x, y)\]

    其中 $p_{\text{real}}(x, y)$ 是你关心的真实世界数据分布。


🎯 二、开发集 + 单一评估指标 = 明确的优化目标

  • 开发集的作用:用于快速评估和比较不同模型/超参/架构。
  • 单一评估指标(Single-number metric) :如准确率(Accuracy)、F1 分数、AUC 等,使团队能高效决策。

设立开发集和评估指标,相当于为团队“设定靶心”。
一旦靶心固定,团队就能通过快速实验不断逼近目标。

若开发集与测试集分布不同,则相当于:

  • 训练几个月后突然更换靶心 → 团队努力白费。

🧠 三、真实案例警示

  • 案例:某贷款审批模型团队使用中等收入地区数据作为开发集,优化数月。
  • 问题:上线时需在低收入地区部署,但两分布差异大(covariate shift):

    \[p_{\text{dev}}(x) \neq p_{\text{test}}(x)\]
  • 后果:模型性能严重下降,浪费 3 个月工作量。

教训:不要让开发集成为“实验室玩具”,而要让它代表真实挑战。


🔁 四、工作流程建议

标准机器学习迭代流程应为:

  1. 收集反映真实场景的数据 $\mathcal{D} = {(x^{(i)}, y^{(i)})}_{i=1}^N$;
  2. 随机打乱并划分

    \[\mathcal{D} \xrightarrow{\text{shuffle}} \mathcal{D}_{\text{train}} \cup \mathcal{D}_{\text{dev}} \cup \mathcal{D}_{\text{test}}\]

    且满足:

    \[\mathcal{D}_{\text{dev}}, \mathcal{D}_{\text{test}} \overset{\text{i.i.d.}}{\sim} p_{\text{target}}(x, y)\]
  3. 在训练集上训练多种模型;
  4. 开发集 + 单一指标选择最佳模型;
  5. 仅一次使用测试集做最终无偏评估。

⚠️ 测试集只能用于最终评估,不可用于任何模型选择或调参,否则会“污染”测试集。


📌 五、关键总结(要点清单)

原则说明
✅ 同分布Dev 和 Test 必须来自同一分布
✅ 代表真实场景Dev/Test 应反映你最关心的应用环境
✅ 随机划分所有数据先 shuffle,再划分
✅ 单一评估指标便于快速比较模型
❌ 避免人为分割如按地域、时间、用户类型硬性划分 Dev/Test
❌ 避免分布偏移$p_{\text{dev}}(x,y) \neq p_{\text{test}}(x,y)$ 会导致评估失真

🔮 补充说明(预告)

  • 训练集的设立:影响你“逼近目标的速度”,将在后续视频讲解(如是否可使用不同分布的大量数据进行预训练等)。
  • Dev/Test 集大小选择:在深度学习时代,随着数据量增大,传统 70/15/15 划分不再适用,需根据任务调整(下节内容)。

📘 学习建议

  • 在实际项目中,先明确“成功”的定义:你的模型要在哪些数据上表现好?
  • 尽早建立 representative dev/test set,哪怕数据量小,也要保证分布一致。
  • 若真实分布未知,可通过领域专家访谈、A/B 测试日志、用户反馈等方式近似。
本文由作者按照 CC BY 4.0 进行授权