4. 关键指标与监控体系
模型上线只是起点,真正决定自动重训能否“触发得准、触发得早”的,是一套可解释、可分层、可自动化的监控指标体系。本节围绕准确率、AUC、KS、PSI、CSI五类核心指标,讲清它们的定义、计算逻辑、适用场景与监控频率,并给出可落地的阈值配置思路。
一、核心原理:区分“模型能力”与“数据稳定性”
监控指标可分为两大阵营。第一类是区分能力指标,衡量模型把好坏样本分开的本领,包括准确率、AUC、KS;第二类是稳定性指标,衡量输入数据和输出分数的分布是否发生漂移,包括PSI、CSI。自动重训的触发逻辑,本质上是这两类指标同时越界时的联合判断。
- 准确率(Accuracy):预测正确样本数除以总样本数。计算简单,但在类别极不平衡的风控场景中容易失真,例如坏样本仅占1%时,全部预测为“好”也能得到99%准确率。
- AUC:ROC曲线下面积,反映模型对随机一对好坏样本正确排序的概率。取值0.5表示无区分能力,1.0表示完美区分。AUC对阈值不敏感,是评估排序能力的首选。
- KS:好坏样本累计分布差值的最大值,衡量模型的最大区分度。KS越高,模型在最优切点处的区分能力越强,风控中通常要求KS大于0.3。
- PSI(Population Stability Index):衡量同一变量或分数在两个时间窗口的分布差异,用于检测数据漂移。
- CSI(Characteristic Stability Index):针对单个特征变量的稳定性指标,是PSI在特征维度的细化,用于定位是哪个变量导致了整体漂移。
一句话记忆:AUC和KS看“模型行不行”,PSI和CSI看“数据变没变”,准确率看“阈值切得准不准”。
二、计算方法与监控频率
PSI的计算公式为:PSI = Σ (Actual% − Expected%) × ln(Actual% / Expected%)。通常按分数或特征分箱后计算,经验阈值:PSI < 0.1 稳定,0.1~0.25 需关注,> 0.25 显著漂移。CSI计算方式相同,只是对象换成单个特征。
# PSI 计算示例(Python)
import numpy as np
def psi(expected, actual, bins=10):
breakpoints = np.percentile(expected, np.linspace(0, 100, bins + 1))
breakpoints[0], breakpoints[-1] = -np.inf, np.inf
exp_pct = np.histogram(expected, breakpoints)[0] / len(expected)
act_pct = np.histogram(actual, breakpoints)[0] / len(actual)
exp_pct = np.where(exp_pct == 0, 1e-6, exp_pct)
act_pct = np.where(act_pct == 0, 1e-6, act_pct)
return np.sum((act_pct - exp_pct) * np.log(act_pct / exp_pct))
# 监控配置示例
monitor_config = {
"auc": {"threshold": 0.72, "freq": "daily", "window": "30d"},
"ks": {"threshold": 0.30, "freq": "daily", "window": "30d"},
"psi": {"threshold": 0.25, "freq": "daily", "window": "7d_vs_train"},
"csi": {"threshold": 0.25, "freq": "weekly", "top_n": 20}
}
监控频率需与业务节奏匹配:AUC、KS、PSI建议每日计算,采用滚动30天窗口;CSI因涉及大量特征,建议每周计算并输出Top漂移特征;准确率则依赖标签回传周期,通常在账期结束后按月度更新。
| 指标 | 监控对象 | 建议频率 | 预警阈值 | 触发动作 |
|---|---|---|---|---|
| 准确率 | 整体预测 | 月度 | 下降>5% | 复核阈值 |
| AUC | 模型排序能力 | 每日 | <0.72 | 进入观察 |
| KS | 最大区分度 | 每日 | <0.30 | 进入观察 |
| PSI | 分数分布 | 每日 | >0.25 | 触发重训评估 |
| CSI | 单特征分布 | 每周 | >0.25 | 定位漂移特征 |
三、案例场景:一次联合触发的重训决策
某消费金融模型上线三个月后,监控看板出现如下信号:PSI连续5天从0.08升至0.31,CSI显示“近30天查询次数”和“多头借贷平台数”两个特征漂移最严重,同时AUC从0.78降至0.69,KS从0.42降至0.27。此时若只看AUC,可能误判为模型老化;但结合CSI可定位到是外部数据源口径变化导致特征分布偏移。系统据此触发重训,并在重训前先修复特征口径,避免用被污染的数据训练新模型。
实战建议:PSI和CSI应设置“连续N天越界”才触发,而非单日越界即重训,避免节假日、促销等短期波动造成误触发。
四、误区与复盘
- 误区一:只看AUC不看PSI。AUC下降可能是数据漂移引起,也可能是标签延迟导致,必须结合PSI/CSI判断根因。
- 误区二:PSI阈值一刀切。分数PSI和特征CSI的敏感度不同,分数PSI可设0.25,核心特征CSI可收紧至0.15。
- 误区三:忽略标签延迟。准确率和AUC依赖真实标签,若标签回传滞后30天,则近期AUC不可信,应以PSI/CSI作为先行指标。
- 复盘要点:每次重训后应记录触发指标、触发时间、重训前后AUC/KS对比,形成触发策略的反馈闭环,持续校准阈值。
综上,准确率、AUC、KS负责回答“模型当前表现如何”,PSI、CSI负责回答“环境是否已改变”。只有把两类指标按合理频率采集、按分层阈值判断,并配合连续越界与根因定位机制,自动重训才能真正做到既不迟钝、也不误动。