4、缺失值处理策略
缺失值是信用评分卡建模中最常见的数据质量问题之一。缺失值的处理方式直接影响模型稳定性和区分能力。本章系统梳理五种主流策略:行删除、列删除、均值/中位数/众数填充、模型预测填充和KNN填充,并给出每种方法的适用场景与风险点。
4.1 缺失值处理决策流程
选择缺失值处理方法前,必须先判断缺失机制与缺失比例。下图概括了从缺失诊断到策略选择的完整路径:
4.2 删除缺失值
4.2.1 行删除(Listwise Deletion)
直接删除包含缺失值的样本记录。适用于缺失率低(通常 < 5%)且缺失完全随机(MCAR)的场景。
| 维度 | 说明 |
|---|---|
| 优点 | 操作简单,不引入人为偏差,保留原始分布 |
| 缺点 | 样本量大幅减少,可能丢失重要信息,导致模型偏差 |
| 适用条件 | 缺失率 < 5%,样本量充足,缺失机制为 MCAR |
| 信用评分卡风险 | 删除过多坏样本会导致违约率估计失真 |
4.2.2 列删除(Column Deletion)
直接删除缺失率过高的特征列。当某特征缺失率超过 70% 时,该特征几乎失去建模价值。
经验阈值:缺失率 > 70% → 建议直接删除;缺失率 50%–70% → 需结合业务判断是否保留;缺失率 < 50% → 优先考虑填充策略。
4.3 均值/中位数/众数填充
用集中趋势统计量替换缺失值,是最简单、最常用的填充方法。不同数据类型应选择不同的统计量:
| 数据类型 | 推荐统计量 | 原因 |
|---|---|---|
| 连续型(正态分布) | 均值 | 无偏估计,保留整体均值 |
| 连续型(偏态分布) | 中位数 | 不受极端值影响,更稳健 |
| 离散型(有序) | 中位数 | 保留顺序信息 |
| 离散型(名义) | 众数 | 保留最频繁类别 |
⚠ 重要风险:均值/中位数填充会降低特征方差,压缩变量分布,导致模型对极端值的区分能力下降。在信用评分卡中,收入、负债率等关键变量使用均值填充后,WOE 和 IV 值可能被严重低估。
4.4 模型预测填充
将缺失特征作为目标变量,利用其他完整特征构建预测模型来估计缺失值。常用模型包括线性回归、决策树、随机森林和 XGBoost。
实施步骤:
- 将数据集分为完整样本(无缺失)和缺失样本。
- 以缺失特征为
y,其他完整特征为X,在完整样本上训练预测模型。 - 用训练好的模型预测缺失样本的
y值。 - 将预测值填入缺失位置。
# Python 示例:随机森林预测填充
from sklearn.ensemble import RandomForestRegressor
# 假设 df 中 'income' 列有缺失
train = df[df['income'].notna()]
test = df[df['income'].isna()]
X_train = train.drop(columns=['income', 'target'])
y_train = train['income']
X_test = test.drop(columns=['income', 'target'])
model = RandomForestRegressor(n_estimators=100, random_state=42)
model.fit(X_train, y_train)
predicted = model.predict(X_test)
df.loc[df['income'].isna(), 'income'] = predicted
💡 信用评分卡建议:模型预测填充能较好保留变量间的相关结构,但需注意避免过拟合。建议使用交叉验证评估填充质量,并监控填充后变量的 IV 变化。
4.5 KNN 填充
KNN 填充基于样本相似度:找到与缺失样本最接近的 K 个完整样本,用它们的加权平均值(连续变量)或投票结果(分类变量)填充缺失值。
| 参数 | 说明 | 推荐值 |
|---|---|---|
| K | 邻居数量 | 5–10(小数据集取小值) |
| 距离度量 | 欧氏距离、曼哈顿距离、马氏距离 | 欧氏距离(连续特征) |
| 权重方式 | 均匀权重、距离倒数权重 | 距离倒数权重(更合理) |
| 适用场景 | 特征间存在较强相关性,缺失率 < 30% | — |
# Python 示例:KNN 填充
from sklearn.impute import KNNImputer
imputer = KNNImputer(n_neighbors=5, weights='distance')
df_imputed = pd.DataFrame(
imputer.fit_transform(df),
columns=df.columns
)
KNN 填充 vs 模型预测填充:KNN 填充是非参数方法,不假设数据分布,适合非线性关系;模型预测填充可捕捉更复杂的特征交互,但计算成本更高。在信用评分卡中,KNN 填充常用于收入、负债率等连续变量,模型预测填充更适合缺失机制复杂的场景。
4.6 五种策略对比总结
| 策略 | 缺失率范围 | 缺失机制 | 计算成本 | 信息保留度 | 信用评分卡推荐 |
|---|---|---|---|---|---|
| 行删除 | < 5% | MCAR | 极低 | 低 | 仅用于缺失极少的样本 |
| 列删除 | > 70% | 任意 | 极低 | 极低 | 高缺失率特征首选 |
| 均值/中位数/众数 | 5%–30% | MCAR/MAR | 低 | 中 | 快速基线填充 |
| 模型预测 | 5%–50% | MAR/MNAR | 高 | 高 | 关键变量推荐 |
| KNN 填充 | 5%–30% | MCAR/MAR | 中 | 高 | 连续变量推荐 |
📌 信用评分卡最佳实践:建议将缺失值单独编码为一个类别(如 -999 或 "Missing"),在分箱阶段让模型自动学习缺失样本的风险模式。填充后的变量应重新计算 IV 和 WOE,确保填充未破坏变量与目标的关系。