核心要点

  • 判断缺失机制:MCAR(完全随机)、MAR(条件随机)、MNAR(非随机)

  • 删除法:缺失比例极高或样本充足时整行/整列删除,但可能丢信息或引偏

  • 统计填充:均值/中位数/众数,数值偏态用中位数,类别用众数

  • 高级法:KNN/回归/随机森林等模型预测填充,并加缺失指示位保留信息

标准回答

先判断缺失机制

  • MCAR(完全随机缺失):缺失与任何变量无关,删除或简单填充偏差最小。
  • MAR(随机缺失):缺失与其他观测变量有关,可用其他特征建模填充。
  • MNAR(非随机缺失):缺失与缺失值本身有关(如高收入者拒答收入),最棘手,简单填充会引入系统性偏差,常需加缺失指示位或专门建模。

常用方法

  1. 删除:缺失比例很高的列、或样本充足时删除含缺失的行。简单但可能丢信息、在非随机缺失下引偏。
  2. 统计量填充:均值(对称分布)、中位数(偏态/有异常值更稳)、众数(类别)。快但会低估方差、削弱相关性。
  3. 模型预测填充:用 KNN、回归、随机森林或多重插补(MICE)基于其他特征预测缺失值,更准但成本高。
  4. 缺失指示位:新增二元列标记是否缺失,让模型学习「缺失」本身的信息,对 MNAR 尤其有用。

选择原则

综合缺失机制、缺失比例与模型类型。XGBoost、LightGBM 等可原生处理缺失,无需手动填充。

常见误区

⚠️ 常见踩坑

别不分机制一律用均值填充——会低估方差、扭曲特征相关性,在 MNAR 下还会引入系统偏差;填充统计量必须只用训练集计算,避免泄漏。

追问

追问 1均值填充有什么副作用?

均值填充会人为压缩该特征的方差、削弱它与其他变量的相关性,使分布出现一个尖峰,从而低估不确定性、可能误导后续统计推断与模型。中位数对偏态/异常值更稳,但同样有压缩方差的问题。

追问 2为什么有时要保留「缺失指示位」?

当数据是 MNAR、即「是否缺失」本身携带信息(如未填写收入往往暗示某种特征)时,单纯填充会抹掉这一信号。额外加一个二元指示列让模型显式学习缺失模式,往往能提升预测效果。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。