机器学习进阶文档深度页
未来信息泄漏
输入包含预测时尚未发生的信息,会制造无法上线复现的虚高离线效果。
学习前需要掌握
训练集、验证集与测试集时间数据内容待补充
背景与问题
预测贷款违约时使用发放后的催收次数、预测流失时使用未来 7 天行为,都会把结果线索直接放入输入。
概念定义
未来信息泄漏是特征在训练样本中可见,但在真实预测时点不可获得,或其计算窗口越过预测时点。
直观理解
这不是模型聪明,而是题目把未来答案印在了当前特征上。
核心原理
每个特征必须标记事件时间、可用时间和计算窗口。划分方式也要模拟线上:过去训练、未来验证;同一实体的历史聚合不能跨越预测时点。
计算与实现步骤
- 1
定义明确预测时点。
- 2
列出每个特征的产生与可用时间。
- 3
检查窗口是否跨越预测时点。
- 4
按时间或群组划分。
- 5
移除泄漏特征后重新建立基线。
- 6
记录线上可用性契约。
代码实现
示例 1
按时间构造过去窗口
按时间构造过去窗口
Python
example_01.py用途:表达特征截止时间必须早于预测时点。
cutoff = prediction_time
history = events[events["event_time"] < cutoff]
features = history.groupby("user_id").agg(
past_30d_count=("event_id", "count"),
)代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
表达特征截止时间必须早于预测时点。
Step 1 · 1–5 行
先按预测时点截断,再聚合。
cutoff = prediction_time
history = events[events["event_time"] < cutoff]
features = history.groupby("user_id").agg(
past_30d_count=("event_id", "count"),
)预期输出或运行结果
每个用户只由预测时点之前的事件生成特征。
常见错误 · 3 条
- 随机划分掩盖时间泄漏
- 使用目标发生后的字段
- 全历史聚合越过截止点
实际应用
- 信用风险
- 用户流失
- 时间序列预测
常见错误
随机划分掩盖时间泄漏
使用目标发生后的字段
全历史聚合越过截止点
文档来源
02|数据预处理与特征工程原始文档
学习资料/learning_tech/02_preprocessing_feature_engineering.md- §10 最危险的特征:未来信息
- §14 预处理检查清单
推荐学习资料
暂未收录相关资料
参考库不会生成虚假资源或无效外部链接。