2. 信用评分模型基础:逻辑回归与评分卡转换原理

信用评分卡(Scorecard)是金融风控领域最成熟、最可解释的模型形式之一。其核心思想是将用户的原始特征(如收入、负债比、逾期次数)通过 特征分箱 → WOE 编码 → 逻辑回归 → 分数映射 的流水线,转化为一个直观的整数分数。本章从数学原理和工程实现两个维度拆解这一过程。

📌 学习目标:掌握逻辑回归输出概率与评分卡分数的转换公式;理解特征分箱与 WOE 编码的单调性约束;能够手动计算刻度参数(Scale, Offset)。

2.1 逻辑回归与评分卡转换原理

逻辑回归(Logistic Regression)输出的是样本属于“坏客户”的概率 \( p \)。评分卡转换的核心是将 \( p \) 映射为整数分数,同时满足:分数越高,风险越低;分数每增加一定分值(PDO),坏账率翻倍。

2.1.1 从概率到分数的线性变换

设逻辑回归的线性部分为:

logit(p) = ln(p / (1 - p)) = β₀ + β₁·x₁ + ... + βₙ·xₙ

评分卡标准映射公式:

Score = Offset - Scale × logit(p)

其中:
- Offset(偏移量):基准分数,通常对应某个特定 odds(好坏比)
- Scale(刻度):每增加一个 PDO(Points to Double the Odds),分数变化量
- PDO:好坏比翻倍时分数增加的固定点数

给定两个已知条件即可解出 Offset 和 Scale:

已知条件 含义 典型值
基准 odds = 1:1 时的分数 好坏比相等时的基准分 600 分
PDO odds 翻倍时增加的分数 20 分
# 参数求解示例
import numpy as np

base_odds = 1.0      # 好坏比 1:1
base_score = 600.0   # 基准分数
pdo = 20.0           # 翻倍点数

# 解方程:
# base_score = Offset - Scale * ln(base_odds)
# base_score + pdo = Offset - Scale * ln(2 * base_odds)
# 相减得:pdo = Scale * ln(2) → Scale = pdo / ln(2)

scale = pdo / np.log(2)          # ≈ 28.85
offset = base_score + scale * np.log(base_odds)  # = 600.0

print(f"Scale = {scale:.4f}, Offset = {offset:.4f}")
# 输出: Scale = 28.8539, Offset = 600.0000
💡 工程提示:Offset 和 Scale 一旦确定,整个评分卡的所有特征分箱分数都通过 Score = Offset - Scale × (β₀ + Σβᵢ·WOEᵢ) 计算。Offset 和 Scale 是全局参数,不随样本变化。
逻辑回归 → 评分卡分数映射流程 逻辑回归 输出概率 p logit 变换 ln(p/(1-p)) 线性组合 β₀ + Σβᵢ·WOEᵢ 分数映射 Score = Offset - Scale × logit(p) 评分卡整数分数 关键参数 Offset: 基准偏移 Scale: 刻度因子 PDO: 翻倍点数

2.2 特征分箱与 WOE 编码

原始连续特征(如年龄、收入)不能直接进入逻辑回归,必须先进行 分箱(Binning),然后计算每个分箱的 WOE(Weight of Evidence,证据权重) 替代原始值。分箱和 WOE 编码是评分卡可解释性的基石。

2.2.1 特征分箱原则

  • 单调性:坏账率随分箱顺序单调递增或递减,保证业务逻辑合理。
  • 足够样本:每个分箱至少包含 5% 的样本,避免统计不稳定。
  • 业务可解释:分箱边界尽量取整(如年龄 25、35、45),便于业务人员理解。

2.2.2 WOE 编码公式

WOEᵢ = ln( (坏样本占比ᵢ) / (好样本占比ᵢ) )
      = ln( (Badᵢ / Bad_total) / (Goodᵢ / Good_total) )

其中:
- Badᵢ:第 i 个分箱中的坏客户数
- Goodᵢ:第 i 个分箱中的好客户数
- Bad_total:全部坏客户数
- Good_total:全部好客户数

WOE 的正负含义:

  • WOE > 0:该分箱中坏样本占比 < 好样本占比,风险较低。
  • WOE < 0:该分箱中坏样本占比 > 好样本占比,风险较高。
  • WOE = 0:该分箱好坏比例与整体一致,无区分能力。

2.2.3 IV 值(Information Value)

IV 用于衡量特征对好坏客户的区分能力:

IV = Σ ( (Badᵢ/Bad_total - Goodᵢ/Good_total) × WOEᵢ )
IV 范围 预测能力 工程建议
< 0.02 无预测能力 剔除该特征
0.02 ~ 0.10 弱预测能力 谨慎使用
0.10 ~ 0.30 中等预测能力 推荐保留
> 0.30 强预测能力 核心特征
⚠️ 避坑指南:IV 值过高(>0.50)可能暗示特征与目标存在过度相关性,甚至包含未来信息(如“当前逾期天数”对“未来是否违约”的预测)。务必进行特征穿越检验。
特征分箱与 WOE 编码示例(年龄特征) 分箱 1: ≤25 WOE = -0.35 分箱 2: 26-35 WOE = -0.12 分箱 3: 36-45 WOE = 0.08 分箱 4: 46-55 WOE = 0.25 分箱 5: ≥56 WOE = 0.42 编码后特征向量(WOE 替代原始年龄) [-0.35, -0.12, 0.08, 0.25, 0.42] → 输入逻辑回归 ✅ WOE 单调性检查 年龄越大 → WOE 越高 → 风险越低 符合业务直觉:年长用户信用更稳定 📊 IV 值计算 IV = Σ( (Bad% - Good%) × WOE ) 本例 IV ≈ 0.18(中等预测能力)

2.3 评分卡刻度(Scale)与分数映射公式

评分卡刻度是连接逻辑回归系数与最终分数的桥梁。每个特征分箱的分数由该分箱的 WOE 值和逻辑回归系数共同决定。

2.3.1 单个分箱的分数计算

Scoreᵢⱼ = -Scale × βᵢ × WOEᵢⱼ + (Offset / n_features)

其中:
- βᵢ:第 i 个特征的逻辑回归系数
- WOEᵢⱼ:第 i 个特征第 j 个分箱的 WOE 值
- n_features:参与建模的特征总数
- Offset / n_features:将基准分数均匀分配到每个特征

2.3.2 最终评分卡分数

Total Score = Offset + Σᵢ Scoreᵢⱼ
            = Offset - Scale × (β₀ + Σᵢ βᵢ × WOEᵢⱼ)

2.3.3 刻度参数计算示例

参数 符号 计算公式 示例值
刻度因子 Scale PDO / ln(2) 20 / 0.6931 ≈ 28.85
偏移量 Offset 基准分数 + Scale × ln(基准 odds) 600 + 28.85 × 0 = 600
特征分数 Scoreᵢⱼ -Scale × βᵢ × WOEᵢⱼ -28.85 × 0.35 × (-0.35) ≈ 3.53
🔧 工程实现要点:
  • Offset 和 Scale 在模型训练完成后一次性计算,作为全局配置存储。
  • 每个特征分箱的分数可以预计算并缓存,API 运行时只需查表求和,避免实时计算 logit。
  • 分数通常取整为整数,便于业务人员解读(如 650 分 vs 652.34 分)。

2.4 完整评分卡示例

以下是一个包含两个特征的简化评分卡:

特征 分箱 WOE 系数 β 分数贡献
年龄 ≤ 25 -0.35 0.35 3.53
26-45 0.08 0.35 -0.81
≥ 46 0.42 0.35 -4.24
负债比 ≤ 30% 0.50 0.50 -7.21
> 30% -0.60 0.50 8.66
Offset 600.00
总分 600 + 3.53 - 0.81 - 4.24 - 7.21 + 8.66 = 599.93 ≈ 600
💡 低延迟优化提示:在 API 发布阶段,评分卡分数计算可以完全转化为 查表 + 整数加法,避免浮点运算和 log 计算。将每个分箱的分数预计算为整数,运行时根据用户特征命中分箱,累加 Offset 即可得到最终分数。单次评分耗时可控制在 1μs 以内。