M2-117M2: Classical Machine LearningMissing Values & Data LeakageHard
Mastery:

Missing Values & Data Leakage: 解释时间序列与面板数据中的泄漏防范要点。

📐 Mathematical Definition
featuret must use only info available at t−\text{feature}_t\ \text{must use only info available at}\ t^-
⚡ Executive Summary
Core Concept: 严格时间切分、滚动特征右开区间、按实体分组、避免全量统计量;泄漏最隐蔽也最致命。

📌 Key Takeaways

  • •
    滚动窗口必须右开(不含当前时刻)
  • •
    标准化/插补/编码都只能从历史估计

📐 Mathematical Derivations

五个防范要点:① <strong>严格时间切分</strong>——训练集的时间必须<strong>早于</strong>验证/测试集;禁止随机 K 折(会用到未来信息)。用<strong>前向链式 CV</strong>(walk-forward):每次训练用 [t₀, t₁],验证用 (t₁, t₂],逐步前移。② <strong>滚动特征必须右开</strong>——计算 t 时刻的特征只能用 t 之前的窗口:正确写法是 <code>df.shift(1).rolling(w).mean()</code> 或明确用右开区间;<strong>常见错误</strong>是 <code>df.rolling(w).mean()</code> 直接对齐当前行(含 t 时刻,若目标由 t 时刻信息决定则泄漏)。此外,<strong>滚动窗口应基于事件时间而非处理时间</strong>(避免数据到达延迟造成的'未来信息')。③ <strong>预处理必须只用历史</strong>——标准化、插补、目标编码、分箱边界、PCA 的均值/方差/系数都只能从<strong>训练期</strong>估计,再应用到验证期;这是最隐蔽的泄漏来源(很多人只注意特征构造,忘了预处理)。④ <strong>面板数据按实体分组</strong>——若数据含多个实体(用户/商品/门店),滚动特征必须<strong>按实体分组</strong>计算(<code>groupby(entity).rolling()</code>),且要处理实体生命周期(新实体无历史 → 用全局均值或缺失指示);<strong>最常见的泄漏</strong>是跨实体的窗口计算(把其他实体的未来信息带进来)。⑤ <strong>避免全量统计量</strong>——任何用'全量数据'计算的量(全局均值、全量分位数、全量去重)都会泄漏未来信息;应改为<strong>扩展窗口</strong>(expanding)计算。

🏭 Production Trade-offs

检测与诊断:① <strong>时间泄漏的检测方法</strong>——(a) <strong>随机标签测试</strong>:打乱标签后重训,若性能仍显著高于随机则存在泄漏;(b) <strong>特征-标签时间审计</strong>:逐个特征问'在 t 时刻这个值是否已存在';(c) <strong>异常高的性能</strong>:若离线指标远高于线上或远高于同类任务的经验值,首先怀疑泄漏;(d) <strong>特征重要度异常</strong>:某单一特征的重要度极高(如 AUC>0.95)通常意味着它直接/间接编码了标签。② <strong>时间序列特有的陷阱</strong>——(a) <strong>前瞻偏差(look-ahead bias)</strong>:使用了当时不可得的信息(如财报数据用发布日而非报告期);(b) <strong>幸存者偏差</strong>:只用'存活到今天的实体'(如已退市股票、未流失用户);(c) <strong>数据修订(revision)</strong>:使用修订后的数据(如 GDP 修正值)而当时只有初值;应使用<strong>实时数据快照(vintage data)</strong>。③ <strong>实践规范</strong>——(a) 用统一的数据快照版本(训练与推理一致);(b) 把特征计算逻辑封装成可复用的 pipeline(保证训练/服务一致);(c) 定期做<strong>离线回放</strong>(用历史日志重放,对比模型预测与实际)验证一致性;(d) 上线前用<strong>独立的时间段</strong>做最终验证(如用最近 1 个月,从不参与任何开发)。④ <strong>成本权衡</strong>——严格的防泄漏会降低离线指标(因为不能用全量信息),但这是<strong>正确</strong>的;离线指标'好看'但上线失败通常是泄漏的标志。
⚠️ Common Interview Pitfalls
  • ✕
    用随机 K 折处理时间序列(用到未来)
  • ✕
    跨实体计算滚动窗口(面板数据常见错误)
🎯 Interviewer Follow-ups
  • ?
    面板数据中最常见的泄漏是什么?
  • ?
    如何检测时间泄漏?
📚

Associated Knowledge Base Guides & Mindmaps

Explore the comprehensive technical article, exam cards, and global architecture tree.

← PreviousM2-116: Missing Values & Data Leakage: 解释 MICE(多重插补链式方程)的迭代过程与实现要点。📋Back to BankNext →M2-118: Evaluation Metrics & Hyperparameter Tuning: 解释多指标权衡与综合指标(OEC)的设计。