4. 缺失值基础:缺失值类型(MCAR/MAR/MNAR)、缺失机制与对模型的影响
在金融图谱特征工程中,缺失值并非随机噪声,其背后往往隐藏着特定的业务逻辑或数据采集缺陷。理解缺失值的产生机制,是选择正确填充策略、避免模型偏差的前提。本章从统计学角度系统梳理三种缺失机制及其对金融模型的影响。
4.1 三种缺失机制:MCAR / MAR / MNAR
缺失机制由 Rubin(1976)提出的分类框架定义,根据缺失数据与观测数据、未观测数据之间的依赖关系,分为以下三类:
| 缺失机制 | 英文全称 | 核心定义 | 金融场景示例 |
|---|---|---|---|
| MCAR | Missing Completely At Random | 缺失与任何变量(观测或未观测)均无关,完全随机 | 系统随机抽样的数据丢失、传感器偶发故障 |
| MAR | Missing At Random | 缺失仅依赖于已观测到的其他变量,与缺失值本身无关 | 高收入客户更可能不填写“月支出”字段(收入已观测) |
| MNAR | Missing Not At Random | 缺失依赖于缺失变量本身的值(即使控制其他变量) | 违约客户故意隐瞒“逾期天数”字段 |
关键判断原则: 在金融风控场景中,MNAR 是最危险但最常见的缺失类型——缺失本身可能就是风险信号。例如,客户拒绝提供“职业信息”往往与收入不稳定相关,此时缺失值本身具有预测能力。
4.2 缺失机制的可视化对比
下图展示了三种缺失机制在数据矩阵中的依赖关系。箭头表示缺失概率的依赖方向,帮助理解不同机制下的数据生成过程。
4.3 缺失机制对金融模型的影响
不同缺失机制对模型训练、推断和业务决策产生差异化的影响。下表总结了核心风险点:
| 缺失机制 | 对参数估计的影响 | 对预测偏差的影响 | 金融业务风险 |
|---|---|---|---|
| MCAR | 无偏,但效率降低(样本量减少) | 无系统性偏差 | 低,仅损失统计功效 |
| MAR | 若忽略缺失机制,可能产生有偏估计 | 条件偏差,可通过观测变量校正 | 中,需使用多重插补或似然方法 |
| MNAR | 严重有偏,标准方法失效 | 系统性偏差,不可忽略 | 高,可能导致错误的风险定价或信用评分 |
金融场景警示: 在信用评分卡建模中,如果“收入”字段的缺失属于 MNAR(高收入或低收入客户更倾向不填写),直接删除缺失样本或简单均值填充,会导致模型对极端收入群体的预测能力严重下降,进而引发监管合规风险。
4.4 如何诊断缺失机制
实际数据中,缺失机制往往是混合存在的。以下步骤帮助分析师初步判断:
- 统计缺失模式矩阵:使用
missingno库可视化缺失的共现模式。 - 分组比较法:将数据按缺失/非缺失分组,检验其他特征均值是否存在显著差异(t 检验或卡方检验)。
- 逻辑回归诊断:构建二元变量
is_missing,以其他完整变量为特征训练分类器。若 AUC > 0.7,则强烈提示非 MCAR。 - 敏感性分析:对 MNAR 假设,通过改变缺失值的填充值范围,观察模型输出的稳定性。
# 示例:逻辑回归诊断缺失机制
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_auc_score
# 假设 df 包含特征列和 'income' 列
df['income_missing'] = df['income'].isna().astype(int)
features = ['age', 'education_years', 'credit_score']
X = df[features].dropna() # 确保特征无缺失
y = df.loc[X.index, 'income_missing']
model = LogisticRegression()
model.fit(X, y)
auc = roc_auc_score(y, model.predict_proba(X)[:, 1])
print(f"缺失预测 AUC: {auc:.3f}")
# AUC > 0.7 提示缺失非 MCAR,需进一步判断 MAR 或 MNAR
4.5 金融图谱特征缺失的特殊性
在图谱特征(如节点度、PageRank、社区归属)中,缺失机制呈现独特模式:
- 结构依赖缺失:孤立节点(度=0)天然缺失邻居特征,属于 MAR(依赖于图结构)。
- 传导性缺失:一个节点的缺失会通过图传播影响其邻居的特征计算(如二阶邻居聚合)。
- 业务语义缺失:在反欺诈图谱中,黑产团伙节点可能故意隐藏关联关系,形成 MNAR。