评分卡模型
基于上课所学和华东师范大学应用统计科学院的 PPT,再加上自己的微不足道的理解,不足之处请指出。
评分卡模型基于逻辑回归,与逻辑回归不同的是解释变量变为 WOE,响应变量赋予了权重。
逻辑回归
逻辑回归是广义线性模型的一种,即假设响应变量 $Y \sim B\left (1,p\right)$ 即为指数分布簇,
其自然参数 $\theta = \ln \frac {p}{1-p}$,典则连接函数 $g\left (\cdot\right) = \ln \frac {x}{1-x}$。
$$
\ln \frac{P\left(Y = 1\right)}{1 - P\left(P = 1\right)} = \alpha + \beta_1 X_1 + \beta_2 X_2 + \dots + \beta_p X_p
$$
其中,$\frac {P\left (Y = 1\right)}{1 - P\left (P = 1\right)} = \frac {P\left (Y = 1\right)}{P\left (Y = 0\right)}$ 称为成功概率的优势比
广义线性模型(GLM)
广义线性模型是指响应变量不再假定满足正态分布,而是假设其满足指数分布簇即:
$$
Y \sim \exp{ \{ \frac{y\theta - b\left(\theta\right)}{a\left(\phi\right)} + C\left(y,\phi\right) \} }
$$
指数分布簇有两个参数 $\theta$ 和 $\phi$,$\theta$ 称为自然参数,可证明指数分布的期望 $EY = b^{\prime} \left (\theta\right)$,
方差 $VarY = b^{\prime\prime}\left (\theta\right) a\left (\phi\right)$。
然后通过一个连接函数来链接。指数分布簇常见的有正态分布、二项分布、泊松分布、伽马分布、逆高斯分布,而常用的连接函数是典则连接函数即 $\theta = g\left (\cdot\right)$。「个人认为:典则连接函数就是在 Y 的条件期望和参数空间 $\theta$ 的一个映射」
WOE
一般评分卡模型不是对原始数据进行建模,而是将解释变量转换为 WOE,假设解释变量分为五组,则 IV 值和 WOE 值如下:
变量 | 样本个数 | $Y = 1$ | $Y = 0$ | $P(Y) = 1$ | $P(Y) = 0$ | $\text{WOE}$ |
---|---|---|---|---|---|---|
取值区间 1 | $n_1$ | $n_{11}$ | $n_{10}$ | $ p_{11}=\frac{n_{11}}{n_{+1}}$ | $p_{10}=\frac{n_{10}}{n_{+0}}$ | $\ln \frac{p_{11}}{p_{10}} $ |
取值区间 2 | $n_2$ | $n_{21}$ | $n_{20}$ | $ p_{21}=\frac{n_{21}}{n_{+1}}$ | $p_{20}=\frac{n_{20}}{n_{+0}}$ | $\ln \frac{p_{21}}{p_{20}} $ |
取值区间 3 | $n_3$ | $n_{31}$ | $n_{30}$ | $ p_{31}=\frac{n_{31}}{n_{+1}}$ | $p_{30}=\frac{n_{30}}{n_{+0}}$ | $\ln \frac{p_{31}}{p_{30}} $ |
取值区间 4 | $n_4$ | $n_{41}$ | $n_{40}$ | $ p_{41}=\frac{n_{41}}{n_{+1}}$ | $p_{40}=\frac{n_{40}}{n_{+0}}$ | $\ln \frac{p_{41}}{p_{40}} $ |
取值区间 5 | $n_5$ | $n_{51}$ | $n_{50}$ | $ p_{51}=\frac{n_{51}}{n_{+1}}$ | $p_{50}=\frac{n_{50}}{n_{+0}}$ | $\ln \frac{p_{51}}{p_{50}} $ |
样本总数:$n = \sum_{i=1}^{5} n_i$
响应变量为 1 总数:$n_{+1} = \sum_{i=1}^{5} n_{i1}$
响应变量为 0 总数:$n_{+0} = \sum_{j=1}^{5} n_{j0}$
解释变量的 IV 值:$\text {IV} = \sum_{i = 1}^{5} \left (p_{i1} - p_{i0}\right) \ln \frac {p_{i1}}{p_{i0}} $,即反映对响应变量的区分度,越高说明越能区分。
模型的建立
根据逻辑回归,以 WOE 值作为解释变量可得:
$$
\ln \frac{P\left(Y = 1\right)}{1 - P\left(P = 1\right)} = \alpha + \beta_1 \text{WOE}_1 + \beta_2 \text{WOE}_2 + \dots + \beta_p \text{WOE}_p
$$
一般要求 $\beta_i >0 (i = 1,2,3,\dots,p)$,$\text {WOE}$ 值越大越支持 $P\left (Y = 1\right)$
结果转换为分数:
$$
\text{score} = \text{factor} \times \ln \frac{P\left(Y = 1\right)}{1 - P\left(P = 1\right)} + \text{offset}
$$
其中 $\text {score}$ 和 $\text {offset}$ 人为指定,则可计算解释变量在第 $i$ 个取值区间的评分如下
$$
\begin{aligned}
\text{score} &= \text{factor} \times \ln \frac{P\left(Y = 1\right)}{1 - P\left(P = 1\right)} + \text{offset} \\
&= \sum_{i=1}^{p} \text{factor} \times \left( \frac{\alpha}{n} + \beta_i \text{WOE}_i \right) +\frac{\text{offset}}{n}
\end{aligned}
$$
其中,$\text {factor}$ 和 $\text {offset}$ 的计算可通过如下三个参数 $b$,$o$,$p$,理想的分数区间在 $\left [0,999\right]$。
- $b$ 表示基准分值(base point),一般取个 500
- $o$ 表示基准分值对应的优势比(odds)
- $p$ 表示优势比增加 1 倍时基准分值增加的分数(point double odds),一般取个 50
计算公式:
$$
\begin{aligned}
\text{factor} &= \frac{p}{\ln 2} \\
\text{offset} &= b - p \times \frac{\ln o}{\ln 2}
\end{aligned}
$$
常用的评分卡
评分卡类型 | 类型描述 | 主要用途 |
---|---|---|
申请评分卡 | 对申请产品的新客户打分,预测客户将来产生逾期的可能性 | 常用于申请审批以及初始额度设定 |
行为评分卡 | 对现有客户的行为打分,预测客户在接下来一段时间内逾期的可能性 | 常用于额度调整,也可用于交叉销售的风险维度 |
催收评分卡 | 对已经逾期的客户打分,预测客户继续逾期的可能性 | 主要用于选择合适的客户进行催收 |
相应评分卡 | 对市场营销的客户打分,预测客户响应营销活动(购买产品)的可能性 | 主要用于交叉销售、二次销售等 |
流失评分卡 | 对现有客户打分,预测客户流失的可能性 | 主要用于客户挽留 |
申请评分卡(application)、行为评分卡(behavior)、催收评分卡(collection)合称为 “ABC” 卡
模型的评估
- K-S(Kolmogorov-Smirnov test):好客户和坏客户累计经验分布函数差的最大值,衡量两者的区分度,KS 值越大越好,一般 $\left [0.2,0.4\right]$,太高有可能过拟合不稳定,一般要求
测试集上 KS 不能低于建模样本的 1% 以上。 - Gini:横坐标为好客户累计百分比,纵坐标为坏客户累计百分比,所成的曲线与 $Y = X$ 分界线面积的两倍,衡量两者的区分度。
- 区分度:根据好客户和坏客户的分数的经验分布,计算 $Divergence = \frac {\left (m_a - m_b\right)^2}{\frac {1}{2} \left (S_a^2 + S_b^2\right)}$,其中 $m$ 为均值,$S$ 为标准差。
- 提升曲线:横坐标为评分的分位数,纵坐标为坏客户的累计百分比,通过绘制各种样本的表现(随机样本、开发样本、建模样本、验证样本 1、验证样本 2)。
- 分数分布:要求分数呈现平滑且正态,建模样本和验证样本的分数分布一致。
- $\log \left (odds\right)$:根据建模的方法 $\log \left (odds\right)$ 和评分之间具有线性。
- PSI(population shift index):检验模型在验证样本的变化情况,$\text {PSI} < 0.2$ 认为模型稳定,$\text {PSI} > 0.4$ 认为模型不稳定。
$$
\begin{aligned}
\text {PSI} = \sum_{i=1}^{20} \left (\mbox {建模样本比例}_i - \mbox {验证样本比例}_i\right) \ln \frac {\mbox {建模样本比例}_i}{\mbox {验证样本比例}_i}
\end{aligned}
$$
R 语言代码实现
1 | library(scorecard) |
变量分箱
对解释变量进行分箱,根据函数的描述,它使用树状结构最优化对连续变量进行分箱,这可能导致分箱结构数目太多不利于模型的简洁,可选取最大分箱数目。
1 | bin <- woebin(train[,-1], y = "Response", bin_num_limit = 4) |
变量转换为 WOE
根据分箱的结果,将解释变量转换为对应的 $\text {WOE}$ 的值。
1 | train.woe <- woebin_ply(train, bin) |
逻辑回归
根据 $\text {WOE}$ 的值,进行逻辑回归,默认使用的是典则连接函数。
1 | glm.1 = glm(Response ~ ., data = woe, family = binomial()) |
模型评估
1 | pred.test <- predict(glm.1, newdata = test.woe, type = "response") |
转换为分数
根据指定的参数,将模型转换为分数。
1 | card <- scorecard(bin,glm.1,points0 = 500,odds = 0.1,pdo = 50) |