信用分建模

信用分模型

目前有 n n n个样本,每个样本表示一个贷款客户的信息。则第 i i i个样本表示为 { x i . y i } \{x_i.y_i\} {xi​.yi​},其中 y ∈ { 0 , 1 } y\in \{0,1\} y∈{0,1} 0代表正常,1代表逾期
写成矩阵的形式:
X = { 1 x 1 , 1 x 1 , 2 . . . x 1 , r 1 x 2 , 1 x 2 , 2 . . . x 2 , r . . . . . . . . . . . . . . . 1 x n , 2 x n , 3 . . . x n , r } X = \left \{ \begin{aligned} 1 && x_{1,1} && x_{1,2} && ... && x_{1,r} \\ 1 && x_{2,1} && x_{2,2} && ... && x_{2,r} \\ ... && ... && ... && ... && ... \\ 1 && x_{n,2} && x_{n,3} && ... && x_{n,r} \\ \end{aligned}\right\} X=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​11...1​​x1,1​x2,1​...xn,2​​​x1,2​x2,2​...xn,3​​​............​​x1,r​x2,r​...xn,r​​⎭⎪⎪⎪⎪⎬⎪⎪⎪⎪⎫​
Y = ( y 1 , y 2 , . . . , y n ) T Y = (y_1,y_2,...,y_n)^T Y=(y1​,y2​,...,yn​)T

对客户 i i i而言,如果其逾期的概率是 p i p_i pi​,那么其正常的概率就是 1 − p i 1-p_i 1−pi​ ,一个客户要么逾期要么正常,逾期和正常的概率之和必然是1。
因为需要根据 X X X评估用户 i i i是否会逾期。所以可以考虑使用最常见的广义可加模型,其中线性模型最为简单。
如下所示::

信用分建模

另外,又考虑到概率 p i p_i pi​的值域是 [ 0 , 1 ] [0,1] [0,1]区间,T希望输出的函数值在这个值域。因此再嵌套一层函数以变换值域:信用分建模

显然,上式的值域一定是在[0,1]区间的,这里使用logsitic函数是因为 e z i e^{z_i} ezi​在微分求导上更便利。
样本 x i x_i xi​对应的借款人,可能是逾期,也可能是正常,可以用一个公式同时表示这两种情况:

P i = P ( y i ∣ x i β i ) = ( p i ) y i ( 1 − p i ) ( 1 − y i ) y i ∈ { 0 , 1 } P_i=P(y_i|x_i\beta_i) = (p_i)^{y_i}(1-p_i)^{(1-y_i)}\\y_i \in \{0,1\} Pi​=P(yi​∣xi​βi​)=(pi​)yi​(1−pi​)(1−yi​)yi​∈{0,1}
对n个样本而言,样本之间是相互独立的,因此对所有样本而言,其全体概率是:
L ( β ) = ∏ i = 0 n P i L(\beta)=\prod_{i=0}^nP_i L(β)=∏i=0n​Pi​
那么我们就需要对其中的参数 β j \beta_j βj​进行估计,也就是让 L ( β ) L(\beta) L(β)的值最大,这里采用的是极大似然估计,这样就可以得到损失函数:
m i n min min l n L ( β ) = − 1 m ∑ ( y i 1 p i + ( 1 − y i ) 1 ( 1 − p i ) ) ln^{L(\beta)} =-\frac{1}{m}\sum(y_i\frac{1}{p_i}+(1-y_i)\frac{1}{(1-p_i)}) lnL(β)=−m1​∑(yi​pi​1​+(1−yi​)(1−pi​)1​)
得到损失函数以后,我们再使用梯度下降法求得近似最优解.

评分卡模型建立

评分卡的分值分配,由比率决定。例如,一个评分卡可以设定,评分每降低 20 20 20分,违约的比率升高一倍, 600 600 600分账户的违约比率是 620 620 620 分账户的两倍。每个得分对应一个特定的违约比率,便于控制预期违约账户。


O d d s = p i 1 − p i %排公式 \begin{aligned} %自动编号 Odds=\frac{p_i}{1-p_i} \end{aligned} Odds=1−pi​pi​​​
O d d s Odds Odds(几率):不违约概率与违约概率的比值
公式 o d d s odds odds做个变形,也就有:
p i = O d d s 1 + O d d s \begin{aligned} %自动编号 p_i=\frac{Odds}{1+Odds} \end{aligned} pi​=1+OddsOdds​​

评分卡的信用分计算:
S c o r e = A − B ln ⁡ ( O d d s ) \begin{aligned} %自动编号 Score=A-B\ln(Odds) \end{aligned} Score=A−Bln(Odds)​

其中,A和B是常数。如果违约率 p p p很小,那么Odds是一个正的小数,比如0.01、0.02,表示逾期概率很低,此时 l n ( O d d s ) ln(Odds) ln(Odds)是大的负数, S c o r e Score Score的分数高。反之可知 S c o r e Score Score的分数低。

计算A和B:

我们使用PDO(指定的违约概率翻倍的分数)方法来计算A,B

1.设定某个比率为 θ 0 \theta_0 θ0​的对应的分值是 p 0 p_0 p0​,然后,比率为 2 θ 0 2\theta_0 2θ0​的点的分值是 p 0 + P D O p_0+PDO p0​+PDO。

2.将上述两个设定带入公式,有如下两个等式:

p 0 = A − B ln ⁡ ( θ ) p 0 + P D O = A − B ln ⁡ ( 2 θ ) \begin{aligned} %自动编号 p_0=A-B\ln(\theta) \end{aligned}\\\begin{aligned} %自动编号 p_0+PDO=A-B\ln(2 \theta) \end{aligned} p0​=A−Bln(θ)​p0​+PDO=A−Bln(2θ)​

3.两个等式联合求解,可得:
B = P D O ln ⁡ ( 2 ) A = p 0 + B ln ⁡ ( θ 0 ) \begin{aligned} %自动编号 B&=\frac{PDO}{\ln(2)}\\ A&=p_0+B\ln(\theta_0) \end{aligned} BA​=ln(2)PDO​=p0​+Bln(θ0​)​

4.计算示例,违约比 O d d s = 1 60 Odds=\frac{1}{60} Odds=601​的时候,是合理的违约比,此时对应的分值是 p 0 = 600 p_0=600 p0​=600分,违约比每翻倍,分数变小 20 20 20分,也就是PDO= 20 20 20。那么,根据上述公式可以求出 A = 481.86 A=481.86 A=481.86, B = 28.85 B=28.85 B=28.85,也就是 S c o r e = 481.89 − 28.85 l n ( O d d s ) Score=481.89-28.85ln(Odds) Score=481.89−28.85ln(Odds)。如果 O d d s = 1 30 Odds=\frac{1}{30} Odds=301​,增加一倍,则 S c o r e Score Score经过计算可得是 580.01 580.01 580.01,四舍五入后是 580 580 580,符合预期。

评分卡的模型建立

现在,我们重另外一个角度解释分箱的意义:
首先,我们知道:
l n ( p i 1 − p i ) = z i ln(\frac{p_i}{1-p_i})=z_i ln(1−pi​pi​​)=zi​
那么公式
S c o r e = A − B ln ⁡ ( p i 1 − p i ) \begin{aligned} %自动编号 Score=A-B\ln(\frac{p_i}{1-p_i}) \end{aligned} Score=A−Bln(1−pi​pi​​)​
可以变形为
S c o r e = A − B ( β 0 + β 1 x i , 1 + . . . + β r x i , r ) S c o r e = A − B β 0 + B ( − β 1 x i , 1 − . . . − β r x i , r ) (0) Score=A-B(\beta_0+\beta_1x_{i,1}+...+\beta_rx_{i,r})\\Score=A-B\beta_0+B(-\beta_1x_{i,1}-...-\beta_rx_{i,r})\tag{0} Score=A−B(β0​+β1​xi,1​+...+βr​xi,r​)Score=A−Bβ0​+B(−β1​xi,1​−...−βr​xi,r​)(0)
计算信用分,还可以进一步简化。根据上式计算信用分,需要 x i x_{i} xi​和多个参数进行计算,让操作人员使用直接使用这些参数是不合适的,首先结算结果解释性不清晰,其次核查每个属性对信用分产生的影响略显复杂。因此,简化的预期是,
第一,一线人员不需要记住 A A A、 B B B、 β j ( j − 0 , 1 , . . . , r ) \beta_j(j-0,1,...,r) βj​(j−0,1,...,r)、 p 0 p_0 p0​等参数
第二,要知道 x i x_i xi​的每个属性变量对信用分的贡献,大小多少。

举例来说,年龄 a g e age age是一个属性。信用分计算使用年龄属性,与其把年龄数值代入公式(0)进行计算,不如把进行分段,比如 a g e < 18 age<18 age<18是一段,对应一个分值,比如10分, 18 ≤ a g e ≤ 35 18\le age\le 35 18≤age≤35是一段,对应一个分值,比如20分, a g e > 35 age>35 age>35是一段,对应一个分值,比如15分。这样在计算信用分的时候,根据年龄所在的分段,查找分数。其他属性以此类推,把所有变量对应的分数加起来,再加上基础分,就得到信用分。

这样就可以从实用角度推导出分箱的必要性。
那么如果把年龄进行分箱,在计算公式(0)的时候,就不能再使用年龄的数值–用什么数据拟合才可以用什么数据预测,用年龄数值拟合的结果不能用年龄分段值进行预测。因此,每个年龄段需要用这个年龄段对应的一个值,替换掉年龄值,进入公式(0)做计算。
每个年龄段用一个值替换,这个值,在本质上需要能反应该年龄段对判别用户是逾期和正常的“价值”。所谓价值,比如说,全部样本有100个,其中正常的是90个,逾期的是10个,其中, a g e < 18 age<18 age<18的样本有30个,这30个样本里,正常的是10个,逾期的是20个,那么, a g e < 18 age<18 age<18这个年龄段对判断逾期,就是有“价值的”,因为这个年龄段逾期的密度比较高。如果 a g e < 18 age<18 age<18的样本有30个,这30个样本里,正常的是27个,逾期的是3个,那么, a g e < 18 age<18 age<18这个年龄段对判断逾期,就是没有“价值的”,因为这个年龄段逾期的密度跟全部样本的逾期密度是一样的。

由此,我们找到一个估算一个分段的价值度量,就是Weight of Evidence:
信用分建模

其中, k k k表示一个属性的第 k k k个分段, n k g o o d n_k^{good} nkgood​表示这个分段对应的样本里正常还款的数量, n k b a d n_k^{bad} nkbad​表示这个分段对应的样本里逾期还款的数量, n a l l g o o d n_{all}^{good} nallgood​表示所有样本里正常还款的数量, n a l l b a d n_{all}^{bad} nallbad​表示所有样本里逾期还款的数量。
一般写作:

以此类推,可以计算每个属性变量的每个分段的 W O E WOE WOE
当拥有了WOE这个工具以后,我们就可以计算特征对于预测函数的贡献程度,使用IV进行判断,不过这属于特征工程的部分,这里就不展开讨论了:
信用分建模

引入 W O E WOE WOE之后,计算流程如下:

1.对公式公式(0)的每个变量,进行分段。分段方式有多种,也可以根据具体场景自行设计。分段之后,计算每个变量的每个分段的 W O E WOE WOE值。然后,根据 x i , j x_{i,j} xi,j​对应的分段,用 W O E k WOE_k WOEk​替换 x i , j x_{i,j} xi,j​。最终,公式 ( ? ? ? ) (???) (???)所有的值,都是各种 W O E WOE WOE的值,不再有 x i , j x_{i,j} xi,j​的值了。

2.后续其他流程完全不变。

评分卡标准形

引入WOE之后,公式(0)变成如下形式
信用分建模其中, ( − β 1 x i , 1 ) (-\beta_1x_{i,1}) (−β1​xi,1​)被 ( − β 1 ( δ i , 1 , 1 W O E 1 , 1 + δ i , 1 , 2 W O E 1 , 2 + . . . + δ i , 1 , k 1 W O E 1 , k 1 ) ) (-\beta_1(\delta_{i,1,1}WOE_{1,1}+\delta_{i,1,2}WOE_{1,2}+...+\delta_{i,1,k_{1}}WOE_{1,k_{1}})) (−β1​(δi,1,1​WOE1,1​+δi,1,2​WOE1,2​+...+δi,1,k1​​WOE1,k1​​))替换。 x i , 1 x_{i,1} xi,1​是第 i i i个样本的第 1 1 1个属性变量,这个数量变量在分段阶段被分为 k 1 k_1 k1​段, W O E 1 , k 1 WOE_{1,k_{1}} WOE1,k1​​表示第 k 1 k_1 k1​段的 W O E WOE WOE。 δ i , 1 , 1 \delta_{i,1,1} δi,1,1​表示,如果变量 x i , 1 x_{i,1} xi,1​的值在第1个分段,那么 δ i , 1 , 1 = 1 \delta_{i,1,1}=1 δi,1,1​=1,如果变量 x i , 1 x_{i,1} xi,1​的值不在第1个分段, δ i , 1 , 1 = 0 \delta_{i,1,1}=0 δi,1,1​=0,这个变量的目的是让公式(0)的形式整齐。其他以此类推。

每个属性变量被切分成多少个分段是不确定的,肯定是互相不一样,因此需要分别表示,比如第 r r r个属性变量,被切分成 k r k_r kr​段。

这样,计算信用分就变成了如下流程:

1.基础分是 A − B β 0 A-B\beta_0 A−Bβ0​

2.对于第一个属性,如果它的值在该第一个分段,增加分值 − β 1 δ 1 , 1 W O E 1 , 1 -\beta_1\delta_{1,1}WOE_{1,1} −β1​δ1,1​WOE1,1​,如果它的值在第二个分段,增加分值 − β 1 δ 1 , 2 W O E 1 , 2 -\beta_1\delta_{1,2}WOE_{1,2} −β1​δ1,2​WOE1,2​…,由此,计算出第一个属性对应的分值,然后累加到基础分上。

3.以跟2.同样的步骤,处理所有属性变量,得到最终的信用分。
反映在程序上,就是将

上一篇:程序员面试金典-面试题 01.04. 回文排列


下一篇:深入解读逻辑回归LogisticRegression:适用于初学者