> For the complete documentation index, see [llms.txt](https://kerasnoone.gitbook.io/garnet/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kerasnoone.gitbook.io/garnet/xi-fen-ling-yu/jin-rong-ling-yu/ping-fen-ka-mo-xing.md).

# 评分卡模型

## 什么是评分卡模型

评分卡模型运用数据挖掘技术和统计分析方法, 通过对消费者的身份特征, 信用历史, 行为记录, 交易记录等大量数据进行系统的分析, 挖掘数据中蕴含的行为模式与信用特征, 捕捉历史信息和未来信用表现之间的关系, 发展出预测性的模型, 以一个信用评分来综合评估消费者未来的某种信用表现.

**其原理是将模型变量WOE编码方式离散化之后运用Logistic回归模型进行的一种二分类变量的广义线性模型.**

### 应用场景

评分卡模型的经典应用场景是银行的借贷业务. 按照借贷用户的借贷时间, 常见以下三种评分卡模型

* 贷前, 申请评分卡(Application score card), A卡
  * 更准确地评估申请人的未来表现, 即违约率
  * 加快审批流程, 降低营运成本
  * 增加审批决策的客观性和一致性, 提高客户满意度
* 贷中, 行为评分卡(Behavior score card), B卡:
  * 更好的客户管理策略, 提高赢利
  * 对可能拖欠的客户, 提早预警
* 贷后, 催收评分卡(Collection score card), C卡:
  * 优化催收策略, 提高欠帐的回收率
  * 减少不必要的催收行为, 降低营运成本

### 模型实例

一个评分卡模型的实例如下:

![](https://1942165044-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MI7KRyeBH5dlW-CkUtn%2Fsync%2F6437a76b1721db72e1c7f8d952c784f3408ecea9.png?generation=1613643758002445\&alt=media)

一个用户具有多个特征属性, 每个特征包含有限个特征值, 每个特征值都有固定的评分, **一个用户总的评分等于基准分加上对客户各个属性的评分**.

## 如何搭建评分卡模型

结合上面的例子, 搭建评分卡模型等同于确定一张上面形式的表格, 因此需要考虑3个问题:

* **变量特征是如何选取的**
* **特征的变量范围是如何进行划分的**
* **每个字段的分值是如何设定的**

这三点是构建评分卡模型的关键. 当然, 与其他领域使用算法模型解决问题一样, 加上数据准备和模型评估阶段, 完整的评分卡模型开发流程如下:

* 数据准备: 数据清洗, 标签定义, 特征定义
* 探索性分析, EDA
* 数据预处理, 训练接切分
* 特征选择
* 特征分箱, WOE转换
* 模型开发, 逻辑回归与模型内特征的进一步筛选迭代
* *拒绝推断*(可选)
* 模型评估, 指标评估, 模型验证
* 信用评分刻度制定, 评分刻度转换
* 模型效果监控

### 特征粗选择

这里进行特征筛选的目的是:

* 剔除跟目标变量不太相关的特征
* 消除**线性相关的变量**，避免特征冗余
* 保证变量的可解释性
* 减轻后期验证、部署、监控的负担

#### 规则选择

首先可以用简单的规则用来剔除一些信息很少的特征:

* **特征值缺失比**过大, 如缺失率大于95%
* 特征中**单类别比例**过大, 如大于95%, 绝大多数样本在这个特征上表现相同, 也就没有区别度了, 可以抛弃

#### 重要程度选择

不同的特征对最后标签的预测重要性不同, 原则上, 要选出重要的特征, 排除掉剩余的低效特征.

评价单个特征的重要性的指标很多, 如常见的gini系数, 特征与真值的相关系数等. 在评分卡模型中, 我们使用**IV值**评价单个特征的重要性.

IV值的计算, 在之后说明.

#### 其他通用特征选择

在其他任务中常用的特征选择方法, 都可以视情况在评分场景中使用. 具体方法参考[特征选择总结](/garnet/shi-jian-ji-qiao/te-zheng-gong-cheng/te-zheng-xuan-ze/te-zheng-xuan-ze-zong-jie.md).

#### 特征相关性分析

由于评分卡模型是基于逻辑回归模型的, 如果两个变量具有线性相关性, 则这两个特征的权值将会相互影响, 使得系数权重无法解释, 进而导致变量的每个分段的得分也有无数种取法. 另外共线特征也会造成模型的不稳定.

由于这些弊端, 评分卡模型必须检测特征之间的相关性, 一般使用Pearson相关系数检测线性相关性即可, 也可以使用其他更全面的检测方法.

如果一组变量之间高度相关, 保留IV值最大的特征.

### 变量分箱

变量分箱指的是:

* 对连续变量进行分段离散化
* 将多状态的离散变量进行重置及合并等操作

可以总结为对连续变量进行离散化, 以及对离散变量重新编码. 特征分箱具有很多优点:

* 将所有特征统一变换为类别型变量
* 特征分箱可以有效处理特征中的缺失值和异常值
* 特征分箱可以简化逻辑回归模型, 降低模型过拟合的风险, 提高模型的泛化能力
* 分箱后变量才可以使用标准的评分卡格式, 即对不同的分段进行评分

为了创建一个对过度拟合具有弹性的健壮模型, 每个箱应该包含来自总账户的足够数量的观察结果(经验最小值为5%), 如果分享后的最大箱占据了总样本量的超过阈值(经验值为90%), 应当删除这个变量.

评分卡模型常用的分箱方法有以下几种.

#### ChiMerge分箱

ChiMerge分箱是一种自下而上的分箱方法, 其基本思想是如果两个相邻的区间具有类似的类分布, 则这两个区间合并, 否则, 它们应保持分开. Chimerge通常采用**卡方值**来衡量两相邻区间的类分布情况.

具体过程如下:

设定分箱得到的最大区间数为$$n$$.

* 初始化
  * 连续值按升序排列, **离散值先转化为坏客户的比率, 然后再按升序排列**
  * 如果该特征所有状态数量(可能的取值数量)大于一个阈值(如100), 为了减少计算量, 利用等频分箱进行粗分箱
  * 若有缺失值, 则缺失值单独作为一个分箱
* 合并区间
  * 计算每一对相邻区间的卡方值
  * 将卡方值最小的一对区间合并
  * 重复以上两个步骤, 直到分箱数量不大于$$n$$
* 分箱后处理
  * 对于坏客户比例为`0`或`1`的分箱进行合并, 一个分箱内不能全为好客户或者全为坏客户
  * 对于分箱后某一箱样本占比超过95%的箱子进行删除
  * 检查缺失分箱的坏客户比例是否和非缺失分箱相等, 如果相等, 进行合并

输出分箱后的数据和分箱区间.

#### 树形分箱

包括Split分箱和Merge分箱

* Split分箱是一种自上而下(即基于分裂)的数据分段方法. Split分箱和决策树比较相似, 切分点的选择指标主要有Entropy, Gini指数等
* Merge分箱, 是一种自底向上(即基于合并)的数据离散化方法. Merge 分箱常见的类型为Chimerge分箱

#### 等频分箱

把自变量按从小到大的顺序排列, 根据自变量的个数等分为k部分, 即**分位数等分**, 每部分作为一个分箱.

#### 等距分箱

把自变量按从小到大的顺序排列, 将自变量的取值范围分为k个等距的区间, 每个区间作为一个分箱.

### WOE转换

对于原始特征, 无论是连续的数值变量还是离散的类别变量, 在评分卡模型中, 都要经过分箱操作转变成类别变量, 即一个个箱(bin).

如何使用这些变量? 在逻辑回归中, 只能使用数值作为输入, 因此就要将每个箱(类别)转换成**数值大小有意义的数值**. 相当于特征转化成类别特征之后, 在转换成数值型, 但可取的数值是有限的, 分在同一个箱之中的值是一样的, 且这个数值的大小有比较的意义. **通过WOE变换, 特征值不仅仅代表一个分类, 还代表了这个分类的权重.**

在评分卡模型中使用WOE(Weight of Evidence, 证据权重)转换完成这步操作. WOE转换过程能够简化模型的应用且增加业务解释性, 可以将 logistic 回归模型转变为标准评分卡格式, 同时能将特征与标签之间的非线性关系转化为线性的, 这部分的原因将在后面对模型的分析中看到.

WOE定义如下, 对于某个特征的分箱$$i$$:

$$
W O E\_{i}=\ln \left(\frac{\text { BadDistr }*{i}}{\text { GoodDistr }*{i}}\right)=\ln \left(\frac{\text { Bad }*{i} / \sum B a d*{i}}{\text { Good }*{i} / \sum \text { Good }*{i}}\right)=\ln \left(\frac{\text { Bad }*{i} / \text { Good }*{i}}{\sum B a d\_{i} / \sum \text { Good }\_{i}}\right)
$$

$$\text{BadDistr}*{i}$$与$$\text{GoodDistr}*{i}$$分别指的是分箱$$i$$的坏客户分布和好客户分布情况. 因此一个分箱的WOE指的就是坏客户分布与好客户分布的比值的对数, 这种方法衡量了分箱$$i$$对整体坏好比的影响权重.

箱中坏客户和好客户分布情况, 分别使用**i箱中坏客户的数量/坏客户的总数**以及**i箱中好客户的数量/好客户的总数**来衡量.

WOE编码带来了以下优点:

* 缺失值作为一个单独的分箱, 可以被利用起来, 且有数值的评价
* 分箱离散化操作带来的对异常值的鲁棒性
* 业务解释性, 每个特征的每种取值的大小都与标签的logit线性相关, 且特征之间也规范到同一尺度上, 解释性很强

### IV值计算

IV(Information Value, 信息值), 是衡量一个二元变量y和一个名义变量x之间的关联性的指标, 在评分卡模型中用来衡量分箱后的特征对标签的贡献度, 可以用来做进一步的特征选择.

IV值可以认为是特征下所有箱子对应的WOE值得加权和, 对应公式如下:

$$
\begin{aligned}
IV &= \sum\_{i}\left(\text { BadDistr }*{i}-\text { GoodDistr }*{i}\right) \ln \left(\frac{\text { BadDistr }*{i}}{\text { GoodDistr }*{i}}\right) \\
&= \sum\_{i}\left(\frac{B a d\_{i}}{B a d\_{T}}-\frac{G o o d\_{i}}{G o o d\_{T}}\right) \* W O E\_{i}
\end{aligned}
$$

根据IV值评价特征预测力的经验阈值为:

* 小于0.02: 无预测力
* 0.02到0.1: 弱
* 0.1到0.3: 中等
* 0.3到0.5: 强
* 大于0.5: 难以置信, 需确认

### 特征二次选择

在得到衡量特征对标签贡献度的IV值之后, 可以使用IV值结合集成模型和合适的评价指标, 进一步对特征进行选择.

### 模型训练

Logistic回归是信用评分中用于解决二元分类问题的常用技术, 逻辑回归通过sigmoid函数, 将线性回归模型$$z=\boldsymbol{w}^T\boldsymbol{x}+b$$产生的预测值转换为一个接近0或1的拟合值:

$$
h(x)=\frac{1}{1+e^{-z}}=\frac{1}{1+e^{-(\boldsymbol{w}^T\boldsymbol{x}+b)}}
$$

上式的$$h(x)$$可以视为事件发生的概率$$p(y=1|\boldsymbol{x})$$, 记为$$p$$, 事件不发生的概率为$$p(y=0|\boldsymbol{x})$$, 对应为$$1-p$$. 将发生的概率比上不发生的概率$$p/(1-p)$$称为**比率**(odds), 即违约概率与正常概率的比值, 整理比率的自然对数, 得到:

$$
\ln\frac{p}{1-p}=z=\boldsymbol{w}^T\boldsymbol{x}+b
$$

因此, **逻辑回归实际上是用比率的自然对数作为因变量的线性回归模型**.

将比率的自然对数进一步展开:

$$
log(Odds)=\beta \_0 + \beta \_1x\_1+…+\beta \_nx\_n
$$

其中的$$x\_i$$是每个特征的取值, $$\beta \_0,\beta \_1,…,\beta \_n$$是逻辑回归拟合得到权重参数. 进一步地, 每一个特征我们都进行了分箱, 因此可以按分箱的角度继续展开:

$$
\begin{aligned}
log(Odds) &= \beta \_0 + \beta \_1x\_1+…+\beta \_nx\_n \\
&= \beta \_0+(\beta \_1\omega \_{11})\delta \_{11}+(\beta \_1\omega \_{12})\delta \_{12}+…+(\beta \_2\omega \_{21})\delta \_{21}+…
\end{aligned}
$$

其中的$$\omega \_{ij}$$表示特征$$i$$的中的分箱$$j$$对应的WOE值, 是已知的. $$\delta \_{ij}$$表示该样本的特征$$i$$是否在分箱$$j$$中, 只可能取$${0, 1}$$两种值.

因此从分箱的角度, 每个分箱的WOE值使用:

$$
W O E\_{i}=\ln \left(\frac{\text { BadDistr }*{i}}{\text { GoodDistr }*{i}}\right)=\ln \left(\frac{\text { Bad }*{i} / \sum B a d*{i}}{\text { Good }*{i} / \sum \text { Good }*{i}}\right)=\ln \left(\frac{\text { Bad }*{i} / \text { Good }*{i}}{\sum B a d\_{i} / \sum \text { Good }\_{i}}\right)
$$

其实就是在计算**分箱内部的比率**, 在特征处理阶段通过这种非线性转换, 将特征与标签之间的非线性关系转化为线性的, 这就是使用WOE转换的一个非常重要的优点.

上面是在分析逻辑回归契合于评分卡模型的细节. 逻辑回归的训练无特殊之处.

### 模型评估

评分卡要求备选的逻辑回归模型达到三个基本要求:

* 精确性, 达到可接受水平
* 稳健性, 要求能够适用于更广范围的数据集
* 有意义, 即业务变量及其预测值是可解释的. 例如, 信用卡的额度利用率越高, 违约率相应也越高

其中稳定性需要保证模型使用的变量, 在训练集和实际情况中的分布稳定一致, 在获取简单准确, 不易缺失. 且模型中不应该包含太多变量, 经验范围为9\~20个, 最优10\~12个, 变量太多可能导致过拟合, 变量太少往往区分度不够.

有意义要保证使用特征在业务意义上好解释, 这里有一些经验积累. 最后得到的模型, 不同变量的贡献度都不应过低, 保证特征在模型中的有效性.

对于精确性, 可以使用常用的衡量模型在开发集上表现的指标和曲线图表:

主要评估指标:

* AUC
* KS值

主要评估曲线图表:

* ROC曲线
* KS曲线

评价经验参考: [模型验证评估](http://shichen.name/slide/20171115scorecard/#51).

### 评分刻度制定

在训练逻辑回归模型得到每个特征的权值之后, 下一步制定评分的标准了.

评分卡的分值刻度通过将分值表示为比率对数的线性表达式表示:

$$
Score = A – B\log(Odds)
$$

A和B是待确定的常数, $$\log(Odds)$$是比率的自然对数, 根据上面的推论, 可以按分箱展开.

#### 确定常数

首先确定常数A和B. 根据上式, 可以知道给定一个具体的比率Odds, 就可以得到这个比率对应的分数, 即:

$$
points0=A-B\ln(odds0)
$$

如果把这个具体的比率$$\text{odds0}$$翻倍, 分数应当下降多少, 将这个分数的下降幅度记为PDO(Points to Double the Odds, 坏好比率翻倍的分数), 因此有:

$$
points0-PDO=A-B\ln(2odds0)
$$

解方程得到A和B:

$$
A=points0+B\ln(odds0)
$$

$$
B=PDO/\ln(2)
$$

这里引入了人工的基准和人工的刻度划分. 例如我们将比率为1:20时的得分定义为50分, PDO定义为10分, 通过公式就可以计算得到A=6.78, B=14.43.

#### 分值分配

接下来就是分配每个箱的评分分值, 将上式对$$\log(Odds)$$按分箱展开, 得到:

$$
\begin{aligned}
score &= A-B\ln(odds) \\
&= A-B(\boldsymbol{\beta}^T\boldsymbol{x}) \\
&= A- B\beta\_0 - B\beta\_1x\_1 - B\beta\_2x\_2 \cdots - B\beta\_mx\_m \\
&= A-B{\beta \_0+(\beta \_1\omega \_{11})\delta \_{11}+(\beta \_1\omega \_{12})\delta \_{12}+…+(\beta \_2\omega \_{21})\delta \_{21}+…} \\
&= (A-B\beta \_0)-(B\beta \_1\omega *{11})\delta *{11}-(B\beta *1\omega*{12})\delta*{12}-…-(B\beta *x\omega*{x1})\delta*{x1}-…
\end{aligned}
$$

其中的$$x\_i$$是每个特征的取值, $$\beta \_0,\beta \_1,…,\beta \_n$$是逻辑回归拟合得到权重参数, $$\omega \_{ij}$$表示特征$$i$$的中的分箱$$j$$对应的WOE值, 是已知的. $$\delta \_{ij}$$表示该样本的特征$$i$$是否在分箱$$j$$中, 只可能取$${0, 1}$$两种值.

因此我们可以得到基础分为$$(A-B\beta *0)$$, 特征$$i$$中的分箱$$j$$的得分为$$B\beta\_x\omega*{xy}$$, 如果样本在这个特征中分到这个箱中, 分数就要减去这个值. 最终得到一张评分表:

![](https://1942165044-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MI7KRyeBH5dlW-CkUtn%2Fsync%2F01eb9543db4bf1b0b48320c7e84a7a463481c69f.png?generation=1613816561742463\&alt=media)

## 参考资料

* [风险控制：信用评分卡模型](https://www.biaodianfu.com/credit-score.html)
* [信用评分卡模型开发与应用](http://shichen.name/slide/20171115scorecard/#1)
* [手把手教你搭建评分卡模型](https://cloud.tencent.com/developer/article/1448182)
