3. 信用评分模型训练流程
信用评分模型的构建是一个端到端的工程流程,从原始数据到可部署的评分卡,通常经历四个核心阶段:数据采集、特征工程、模型训练与模型评估。本章将详细拆解每个阶段的技术要点与工程实践。
核心原则:信用评分模型强调可解释性与稳定性,因此逻辑回归仍是行业基准,XGBoost 常用于提升区分度,但需配合严格的单调性约束与特征分箱。
3.1 数据采集
数据是模型的上限。信用评分模型的数据来源通常包括以下三类:
| 数据类别 | 典型字段 | 采集方式 | 注意事项 |
|---|---|---|---|
| 申请数据 | 年龄、收入、职业、学历、婚姻状况 | 申请表、OCR 识别、API 对接 | 需验证真实性,防止欺诈 |
| 征信数据 | 逾期次数、负债率、查询次数、信贷历史长度 | 央行征信 / 百行征信 API | 需用户授权,注意数据时效性 |
| 行为数据 | APP 使用频率、交易流水、设备指纹 | 埋点系统、日志采集 | 需脱敏处理,关注隐私合规 |
数据采集避坑:务必记录数据采集时间戳与版本号。信用评分模型通常使用“观察点”数据,即申请时间点之前 6-12 个月的历史数据,避免使用未来信息(Look-ahead Bias)。
3.2 特征工程
特征工程是模型效果的关键。信用评分场景下,特征工程主要包含 数据清洗、特征衍生、分箱与 WOE 编码 三个步骤。
3.2.1 数据清洗
- 缺失值处理:连续变量用中位数或均值填充;离散变量用众数或单独“未知”类别。
- 异常值截断:对收入、负债率等变量,按 1% 和 99% 分位数进行截尾处理。
- 重复样本去重:同一用户多次申请时,保留最早或最新的一条记录。
3.2.2 特征衍生
基于业务逻辑构造强特征,常见方法包括:
- 比率类:负债收入比(DTI)、信用卡使用率。
- 趋势类:近 3 个月查询次数环比、近 6 个月逾期次数变化。
- 交叉类:年龄 × 学历、收入 × 职业等级。
3.2.3 分箱与 WOE 编码
信用评分模型(尤其是逻辑回归)要求输入为离散化特征。分箱后使用 WOE(Weight of Evidence) 编码替代原始值。
# WOE 计算公式
WOE_i = ln( (Bad_i / Bad_total) / (Good_i / Good_total) )
# 其中:
# Bad_i = 第 i 个分箱中的坏样本数
# Good_i = 第 i 个分箱中的好样本数
分箱原则:每个分箱至少包含 5% 的样本;坏样本占比需单调递增或递减;WOE 值需与坏样本率呈单调关系,否则需合并或拆分分箱。
3.3 模型训练
信用评分领域最常用的两类模型是 逻辑回归 和 XGBoost。两者各有优劣,实际生产中常组合使用。
3.3.1 逻辑回归(Logistic Regression)
逻辑回归是信用评分卡的标准算法,输出概率可直接转换为整数评分。
# 逻辑回归模型形式
P(y=1|x) = 1 / (1 + e^(-z))
# 其中 z = β₀ + β₁x₁ + β₂x₂ + ... + βₙxₙ
# 评分转换公式:Score = Offset + Factor * ln(odds)
# odds = P / (1 - P)
训练要点:
- 使用 WOE 编码后的特征,确保每个特征与目标呈单调关系。
- 加入 L1/L2 正则化防止过拟合,信用评分常用 L2(Ridge)。
- 特征间需检验多重共线性(VIF < 10)。
3.3.2 XGBoost
XGBoost 在区分度上通常优于逻辑回归,但可解释性较差。在信用评分中,XGBoost 常用于:
- 作为逻辑回归的特征筛选器(特征重要性排序)。
- 构建集成模型,与逻辑回归进行模型融合。
- 在拒绝推断(Reject Inference)中作为辅助模型。
# XGBoost 关键参数(信用评分场景)
params = {
'objective': 'binary:logistic',
'max_depth': 3, # 防止过拟合,通常 3-5
'learning_rate': 0.05, # 步长
'subsample': 0.8, # 行采样
'colsample_bytree': 0.8, # 列采样
'scale_pos_weight': 3, # 正负样本比例调整
'eval_metric': 'auc'
}
模型选择建议:如果业务要求强可解释性(如监管合规),优先选择逻辑回归;如果追求极致区分度且可接受 SHAP 解释,可选择 XGBoost。两者也可通过 Stacking 融合。
3.4 模型评估
信用评分模型评估不仅看区分度,还需关注稳定性与校准度。核心指标包括 KS 和 AUC。
3.4.1 KS(Kolmogorov-Smirnov)
KS 衡量模型区分好坏样本的最大能力。计算公式为:
KS = max( |Cumulative_Good_Rate - Cumulative_Bad_Rate| )
# 取值范围:0 ~ 1
# 行业标准:
# KS < 0.2:模型区分能力弱
# 0.2 ≤ KS < 0.4:中等
# 0.4 ≤ KS < 0.6:强
# KS ≥ 0.6:可能存在过拟合
3.4.2 AUC(Area Under ROC Curve)
AUC 是 ROC 曲线下的面积,反映模型整体排序能力。
| AUC 范围 | 模型效果 | 信用评分常见值 |
|---|---|---|
| 0.5 - 0.6 | 无效 | — |
| 0.6 - 0.7 | 较差 | — |
| 0.7 - 0.8 | 中等 | 部分场景可接受 |
| 0.8 - 0.9 | 良好 | 行业主流水平 |
| 0.9 - 1.0 | 优秀 | 需警惕过拟合 |
3.5 完整训练流程总结
以下表格汇总了信用评分模型训练各阶段的核心任务与产出物:
| 阶段 | 核心任务 | 关键产出 | 质量门禁 |
|---|---|---|---|
| 数据采集 | 多源数据接入、数据质量校验 | 原始数据集 + 数据字典 | 缺失率 < 30%,异常值比例 < 5% |
| 特征工程 | 清洗、衍生、分箱、WOE 编码 | WOE 特征矩阵 + 分箱映射表 | IV > 0.02,单调性检验通过 |
| 模型训练 | 逻辑回归 / XGBoost 训练与调参 | 模型文件(.pkl / .json) | 训练集与验证集 KS 差异 < 0.05 |
| 模型评估 | KS、AUC、PSI、校准曲线 | 评估报告 + 评分映射表 | KS ≥ 0.25,AUC ≥ 0.75,PSI < 0.1 |
工程实践建议:每次训练完成后,保存完整的特征工程流水线(Pipeline)和模型参数,确保线上推理与线下训练完全一致。推荐使用 MLflow 或 Kubeflow 进行实验追踪与模型版本管理。