题干与适用场景
这是数据科学、数据分析和机器学习面试中的常见情境。数据集包含用户行为、地区、收入和是否流失的标签,收入字段缺失率为 18%。你需要先解释缺失为何发生,再决定处理方法;不能只按缺失比例套用规则。
面试官考察点
- 能否区分 MCAR、MAR、MNAR,而不是把所有空值视为同一种问题。
- 能否把缺失指示变量、插补模型和训练验证边界说清楚。
- 能否识别缺失本身携带的业务信号、选择偏差与数据泄漏。
回答前需要澄清的问题
- 收入是用户主动填写、系统采集失败,还是只对部分地区展示?机制不同会改变可识别性。
- 目标是预测还是估计因果效应?预测可保留缺失信号,因果分析需要更严格的假设与敏感性分析。
- 线上推理时是否同样拿不到收入?若训练时能看到补录值、线上却没有,插补策略会失配。
- 数据切分按用户、时间还是随机行?同一用户跨集合会让插补和评估产生泄漏。
30 秒回答框架
我先画出缺失指示变量与可观察字段、目标之间的关系,区分已知原因、可由观察变量解释的 MAR,以及无法由观察数据验证的 MNAR 假设。然后只在训练集拟合插补器,保留缺失指示,并用原始缺失模式做分层评估。若缺失机制无法确认,我会比较删除、简单插补、模型插补和敏感性方案,选择在业务代价和验证结果都可接受的方案。
分步骤深入解答
1. 把空值变成可分析的事件
为每个字段建立缺失指示 M,并统计它按时间、地区、设备、渠道和目标标签的分布。先查日志、表单流程和上游 schema;如果某版本发布后缺失突然升高,优先修复采集链路,不要用插补掩盖事故。
2. 解释三种机制的边界
MCAR 表示缺失与观测值和未观测值都无关;在这个假设下,完整案例分析在满足其他条件时不会因缺失机制产生系统偏差,但会损失样本量。MAR 表示给定已观察变量后,缺失与缺失值本身无关,例如收入缺失由地区和设备解释。MNAR 表示即使控制已观察变量,缺失仍与未观察的收入值或其原因相关,例如高收入用户更不愿填写收入。
这些机制不是只看一张图就能证明的标签。只能用日志和观察变量支持某个解释,MNAR 往往需要领域假设、外部数据或敏感性分析。
3. 选择处理策略
- 缺失由可修复的采集故障造成:回补原始来源或修复管道,保留修复版本。
- 预测任务且缺失本身有信号:用训练集统计量或模型插补,同时加入缺失指示,验证线上是否同样缺失。
- 缺失比例很小且机制可信为 MCAR:可以删除,但要报告样本量变化和分层影响。
- 需要估计不确定性或存在 MNAR 风险:比较多重插补、显式缺失模型、上下界和模式混合敏感性分析,不能把单次均值填充当作证据。
scikit-learn 的 SimpleImputer、KNNImputer 和 IterativeImputer 是不同假设下的工具,不会自动识别缺失机制。插补器必须在训练数据上拟合,再应用到验证、测试和线上数据。
4. 设计验证与泄漏防线
把插补、标准化和编码放进同一个训练 pipeline。每个交叉验证折内重新拟合,禁止先用全量数据计算均值、中位数或邻居。对时间数据按时间切分,对用户数据按用户切分。比较原始缺失率、插补后分布、缺失指示系数、校准和分层指标;还要在验证集人为增加缺失,模拟线上退化。
5. 用业务代价决定是否接受结果
如果误判高价值用户的代价远大于漏掉普通用户,不能只比较 AUC。报告不同缺失模式下的召回、校准、阈值后的成本、人工审核量和拒绝服务风险。上线前冻结插补器版本、字段 schema 和缺失策略,监控缺失率漂移;漂移超过阈值时优先停止自动决策或回退到安全规则。
高质量示范回答
“我不会从 18% 这个数字直接决定删除还是填充。先确认收入缺失是采集故障、用户选择,还是某些渠道的流程差异,并把缺失指示按时间、地区、设备和流失标签分层。若可观察字段解释了缺失,我会把它当作 MAR 假设,所有插补器只在每个训练折拟合,并保留缺失指示。若业务上合理怀疑高收入用户更少填写,我会把 MNAR 当作不可由当前数据证明的假设,做模式混合或上下界敏感性分析。最后用时间或用户隔离的验证集比较删除、简单插补和模型插补,报告校准、分层成本与线上缺失率;若线上拿不到收入,就不能依赖训练阶段的补录值。”
常见错误
- 看到缺失率 18% 就删除 → 样本损失和选择偏差未被评估 → 先分析机制、分层差异和业务代价。
- 先对全量数据求均值再切分 → 验证集信息进入训练 → 把插补放进每折训练 pipeline。
- 把缺失指示当成 MNAR 的证明 → 观察到相关性不等于知道未观察值的原因 → 写出假设并做敏感性分析。
- 只比较 AUC → 阈值成本、校准和缺失漂移被隐藏 → 报告分层指标、决策成本和线上监控。
追问及应对
如果收入字段在生产环境完全不可用怎么办?
训练和验证都要按生产可用字段重建;可以保留缺失指示作为恒定信号,也可以删除该特征。不能用离线补录收入制造虚假的线上收益,除非生产流程也能在同一时点获得它。
如何验证 MNAR 敏感性?
先明确缺失值相对观测值可能偏高或偏低的范围,再改变该偏移量或缺失模式模型,重复估计指标和业务成本。若结论在合理范围内反转,就把结果标记为依赖假设,并收集外部数据或设计补采样。
多重插补和模型插补有什么区别?
模型插补通常产生一个完成数据集,适合预测但可能低估不确定性。多重插补生成多个合理数据集,再合并估计结果,更适合报告参数不确定性;两者都必须在训练边界内拟合,并检查插补模型是否引入目标泄漏。
缺失率突然从 18% 升到 30% 时先做什么?
先暂停把新数据当成普通样本,检查 schema、客户端版本、埋点和上游任务,并按受影响切片确认范围。若是采集事故,修复或回补后再训练;若确属业务变化,重新评估缺失机制、阈值和回退规则。