数据泄漏指训练或评估过程中使用了预测时不可获得的信息,导致离线指标虚高、上线效果暴跌。它隐蔽性强,往往在模型上线后才暴露,是建模中最危险的错误之一。
时间泄漏最常见。用未来数据计算的特征、随机划分时间序列数据、用全量统计量做归一化,都会把未来信息带入训练。正确做法是严格按时间切分,特征只用预测时刻之前的数据。
目标泄漏是特征中隐含了标签信息。比如用包含结果的字段做特征,或用与标签强相关的代理变量。这类泄漏会让模型在离线表现惊人,实际却毫无预测能力。
分组泄漏发生在同一实体同时出现在训练集和验证集。同一用户的行为被分到两边,模型记住了用户而非学到规律。应按用户或会话分组划分,保证训练验证实体不重叠。
排查泄漏要审视整条数据流水线:特征何时计算、样本如何划分、统计量基于哪个时间窗口。养成“这个信息在预测时真的可得吗”的自觉,比事后补救更有效。