特征穿越是数据泄漏最常见的形态,指特征的计算使用了预测时刻之后才能获得的信息。它让离线评估看起来很美,上线后却原形毕露,是算法工程师必须警惕的陷阱。
一个典型例子是用户历史点击率特征:若统计窗口跨越了预测时刻,把未来的点击也算进去,模型就提前知道了答案。正确做法是以预测时刻为终点,只统计之前一段时间的行为。
物品侧特征同样危险。比如用物品上线至今的总点击量作为特征,预测时若物品刚上线不久,该特征与未来表现高度相关,本质上是把结果泄漏进了特征。应改用固定时间窗口的滞后统计。
标签构造也可能穿越。若用未来一段时间的累计行为定义正样本,而特征窗口与之重叠,就会泄漏。必须严格划分特征观察期、预测时刻和标签观察期,三者时间上不能交叉。
防范穿越要靠流程而非个人小心:建立特征时间语义规范、在训练流水线中强制时间对齐、用时间切分验证集做回归测试。发现离线指标异常高时,第一反应应是排查穿越。