如何在机器学习模型表现“好得离谱”之前发现数据泄露
我评审过的一个需求模型在离线验证中表现惊人。AUC 的提升幅度大到业务团队想直接将其推送到下一次规划运行中。这恰恰引起了我的怀疑。在真实的仓库需求数据中,巨大的提升通常源于更好的特征,而不是魔法。 我首先检查了每个特征的时间戳与预测时间戳的对应关系。有两个字段来自一张在订单关闭后才更新的表,但笔记本在处理时却将其连接在一起,就好像这些值在预测时已知一样。训练集/测试集的划分也使用了随机行,导致相同的客户和 SKU 模式同时出现在两端。我使用 as_of_time 值重建了数据集,采用了基于时间的划分,并强制特征流水线仅读取 updated_at 早于 as_of_time 的行。分数虽然下降了,但实时回测的结果终于与运营部门在现场看到的情况相符了。 实际的教训是,数据泄露通常看起来像是个好消息。现在,在信任任何模型之前,我都会要求进行三项检查:时间点连接(point-in-time jo…