3. 数据准备与探索:数据源选择、数据质量检查、缺失值处理、异常值检测
在信用评分模型开发中,数据是模型性能的基石。本章聚焦于从原始业务数据到建模可用数据集的完整转化过程,涵盖数据源选择、质量检查、缺失值处理与异常值检测四个核心环节。每一步决策都会直接影响 Champion 模型的区分能力与稳定性。
3.1 数据源选择与评估
信用评分模型通常依赖三类数据源,其选择需兼顾覆盖率、时效性与合规性:
| 数据源类型 | 典型内容 | 优势 | 风险 |
|---|---|---|---|
| 内部申请数据 | 申请表信息、历史借贷记录、还款行为 | 高相关性、获取成本低 | 样本偏差(仅限存量客户) |
| 外部征信数据 | 央行征信、百行征信、多头借贷记录 | 覆盖全市场、客观性强 | 更新延迟、合规审批周期长 |
| 替代数据 | 运营商数据、电商消费、社保公积金 | 覆盖征信白户、行为维度丰富 | 数据标准化差、隐私争议 |
Champion 对照实验要点: 在 Champion 与 Challenger 模型对比中,应确保两个模型使用完全相同的数据源与时间窗口,否则无法区分性能差异来自模型算法还是数据基础。
3.2 数据质量检查
数据质量检查是数据准备阶段最耗时但最关键的步骤。建议按以下流程逐项排查:
- 完整性检查: 统计每个字段的空值比例,设定阈值(如 >50% 则考虑剔除)。
- 唯一性检查: 确认主键(如客户ID)无重复,重复记录需去重或合并。
- 一致性检查: 验证字段取值是否符合业务逻辑(如年龄 > 0,贷款金额 ≤ 申请金额)。
- 时效性检查: 检查数据时间戳是否在建模时间窗口内,避免未来数据泄露。
- 准确性检查: 抽样比对原始凭证与数据库记录,计算错误率。
质量检查清单示例:
字段名 空值率(%) 唯一值数 异常值标记 结论
customer_id 0.00 100,000 无 通过
age 2.30 78 含 -1, 200 需处理
income 15.40 5,234 含 999999 需处理
loan_amount 0.10 1,200 无 通过
overdue_days 8.50 365 含 -5 需处理
3.3 缺失值处理策略
缺失值处理需结合缺失机制与业务含义,常用方法包括:
| 处理方法 | 适用场景 | 实现方式 | 对 Champion 模型的影响 |
|---|---|---|---|
| 删除记录 | 缺失率低(<5%)且随机缺失 | 直接删除含缺失值的样本 | 样本量减少,可能损失尾部信息 |
| 均值/中位数填充 | 数值型字段,缺失率中等 | 用训练集均值或中位数填充 | 降低方差,可能削弱区分度 |
| 众数填充 | 分类型字段,缺失率较低 | 用训练集出现频率最高的类别填充 | 可能引入偏态分布 |
| 模型预测填充 | 缺失率较高(10%-30%) | 用回归/决策树预测缺失值 | 计算成本高,但保留数据分布 |
| 缺失值单独编码 | 缺失本身具有业务含义 | 将缺失值作为单独类别或特殊值 | 可捕捉“未提供信息”的风险信号 |
Champion 对照实验警告: 缺失值处理方法必须在 Champion 与 Challenger 模型中保持一致。若 Champion 使用均值填充而 Challenger 使用模型预测填充,则无法判断性能差异来自模型算法还是数据预处理。
3.4 异常值检测与处理
异常值会扭曲模型参数估计,尤其对逻辑回归等线性模型影响显著。常用检测方法包括:
- 统计方法: Z-score(|Z| > 3 视为异常)、IQR 方法(超出 Q1-1.5IQR 或 Q3+1.5IQR)。
- 业务规则: 年龄 < 18 或 > 100、收入为负值、贷款金额超过产品上限。
- 可视化方法: 箱线图、直方图、散点图辅助人工判断。
- 模型方法: 孤立森林、LOF(局部异常因子)用于高维数据。
异常值处理原则:
- 先区分“业务异常”与“数据录入错误”:业务异常(如高收入客户)可能包含重要风险信息,不宜直接删除。
- 对连续型异常值采用截尾处理(Winsorization),将极端值替换为 1% 或 99% 分位数。
- 对分类型异常值(如未知代码 -999)归入“其他”类别或单独编码。
- 记录所有异常值处理逻辑,确保 Champion 与 Challenger 模型处理流程一致。
3.5 数据探索性分析(EDA)要点
在完成数据清洗后,需对数据进行探索性分析,为特征工程提供方向:
- 单变量分析: 查看每个特征的分布形态、集中趋势与离散程度,识别长尾分布或双峰分布。
- 双变量分析: 计算每个特征与目标变量(好坏标签)的 IV(信息量)值,筛选高预测力特征。
- 相关性分析: 计算特征间相关系数,识别高度相关(|r| > 0.7)的特征对,避免多重共线性。
- 时间稳定性分析: 按时间窗口(月/季)计算特征分布稳定性,使用 PSI(群体稳定性指标)量化。
EDA 输出清单: 每次 EDA 应输出特征分布图、IV 排名表、相关性热力图、PSI 时序图,作为 Champion 模型开发文档的附件存档。
3.6 数据准备阶段常见陷阱
| 陷阱 | 表现 | 后果 | 规避方法 |
|---|---|---|---|
| 未来数据泄露 | 使用建模时间点之后的数据计算特征 | 模型在线上表现远低于离线测试 | 严格按时间窗口切分训练/测试集 |
| 填充信息泄露 | 使用全量数据均值填充缺失值 | 测试集信息流入训练集 | 仅使用训练集统计量进行填充 |
| 异常值过度处理 | 将业务正常的高风险客户误判为异常值剔除 | 模型失去对高风险群体的识别能力 | 先业务判断,后统计方法 |
| 数据漂移未检测 | 训练数据与线上数据分布不一致 | 模型上线后快速衰减 | 定期计算 PSI,设置监控阈值 |
Champion 对照实验最佳实践:
- 将数据预处理流程封装为可复用的 Pipeline,确保 Champion 与 Challenger 模型调用同一套代码。
- 在模型开发文档中记录每个字段的缺失率、异常值比例、处理方式,便于后续审计与复现。
- 对缺失值填充和异常值截尾的阈值进行敏感性分析,评估不同处理方式对模型性能的影响。