数据清洗:缺失值分析、填充策略

做信用评分模型,数据清洗占了我大概60%的时间。这话一点不夸张。而缺失值处理,又是数据清洗里最让人头疼,也最容易被低估的一环。

很多人上来就用均值一通填,模型跑完才发现KS值怎么都上不去。嗯,问题多半出在缺失值处理上。

我个人习惯把缺失值处理拆成两步:先做分析,再做填充。分析不到位,填充就是瞎填。

缺失值分析——不只是数个数

我习惯从三个维度来审视缺失值。只看比例,远远不够。

维度一:缺失比例

这个最简单,每个变量缺失了多少。低于5%的基本不用太操心。超过20%的就得认真琢磨——直接删掉变量、单独编码、还是用模型预测,都需要掂量。

维度二:缺失模式

这个容易被忽略。缺失模式有三种:

  • MCAR(完全随机缺失)——缺失跟任何变量都没关系。少见。
  • MAR(随机缺失)——缺失跟其他变量有关,跟自己无关。最常见。
  • MNAR(非随机缺失)——缺失跟自己有关。比如高收入人群更不愿意填收入字段。

真实项目中,MCAR很少见。大部分是MAR或MNAR。判断清楚缺失模式,才能选对填充策略。

维度三:缺失与目标变量的关系

这一点很多人忽略。缺失本身可能就是一种信号。我在一个信贷项目中遇到过,某个字段缺失的客户违约率是正常值的两倍。后来我们把"是否缺失"作为一个单独特征加入模型,KS提升了将近2个百分点。

核心观点:缺失值不是噪音,它可能携带信息。先分析,再填充。

四种填充策略实战对比

下面这个表格,是我自己项目里常用的对比框架。四种策略没有绝对的好坏,关键看场景。

策略 适用场景 优点 缺点
均值填充 连续变量,分布对称 简单,计算快 对异常值敏感,降低方差
中位数填充 连续变量,偏态分布 稳健,不受异常值影响 可能忽略分布细节
众数填充 分类型变量 保持类别分布 可能引入偏误
模型预测填充 缺失模式复杂,变量间关系强 更准确,保持数据结构 计算成本高,可能过拟合

均值填充是很多人的默认选择,但我不建议无脑用。你想想看,如果收入这个变量存在极端高值,均值会被拉高,填充后反而扭曲了分布。中位数在偏态分布下更靠谱。

模型预测填充是我个人比较喜欢的方式,尤其是当变量之间存在较强相关性时。用随机森林或KNN来预测缺失值,往往能保留更真实的数据结构。但要注意——不能引入未来信息,只能用训练集来拟合模型。

提示:模型预测填充时,记得在验证集上用同样的模型参数做填充,不要重新训练。否则会数据泄露。

警告:我曾经在一个项目中,对所有缺失值都用均值填充,结果模型在验证集上KS掉了一半。后来发现是因为收入变量存在"收入越高越不愿意填写"的模式(MNAR),均值填充完全扭曲了分布。

缺失值处理决策流程 原始数据 缺失值检测 缺失比例计算 低缺失 <5% 中缺失 5%–20% 高缺失 >20% 均值/中位数填充 分析缺失模式 模型预测/单独编码 MCAR → 均值填充 MAR/MNAR → 模型填充 ← 上一章 📖 返回目录 下一章 →