核心要点
判断缺失机制:MCAR(完全随机)、MAR(条件随机)、MNAR(非随机)
删除法:缺失比例极高或样本充足时整行/整列删除,但可能丢信息或引偏
统计填充:均值/中位数/众数,数值偏态用中位数,类别用众数
高级法:KNN/回归/随机森林等模型预测填充,并加缺失指示位保留信息
标准回答
先判断缺失机制
- MCAR(完全随机缺失):缺失与任何变量无关,删除或简单填充偏差最小。
- MAR(随机缺失):缺失与其他观测变量有关,可用其他特征建模填充。
- MNAR(非随机缺失):缺失与缺失值本身有关(如高收入者拒答收入),最棘手,简单填充会引入系统性偏差,常需加缺失指示位或专门建模。
常用方法
- 删除:缺失比例很高的列、或样本充足时删除含缺失的行。简单但可能丢信息、在非随机缺失下引偏。
- 统计量填充:均值(对称分布)、中位数(偏态/有异常值更稳)、众数(类别)。快但会低估方差、削弱相关性。
- 模型预测填充:用 KNN、回归、随机森林或多重插补(MICE)基于其他特征预测缺失值,更准但成本高。
- 缺失指示位:新增二元列标记是否缺失,让模型学习「缺失」本身的信息,对 MNAR 尤其有用。
选择原则
综合缺失机制、缺失比例与模型类型。XGBoost、LightGBM 等可原生处理缺失,无需手动填充。
常见误区
⚠️ 常见踩坑
别不分机制一律用均值填充——会低估方差、扭曲特征相关性,在 MNAR 下还会引入系统偏差;填充统计量必须只用训练集计算,避免泄漏。
追问
追问 1:均值填充有什么副作用?
均值填充会人为压缩该特征的方差、削弱它与其他变量的相关性,使分布出现一个尖峰,从而低估不确定性、可能误导后续统计推断与模型。中位数对偏态/异常值更稳,但同样有压缩方差的问题。
追问 2:为什么有时要保留「缺失指示位」?
当数据是 MNAR、即「是否缺失」本身携带信息(如未填写收入往往暗示某种特征)时,单纯填充会抹掉这一信号。额外加一个二元指示列让模型显式学习缺失模式,往往能提升预测效果。
延伸学习
与本题相关的知识库文章、术语、工具与行业资讯。