M2-079M2: Classical Machine LearningMissing Values & Data LeakageHard
Mastery:
Missing Values & Data Leakage: 如何系统性排查数据泄漏?给出可操作的清单。
📐 Mathematical Definition
⚡ Executive Summary
Core Concept: 按时间切分、把预处理放进 pipeline、检查特征可得时间、做特征-标签相关性审计、用随机标签测试。
📌 Key Takeaways
- •把标准化/编码/选择全部放进 Pipeline
- •检查每个特征在预测时刻是否可得
- •随机打乱标签,性能应降到随机水平
📐 Mathematical Derivations
系统性的五道检查(按优先级):① <strong>随机标签测试(最有效的单步)</strong>——把标签随机打乱后重新训练,性能应降到随机水平(AUC≈0.5、accuracy≈多数类比例)。若仍显著高于随机,说明存在泄漏(模型从特征中找到了标签的痕迹)。这一测试能一次性捕获大多数泄漏。② <strong>时间可得性审计</strong>——逐个特征问'在预测时刻 t,这个值是否已经存在?'常见泄漏:用未来统计做的滚动特征、用全量数据算的标准化/目标编码、包含未来信息的聚合特征、从标签派生的特征(如'退款金额'预测'是否退款')。③ <strong>Pipeline 封装</strong>——把所有预处理(标准化、插补、编码、特征选择、降维、SMOTE)放进 <code>sklearn.Pipeline</code>,确保它们只在训练折上 fit;手动在 CV 外做这些步骤是泄漏的最大来源。④ <strong>时间序列切分</strong>——时间数据必须用前向链式 CV(训练集严格早于验证集),随机 K 折会用到未来。⑤ <strong>特征-标签相关性审计</strong>——检查是否有单一特征与标签的相关性'异常高'(如 AUC>0.95),这通常意味着该特征直接或间接编码了标签。
🏭 Production Trade-offs
常见泄漏清单与修复:① <strong>ID 类特征</strong>——用户 ID、订单 ID 若与标签有时间顺序相关(如新 ID 更可能是新用户),会让模型学到'ID 越大越可能正类'的伪关系;应移除或用 ID 的派生特征(如注册天数)。② <strong>目标编码泄漏</strong>——用全量数据算类别均值;修复:交叉拟合(K 折内算)+ 平滑。③ <strong>标准化/分箱泄漏</strong>——用全量数据算均值/方差/分箱边界;修复:放进 Pipeline。④ <strong>特征选择泄漏</strong>——用全量数据选特征后再 CV;修复:选择放进训练折。⑤ <strong>重复样本跨折</strong>——同一实体的多条记录被分到训练与验证折(如同一用户的多笔交易);修复:用 GroupKFold。⑥ <strong>时间泄漏</strong>——用未来信息构造特征;修复:严格右开区间 + 时间 CV。⑦ <strong>数据版本不一致</strong>——训练用了修正后的数据、验证用了原始数据(或反之);修复:统一数据版本快照。⑧ <strong>验证方法</strong>——最终用<strong>独立测试集</strong>(从未参与任何开发)确认性能;若离线指标远高于线上,泄漏是最可能的原因。
⚠️ Common Interview Pitfalls
- ✕不做随机标签测试就相信离线指标
- ✕在 CV 之外做预处理(标准化/编码/选择)
🎯 Interviewer Follow-ups
- ?随机标签测试为什么有效?
- ?时间泄漏最常见的表现形式?
📚
Associated Knowledge Base Guides & Mindmaps
Explore the comprehensive technical article, exam cards, and global architecture tree.