4. 评分卡开发流程:样本定义(好/坏客户)、观察期与表现期设定、模型训练与验证
催收评分卡(Collection Score)的开发遵循一套严谨的量化流程,核心在于通过历史数据预测债务人在未来特定时间段内的还款概率。本章将拆解开发流程中的三个关键环节:样本定义(好/坏客户界定)、观察期与表现期设定、以及模型训练与验证。
4.1 样本定义:好客户与坏客户
样本定义是评分卡开发的基石。定义标准直接决定了模型学习的目标。在催收场景中,通常以“逾期后是否在特定时间内结清”作为评判依据。
核心原则: 坏客户的定义必须与业务催收策略强相关。定义过严(如逾期1天未还即为坏)会导致样本量不足;定义过宽(如逾期180天未还才算坏)则模型无法区分早期风险。
| 客户类型 | 定义标准(示例) | 业务含义 | 标签赋值 |
|---|---|---|---|
| 好客户 | 逾期进入催收后,在 30天 内全额结清或达成有效还款协议 | 具备还款意愿和能力,短期流动性问题 | 0 |
| 坏客户 | 逾期进入催收后,超过 90天 仍未结清,或进入核销/法务阶段 | 还款意愿低或丧失还款能力,高风险 | 1 |
| 不确定样本 | 逾期状态介于好/坏之间(如逾期60天) | 状态模糊,通常从建模样本中剔除 | — |
实操建议: 建议采用“滚动率分析(Roll Rate Analysis)”来科学确定好/坏定义的时间窗口。例如,分析逾期30天的客户中,有多少比例最终滚动到逾期90天。若滚动率超过某个阈值(如70%),则可将该逾期天数作为坏客户定义的起点。
4.2 观察期与表现期设定
评分卡模型需要明确“用哪段时间的数据预测哪段时间的结果”。这涉及两个关键时间窗口:观察期和表现期。
- 观察期(Observation Window): 用于提取客户特征(X变量)的时间段。例如,取客户过去6个月的还款行为、催收接触次数、收入稳定性等数据。
- 表现期(Performance Window): 用于定义客户好坏标签(Y变量)的时间段。例如,观察期结束后,再观察客户未来3个月是否还款。
- 时间间隔(Gap): 观察期结束与表现期开始之间的时间点,通常为0,即观察期结束的次日开始计算表现。
4.3 模型训练与验证
在完成样本定义和时间窗口设定后,进入模型开发的核心环节。通常采用逻辑回归(Logistic Regression)作为基础模型,因其可解释性强,适合金融监管要求。
4.3.1 训练流程
- 数据划分: 将样本集按时间顺序或随机方式分为训练集(60%)、验证集(20%)和测试集(20%)。
- 特征筛选: 通过IV值(Information Value)、相关性分析、逐步回归等方法筛选入模变量。
- 模型拟合: 使用训练集拟合逻辑回归模型,得到各特征的权重系数。
- 评分转换: 将模型输出的概率值通过线性变换转换为整数评分(如300-900分)。
4.3.2 验证指标
| 验证指标 | 计算公式/说明 | 合格标准 |
|---|---|---|
| KS值 | 衡量模型区分好坏客户的最大差距 | ≥ 0.3(催收场景) |
| AUC | ROC曲线下面积,衡量模型整体排序能力 | ≥ 0.7 |
| PSI | 群体稳定性指标,衡量模型在时间上的稳定性 | ≤ 0.1 |
| Lift值 | 模型在最高风险组中识别坏客户的能力倍数 | ≥ 2.0 |
4.4 模型输出与评分卡转换
训练完成的逻辑回归模型输出的是违约概率(PD)。为了便于业务使用,需要将其转换为整数评分卡。转换公式如下:
# 评分卡转换示例(Python伪代码)
# 假设模型系数已求出
import numpy as np
# 设定基准分和PDO(Point of Double Odds)
base_score = 600
pdo = 50 # 评分每增加50分,好坏比翻倍
# 计算偏移量和刻度因子
factor = pdo / np.log(2)
offset = base_score - factor * np.log(0.5 / 0.5) # 假设基准好坏比为1:1
# 将概率转换为评分
def prob_to_score(prob):
odds = prob / (1 - prob)
score = offset - factor * np.log(odds)
return int(round(score))
# 示例:违约概率0.8的客户评分
print(prob_to_score(0.8)) # 输出:约450分
重要提醒: 评分卡上线前必须进行回溯测试(Backtesting),使用至少3个月的新数据验证评分分布是否与开发样本一致。若PSI超过0.1,需重新校准模型或重建特征。