3. 模型监控指标体系:PSI、KS、AUC、Lift、Gini
额度定价PD模型上线后,必须建立一套完整的监控指标体系,以持续评估模型区分能力、排序稳定性和预测准确度。本章详细定义六大核心指标的计算逻辑与业务含义,帮助风控团队快速定位模型衰退原因。
监控频率建议:PSI 建议每周/每月计算一次;KS、AUC、Gini 建议每月计算一次;Lift 图建议每季度更新一次。模型上线初期应适当提高监控频率。
3.1 指标全景图
下表汇总了六大指标的核心用途与评价维度:
| 指标 | 英文全称 | 核心用途 | 评价维度 | 理想范围 |
|---|---|---|---|---|
| PSI | Population Stability Index | 样本分布稳定性 | 稳定性 | < 0.1 |
| KS | Kolmogorov-Smirnov | 好坏样本区分能力 | 区分度 | > 0.3 |
| AUC | Area Under ROC Curve | 整体排序能力 | 排序力 | > 0.75 |
| Lift | Lift Value | 模型提升效果 | 提升度 | 随分箱变化 |
| Gini | Gini Coefficient | 模型纯度/集中度 | 纯度 | > 0.5 |
| MSE/LogLoss | Mean Squared Error / Log Loss | 预测误差 | 准确度 | 越小越好 |
3.2 PSI — 群体稳定性指标
定义:PSI 衡量模型评分在时间维度上的分布偏移程度,是模型稳定性的核心监控指标。
计算逻辑:
- 将模型评分按等频或等距分箱(通常 10~20 箱)。
- 计算每个分箱在基准样本(建模样本)中的占比 \(A_i\)。
- 计算每个分箱在监控样本(当前样本)中的占比 \(B_i\)。
- 代入公式:
PSI = Σ (B_i - A_i) * ln(B_i / A_i)
判定标准:
- PSI < 0.1:分布稳定,无需干预。
- 0.1 ≤ PSI < 0.25:轻度偏移,需排查原因。
- PSI ≥ 0.25:严重偏移,模型需重新训练或调整。
常见陷阱:PSI 对空箱敏感。若监控样本某分箱占比为 0,会导致 ln(0) 计算异常。建议对空箱做平滑处理(如加 0.5 或使用贝叶斯平滑)。
3.3 KS — 区分能力指标
定义:KS 统计量衡量模型对好客户与坏客户的最大区分能力,是评分卡模型最常用的区分度指标。
计算逻辑:
- 将模型评分按升序排列,等频分箱(通常 10~20 箱)。
- 计算每个分箱的累计好客户占比 \(Cum\_good_i\)。
- 计算每个分箱的累计坏客户占比 \(Cum\_bad_i\)。
- KS = max(|Cum\_good_i - Cum\_bad_i|)。
KS = max_{i=1}^{n} |Cum_good_i - Cum_bad_i|
判定标准:
- KS > 0.5:区分能力极强,但需警惕过拟合。
- 0.3 ≤ KS ≤ 0.5:区分能力良好。
- 0.2 ≤ KS < 0.3:区分能力一般,需优化。
- KS < 0.2:区分能力差,模型不可用。
业务解读:KS 值对应的分箱位置即为模型最佳切分点。例如 KS=0.45 出现在第 7 箱,说明该分数段是区分好坏客户的最优阈值。
3.4 AUC — 排序能力指标
定义:AUC 是 ROC 曲线下的面积,衡量模型对好坏客户排序的全局能力。AUC 值越大,模型将坏客户排在好客户前面的概率越高。
计算逻辑:
- 按模型评分从低到高排序(低分代表高风险)。
- 计算每个阈值下的 TPR(真正率)和 FPR(假正率)。
- 绘制 ROC 曲线,计算曲线下面积。
AUC = ∫_{0}^{1} TPR(FPR^{-1}(x)) dx
等价解释:AUC = P(坏客户评分 < 好客户评分),即随机抽取一对好坏客户,模型将坏客户排在好客户前面的概率。
判定标准:
- AUC ≥ 0.9:极佳,但需验证是否过拟合。
- 0.8 ≤ AUC < 0.9:优秀。
- 0.75 ≤ AUC < 0.8:良好。
- 0.7 ≤ AUC < 0.75:一般,需优化。
- AUC < 0.7:差,模型不可用。
3.5 Lift — 提升度指标
定义:Lift 衡量模型相对于随机选择的提升效果,常用于评估模型在特定分箱(如高风险客群)中的捕获能力。
计算逻辑:
- 将样本按模型评分从低到高排序,等频分箱(通常 10 箱)。
- 计算每个分箱的坏客户占比 \(Bad\_rate_i\)。
- 计算整体坏客户占比 \(Overall\_bad\_rate\)。
- Lift_i = Bad\_rate_i / Overall\_bad\_rate。
Lift_i = Bad_rate_i / Overall_bad_rate
业务解读:
- Lift > 1:该分箱坏客户浓度高于平均水平。
- Lift = 1:与随机选择无差异。
- Lift < 1:该分箱坏客户浓度低于平均水平。
应用场景:Lift 图常用于策略制定。例如,若前 2 箱 Lift 值 > 5,说明模型能有效识别高风险客群,可针对该客群设置更严格的额度定价策略。
3.6 Gini — 基尼系数
定义:Gini 系数衡量模型对好坏客户的排序纯度,与 AUC 高度相关,但更直观地反映模型对极端风险的识别能力。
计算逻辑:
- 按模型评分从低到高排序。
- 计算累计好客户占比和累计坏客户占比。
- 绘制 Lorenz 曲线(累计坏客户 vs 累计好客户)。
- Gini = 1 - 2 * Lorenz 曲线下面积。
Gini = 2 * AUC - 1
判定标准:
- Gini ≥ 0.6:模型纯度极高。
- 0.4 ≤ Gini < 0.6:良好。
- 0.2 ≤ Gini < 0.4:一般。
- Gini < 0.2:差。
3.7 指标关系与监控体系架构
下图展示了六大指标在模型监控体系中的层级关系与数据流转:
3.8 指标计算代码示例(Python)
以下代码展示了 PSI、KS、AUC 的核心计算逻辑:
import numpy as np
import pandas as pd
from sklearn.metrics import roc_auc_score
def calculate_psi(actual, expected, bins=10):
"""计算 PSI"""
# 等频分箱
actual_bins = pd.qcut(actual, q=bins, duplicates='drop')
expected_bins = pd.qcut(expected, q=bins, duplicates='drop')
actual_dist = actual_bins.value_counts(normalize=True).sort_index()
expected_dist = expected_bins.value_counts(normalize=True).sort_index()
psi = 0
for i in range(len(actual_dist)):
a = actual_dist.iloc[i]
e = expected_dist.iloc[i]
# 平滑处理
if a == 0: a = 0.0001
if e == 0: e = 0.0001
psi += (a - e) * np.log(a / e)
return psi
def calculate_ks(y_true, y_score):
"""计算 KS"""
df = pd.DataFrame({'y_true': y_true, 'y_score': y_score})
df = df.sort_values('y_score', ascending=True)
df['cum_good'] = (df['y_true'] == 0).cumsum() / (df['y_true'] == 0).sum()
df['cum_bad'] = (df['y_true'] == 1).cumsum() / (df['y_true'] == 1).sum()
ks = max(abs(df['cum_good'] - df['cum_bad']))
return ks
def calculate_auc(y_true, y_score):
"""计算 AUC"""
return roc_auc_score(y_true, y_score)
# 示例使用
y_true = [0, 1, 0, 1, 0, 1, 0, 0, 1, 0]
y_score = [0.1, 0.4, 0.2, 0.8, 0.3, 0.7, 0.15, 0.25, 0.9, 0.05]
print(f"KS: {calculate_ks(y_true, y_score):.4f}")
print(f"AUC: {calculate_auc(y_true, y_score):.4f}")
3.9 指标联动分析
实际监控中,单一指标异常往往伴随其他指标变化。下表总结了常见联动模式:
| PSI | KS | AUC | Lift | 可能原因 | 建议动作 |
|---|---|---|---|---|---|
| ↑ 升高 | ↓ 下降 | ↓ 下降 | ↓ 下降 | 客群结构变化(如新客涌入) | 重新校准模型或分群建模 |
| → 稳定 | ↓ 下降 | ↓ 下降 | → 稳定 | 特征失效或变量衰减 | 特征工程迭代 |
| → 稳定 | → 稳定 | → 稳定 | ↑ 升高 | 极端风险事件(如欺诈攻击) | 排查异常客群,调整策略 |
| ↑ 升高 | → 稳定 | → 稳定 | → 稳定 | 评分分布整体平移 | 检查评分卡截距项 |
最佳实践:建议建立监控看板,同时展示 PSI、KS、AUC 的时序趋势图。当任一指标连续 3 个月恶化时,自动触发模型重训流程。
3.10 监控报告模板
每次模型监控应输出标准化报告,包含以下核心内容:
- 模型基本信息:模型版本、上线时间、监控周期。
- 稳定性评估:PSI 值及分箱分布对比图。
- 区分度评估:KS 值、AUC 值、Gini 系数及 ROC 曲线。
- 提升度评估:Lift 图及 Top 分箱捕获率。
- 异常分析:指标异常原因排查及建议。
- 行动建议:是否重训、是否调整策略、是否深入分析。
通过系统化监控指标体系,风控团队可以快速定位模型衰退根因,确保额度定价模型长期稳定运行。