保留集防止自我欺骗
反复用同一批样本调提示,等同于在测试集上过拟合:分数很好看,换一批真实流量就回落。做法是把数据切成三段——开发集随时回放指导迭代、回归集合并前跑一遍防旧问题复发、保留集中途不看不动,只在里程碑或上线前各跑一次。三段要按场景分层抽样,避免保留集恰好偏简单。
基本信息
| 开发集 | 约 60%,随时回放,指导每次迭代 |
|---|---|
| 回归集 | 约 25%,合并前跑,防止旧问题回归 |
| 保留集 | 约 15%,里程碑或上线前各跑一次 |
| 划分方式 | 按场景与难度分层,保证三段分布接近 |
| 纪律 | 保留集上的失败样本不直接用于改提示 |
典型使用场景
- 提示长期迭代:用保留集检查是否只在开发集上变好
- 上线决策:保留集结果作为上线的最终依据
- 模型切换:两版模型在保留集上比较,减少调参偏差
- 评测集老化:用新流量补充开发集与回归集,保留集定期轮换
- 验收报告:在报告里注明三段划分与样本量,便于外部复核
数据集三段划分
数据集三段划分
开发集 dev(60%):随时回放,指导迭代
回归集 reg(25%):合并前跑,防止旧问题回归
保留集 holdout(15%):中途不看不调,里程碑或上线前各跑一次
# 划分时按场景分层,保证三段分布接近
# 保留集用一次就「消耗」一部分,定期换新并让旧集降级
# 保留集失败样本的定位要回到开发集复现,不能直接照着保留集样本改提示
# 记录保留集的版本与使用次数,避免被反复使用而失去监督意义三段职责与纪律
| 数据集 | 用途 | 纪律 |
|---|---|---|
| 开发集 | 日常迭代与调试 | 可随时回放,允许反复使用 |
| 回归集 | 合并前的防回归门禁 | 每次改动全量跑,红项先定位 |
| 保留集 | 上线前的最终校验 | 平时不看不用,使用次数需记录 |
| 新流量 | 补充与轮换 | 采样后按场景分层补入开发集 |
把保留集当作第二个开发集反复使用,它就失去监督意义;使用要克制,用过的样本应考虑降级。
随机划分在样本少时会偏斜;按标签分层抽样更稳,能保证每段都覆盖关键场景。