1. 风控数据质量概述:缺失值的定义、危害与模型影响
1.1 缺失值的定义与分类
在风控数据集中,缺失值是指数据记录中某个或某些字段的值为空、不存在或不可用。缺失值并非简单的“0”或“空字符串”,而是代表信息缺失的状态。根据缺失机制,统计学家 Rubin 将其分为三类:
| 缺失类型 | 英文缩写 | 定义 | 风控场景举例 |
|---|---|---|---|
| 完全随机缺失 | MCAR | 缺失与否完全独立于任何观测或未观测数据 | 系统随机抽检导致部分客户学历字段未采集 |
| 随机缺失 | MAR | 缺失与否依赖于其他已观测变量,但不依赖于缺失变量本身 | 高收入客户更倾向于不填写“其他收入”字段 |
| 非随机缺失 | MNAR | 缺失与否依赖于缺失变量本身的值 | 逾期客户故意不填写“单位电话”,导致该字段缺失与违约状态相关 |
风控提示:在信贷风控中,MNAR 类型最为危险。例如,借款人隐瞒“当前负债”字段,往往意味着其偿债能力已出现问题。若直接删除或简单填充,会引入严重的样本选择偏差。
1.2 缺失值在风控场景中的危害
缺失值在风控全链路中会引发连锁反应,具体危害体现在以下四个层面:
- 特征工程失效:多数统计量(均值、方差)和分箱算法无法处理空值,导致特征无法参与建模。
- 模型训练偏差:缺失机制若与目标变量(如逾期标签)相关,模型会学到错误的关联模式,降低泛化能力。
- 评分卡失真:逻辑回归或决策树在缺失值传递过程中,可能出现权重偏移或分裂点异常。
- 线上决策风险:实时风控中,缺失值若未妥善处理,可能导致拒绝规则误触发或信用评分骤降。
实战警示:某消费金融公司曾因“单位名称”字段缺失率高达 40%,直接使用均值填充后,模型对自由职业者的违约预测准确率下降 18%。缺失值处理不当,其危害往往超过特征选择错误。
1.3 数据质量对模型性能的影响
数据质量是风控模型的基石。缺失率、异常率、一致性等维度直接影响模型性能指标。下表展示了缺失率与模型 AUC 之间的典型关系:
| 缺失率区间 | 数据质量等级 | 对模型 AUC 影响 | 推荐处理策略 |
|---|---|---|---|
| < 5% | 优 | 几乎无影响 | 简单填充(均值/众数)或直接删除 |
| 5% – 15% | 良 | AUC 下降 0.01 – 0.03 | 统计填充 + 缺失指示变量 |
| 15% – 30% | 中 | AUC 下降 0.03 – 0.08 | 模型预测填充(KNN / 回归) |
| > 30% | 差 | AUC 下降 > 0.08 | 特征重构或删除该字段 |
除了 AUC,缺失值还会导致以下模型性能问题:
- KS 统计量波动:缺失值分布不均匀时,模型区分好坏客户的能力会显著下降。
- PSI 稳定性恶化:线上与线下缺失模式不一致,导致群体稳定性指标(PSI)超标。
- 可解释性降低:SHAP 或 LIME 解释中,缺失值会被错误归因,误导业务决策。
1.4 缺失值处理全景图
下图展示了风控数据缺失值从识别到处理的完整链路,以及各环节对模型性能的影响路径:
1.5 缺失值处理的 Python 快速诊断
在进入实战之前,我们使用 Python 对风控数据集进行缺失值快速诊断。以下代码展示了缺失率计算与可视化:
import pandas as pd
import numpy as np
# 模拟风控数据集
df = pd.DataFrame({
'客户ID': range(1, 101),
'年龄': np.random.randint(22, 60, 100).astype(float),
'月收入': np.random.normal(15000, 5000, 100).astype(float),
'征信查询次数': np.random.randint(0, 20, 100).astype(float),
'逾期天数': np.random.choice([0, 1, 5, 15, 30, np.nan], 100)
})
# 随机引入缺失值
df.loc[::10, '月收入'] = np.nan
df.loc[::15, '征信查询次数'] = np.nan
# 计算缺失率
missing_rate = df.isnull().mean() * 100
print("各字段缺失率(%):")
print(missing_rate[missing_rate > 0].round(2))
# 输出缺失矩阵摘要
print("\n缺失值统计:")
print(df.isnull().sum())
输出示例:
各字段缺失率(%):
月收入 10.0
征信查询次数 6.67
逾期天数 5.0
dtype: float64
缺失值统计:
客户ID 0
年龄 0
月收入 10
征信查询次数 7
逾期天数 5
dtype: int64
诊断要点:在风控实战中,建议对每个特征计算缺失率,并绘制缺失模式矩阵(missingno 库)。重点关注缺失率 > 5% 且与逾期标签存在相关性的字段,这些字段往往是模型性能的潜在风险点。