一句话定义:缺失值插补(Imputation)就是用合理的估计值把数据表里空着的格子填上,让后续的统计和模型能照常运行。
数据表像一份体检报告,总有人漏测几项。最常见的做法是删除含空白单元格的整行(listwise deletion)。这种做法一行代码就能完成,但代价常被低估:缺失往往不是随机的。
举个例子。一份员工满意度问卷里,“每周加班时长”这一栏的填写率特别低,因为加班最严重的那批人根本没空填。你若直接删行,剩下的样本平均加班时长就会被拉低。模型于是学到一个“删过的世界”:它以为这家公司不太加班。等真来了一个每天干到十点的人,模型给出的判断自然失准。问题并不在模型能力,而在删行悄悄改掉了数据的分布(distribution)。
插补大致分三档:
| 做法 | 思路 | 代价 |
|---|---|---|
| 删除整行 | 不填,直接丢弃 | 样本变少、分布偏移,缺失非随机时结论失真 |
| 简单填充 | 用均值、中位数、众数填,或把“未知”单列一类 | 人为压缩方差,数据显得比真实情况更“集中”,相关性被稀释 |
| 模型插补 | 用其他列预测缺失值(回归、K 近邻 KNN、迭代式多变量填充) | 更贴近真实关系,但计算更重,也可能把预测偏差带进数据 |
还有更讲究的一档叫多重插补(Multiple Imputation):填出好几套完整数据,分别建模,再看结论是否一致,用来体现“填进去的值本身也不确定”。
动手前有个小动作值得记住:加一列“是否缺失”的标记(missing indicator)。很多时候,“没填”这件事本身就是信号——比如某字段空着,恰恰说明这个客户没走完流程。这一列的收益,常常超过换用更花哨的填充算法。
与相邻概念的区别:插补属于数据清洗(data cleaning)里的一环,和异常值处理、去重并列;它不是特征工程(feature engineering)——插补是把缺的东西补回去,特征工程是把有的东西变出新的表达。至于“删行”,它其实也是一种插补策略,只不过填进去的是“什么也没有”。
对从业者的实际意义:先判断缺失是随机的,还是和结果相关;在报告里写清删了多少行、按什么条件删的;把插补步骤放进流水线(pipeline),别出现训练时插补、上线时忘了插补的错位。对普通职场人:看到“样本量 N=3000”时,不妨多问一句“原来有多少条”;Excel 里那个“删除空值”按钮,和这里是同一个决策。
一句话收尾:填什么值可以商量,但悄悄删掉的那几行,得让人知道。
