You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

机器学习数据集重要列缺失20%无法合理填充该如何处理?

核心特征列20%缺失、填充效果差的处理方案

第一步:先判断缺失机制,不要上来就填

  • 先排查缺失原因:
    • 如果是非随机缺失:即值缺失和该列本身的取值、和预测目标直接相关(比如用户消费能力列,缺失的都是高净值用户刻意不填),完全不需要强行填充。直接新增一个is_[列名]_missing的二值特征标记该行是否缺失,原列的缺失位置填专属标识即可:分类特征新增一个Missing的独立类别,数值特征填一个超出正常取值范围的哨兵值(比如正常取值都是0-100就填-999),让模型直接学习“缺失”这个状态和目标的关联,比瞎填合理值靠谱得多。
    • 如果是完全随机缺失(比如数据导出故障随机丢了20%记录)、随机缺失(缺失和其他已观测特征相关,和该列本身值无关),再考虑针对性填充。

第二步:替换粗粒度填充方法,用适配小数据集的填充逻辑

填充效果差大概率是用了全局均值、中位数、众数这类无差别的填充方法,这类方法会直接抹平核心特征的分布差异,引入大量噪声,小数据集下尤其明显:

  • 优先用多重链式方程填充(MICE)处理数值列:通过列和其他特征的关联关系迭代拟合缺失值,比全局统计量填充的分布贴合度高很多,注意小数据集下不要把全量特征丢进填充模型,选和该列相关性最高的3-5个特征做输入即可,避免过拟合导致填充值失真。
  • 分类特征直接把缺失作为独立类别即可,20%的占比足够支撑模型学习该类别的规律,不需要硬归到已有的某一类里。

第三步:填充始终不合理就放弃填充,调整建模逻辑适配

  • 直接选择原生支持缺失值的模型训练:比如XGBoost、LightGBM、CatBoost这类树模型都支持缺失值自动分裂,训练时会自动把缺失值分到损失下降最多的分支,不需要人工提前填充,小数据集下做好正则防过拟合即可,效果普遍好于人工填充后训练。
  • 校验缺失行的分布:如果缺失的20%行在目标值、其他核心特征的分布上和非缺失行没有显著差异,也可以直接删除这部分缺失行。不要觉得删数据浪费,核心特征填错值带来的噪声偏差,远大于删20%样本带来的样本量损失。

校验标准:不管用什么填充方法,填充后一定要对比该列填充段和非缺失段的取值分布、和其他特征的关联规律、和目标的相关性,如果偏差过大直接弃用该填充方案,不要硬凑结果。

内容的提问来源于stack exchange,提问作者Victor Onifade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 11:36:18