4. 评分卡与概率输出
在信用风险管理中,评分卡输出的分数本身只是一个相对排序工具,而业务决策往往需要的是绝对风险水平——即违约概率(PD)。因此,理解评分卡刻度设计、分数与违约概率之间的映射关系,以及如何将评分卡分数转换为概率,是模型落地应用的关键环节。本节将系统讲解评分卡刻度的设定逻辑、分数与PD的数学映射方法,并通过案例演示转换流程。
一、评分卡刻度的核心原理
评分卡刻度(Scorecard Scaling)是将逻辑回归模型的线性预测值(log-odds)转换为一个具有业务含义的分数的过程。其核心思想是:分数与违约几率(odds)之间保持对数线性关系,使得分数每增加一定值,违约几率按固定比例下降。
标准评分卡刻度公式如下:
Score = A - B × ln(odds)
其中:
odds = P(好客户) / P(坏客户) = (1 - PD) / PD
A = 基准分数(Base Score)
B = 刻度因子(Base Odds 对应的分数变化)
PDO = Points to Double the Odds(几率翻倍所需分数)
参数A和B由以下两个条件确定:
- 在基准几率(Base Odds)处,设定基准分数(Base Score);
- 几率每翻一倍(或减半),分数变化PDO个点。
由此可得:
B = PDO / ln(2)
A = Base Score + B × ln(Base Odds)
示例:设定基准几率为50:1(好客户:坏客户),基准分数为600分,PDO=50。则:
B = 50 / ln(2) ≈ 72.13
A = 600 + 72.13 × ln(50) ≈ 600 + 72.13 × 3.912 ≈ 882.2
Score = 882.2 - 72.13 × ln(odds)
二、分数与违约概率的映射关系
评分卡分数与违约概率之间存在单调递减的映射关系:分数越高,违约概率越低。这种映射关系可以通过以下步骤建立:
- 从分数反推odds:由 Score = A - B × ln(odds),可得 ln(odds) = (A - Score) / B,进而 odds = exp((A - Score) / B)。
- 从odds计算PD:由于 odds = (1 - PD) / PD,解得 PD = 1 / (1 + odds)。
- 验证单调性:分数越高,ln(odds)越小,odds越小,PD越小,符合业务直觉。
下表展示了典型评分卡分数与违约概率的对应关系(以A=882.2,B=72.13为例):
| 评分卡分数 | ln(odds) | odds(好:坏) | 违约概率PD | 风险等级 |
|---|---|---|---|---|
| 750 | 1.83 | 6.23 | 13.8% | 高风险 |
| 700 | 2.53 | 12.55 | 7.4% | 中高风险 |
| 650 | 3.22 | 25.04 | 3.8% | 中等风险 |
| 600 | 3.91 | 50.00 | 2.0% | 中低风险 |
| 550 | 4.61 | 100.4 | 1.0% | 低风险 |
| 500 | 5.30 | 200.3 | 0.5% | 极低风险 |
注意:上表中PD为坏客户概率,实际业务中通常关注的是“违约概率”,即坏客户占比。若评分卡定义odds为好/坏,则PD = 1/(1+odds)。若定义相反,需相应调整公式。
三、评分卡到概率的转换方法
在实际工程中,将评分卡分数转换为概率通常有两种路径:
方法一:基于刻度公式的直接转换。适用于已知A、B参数且评分卡基于逻辑回归log-odds构建的场景。转换步骤如下:
def score_to_pd(score, A, B):
ln_odds = (A - score) / B
odds = math.exp(ln_odds)
pd = 1 / (1 + odds)
return pd
# 示例
A, B = 882.2, 72.13
score = 650
pd = score_to_pd(score, A, B)
print(f"分数{score}对应的违约概率为:{pd:.4f}") # 输出约0.038
方法二:基于历史样本的校准映射。当评分卡并非严格基于log-odds构建,或需要将分数映射到实际观测的违约率时,可采用分箱校准方法:
- 将评分卡分数划分为若干区间(如每50分一档);
- 统计每个区间内样本的实际违约率;
- 使用保序回归(Isotonic Regression)或Sigmoid校准拟合分数到PD的映射曲线;
- 对新样本分数应用该映射函数得到校准后的PD。
方法二的关键在于:校准样本必须与目标应用场景的客群分布一致。若用训练集校准后直接用于新客群,可能因客群偏移导致PD估计偏差。建议定期用最新样本重新校准。
四、案例与常见误区复盘
案例场景:某消费金融公司开发了一款A卡评分卡,设定Base Score=600,Base Odds=30:1,PDO=40。模型上线后,业务方希望将分数转换为PD用于定价。技术团队按公式计算得B=57.71,A=600+57.71×ln(30)≈796.3。对某客户评分720分,计算得PD≈4.2%。但业务方反馈该客户实际违约率约为6%,存在偏差。
复盘分析:
- 偏差来源一:评分卡开发样本与当前客群存在时间偏移,导致log-odds与实际违约率不对应;
- 偏差来源二:Base Odds设定为30:1是基于开发样本,但当前业务实际坏样本占比更高;
- 解决方案:采用方法二进行重新校准,用最近6个月样本拟合分数-PD映射曲线,修正后该客户PD调整为5.8%,接近实际水平。
常见误区:
- 误区一:认为评分卡分数与PD是固定映射,忽略客群漂移和时间衰减;
- 误区二:混淆odds定义方向,导致PD计算颠倒;
- 误区三:直接用训练集PD作为业务PD,未考虑样本权重和业务实际坏账定义差异;
- 误区四:忽略评分卡刻度参数A、B的重新标定,导致分数分布与业务预期不符。
建议在评分卡上线后建立定期监控机制:每季度计算分数-PD映射曲线的PSI(群体稳定性指数),当PSI>0.1时触发重新校准流程。