数据泄漏指训练时用到了预测时拿不到的信息,导致离线评估虚高,上线就露馅。它隐蔽而常见,是很多模型“实验室很强、线上很弱”的根本原因之一。
典型例子包括:用未来数据训练、把目标变量或其衍生特征放进特征、在划分数据集前做了全局标准化、用户级数据随机切分导致同一用户同时出现在训练和测试集。
时间序列场景尤其危险。用包含未来信息的滑动窗口统计做特征,模型在离线阶段仿佛能预知未来,实际预测时根本没有这些数据可用。必须严格按时间点构造特征。
排查泄漏要看特征在预测时刻是否真的可得,检查数据切分顺序,做特征重要性分析。某个特征异常强时,先怀疑泄漏,而不是急着庆祝模型效果好。