4、缺失值处理策略

缺失值是信用评分卡建模中最常见的数据质量问题之一。缺失值的处理方式直接影响模型稳定性和区分能力。本章系统梳理五种主流策略:行删除、列删除、均值/中位数/众数填充、模型预测填充和KNN填充,并给出每种方法的适用场景与风险点。

4.1 缺失值处理决策流程

选择缺失值处理方法前,必须先判断缺失机制与缺失比例。下图概括了从缺失诊断到策略选择的完整路径:

缺失值处理决策流程 缺失值处理决策流程 缺失率诊断 缺失率 > 70%? 是 列删除 否 缺失率 < 5%? 是 行删除 否 缺失随机? 是 均值/中位数填充 否 模型预测/KNN填充

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。

实施步骤:

  1. 将数据集分为完整样本(无缺失)和缺失样本。
  2. 以缺失特征为 y,其他完整特征为 X,在完整样本上训练预测模型。
  3. 用训练好的模型预测缺失样本的 y 值。
  4. 将预测值填入缺失位置。
# 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,确保填充未破坏变量与目标的关系。