数据泄漏与评测污染
数据泄漏指训练、预处理或模型选择使用了评测时本不应获得的信息,导致离线分数高估实际泛化能力。这里讨论的是机器学习评测问题;用户隐私泄露是另一个问题。
常见形式
- 训练集与测试集包含同一记录、近似改写或同一实体的高度相关样本。
- 在划分前用全量数据拟合标准化、缺失值填充或特征选择。
- 预测未来事件时,输入包含事件发生后才产生的信息。
- 将基准题目、参考答案或其改写用于训练,造成评测污染。
示例:工单随机划分
一个工单产生原始问答与两条改写。若随机按行划分,它们可能同时进入训练与测试,分数便不能充分说明对新工单的效果。我们建议以工单 ID 分组;预测未来工单时再考虑时间切分。
如何排查
建议固定测试集版本,检查精确与近似重复,追踪合成数据的来源,并审查每个特征在真实预测时是否可获得。预处理器只在训练数据上拟合,再对验证与测试数据执行转换。
如何解释结果
没有发现字符串重复不等于没有泄漏。黑箱模型通常难以确认完整训练语料;报告应说明检查方法、覆盖范围与剩余不确定性,不应仅凭高分断言存在污染。
参考资料
- scikit-learn:Data leakage — 定义与预处理泄漏。
- scikit-learn:交叉验证 — GroupKFold 与时间序列划分。
- Deduplicating Training Data Makes Language Models Better — 训练评测集重叠。