pdf文件在 https://download.csdn.net/download/u011539200/10865606
1.问题描述
假设有个样本,每个样本表示一个贷款客户的信息。第
个样本表示为
,其中
,
。
具体地说,是一个
维向量,每一个维度表示贷款人的一个属性变量。这
个变量,是经过填充数据缺失、去除离群点、去除高相关性变量、筛选高IV等之后的入模变量。
的值是0或1,
表示逾期,
表示正常。
写成矩阵的形式,个样本全部数据,可以写成如下形式:
2.优化求解
对客户而言,如果其逾期的概率是
,那么其正常的概率就是
,一个客户要么逾期要么正常,逾期和正常的概率之和必然是1。
我们需要根据评估用户
是否会逾期。对于构建模型而言,最简单的是线性模型。在线性模型,就是:
其中,表示整个线性组合。
另外,又考虑到概率的值域是
区间,希望输出的函数值在这个值域。因此再增加一层函数以变换值域:
显然,上式的值域一定是在区间的,这里使用
函数是经过设计的,其他形式的函数也可以同样达到一样的值域,但
在微分求导上更便利。
对上式做一次变形,可以得到:
这个公式在后文有用,后面会展开描述。
公式对
求导:
此处,是自变量,这个是可以推导出来的,比较简单,不再详述。这个公式在下文推导会直接使用。
样本对应的借款人,可能是逾期,也可能是正常,可以用一个公式同时表示这两种情况:
如果,则
,如果
,则
。
对个样本而言,样本之间是相互独立的,因此对所有样本而言,其全体概率是:
注意,公式的未知数是
。求解
,就是让公式
的值最大,也就是等价于
最大,
在微分求导上更方便。(更多细节请概率论教科书的最大似然估计方法)
\begin{equation}\label{ln_L}
\begin{split}
ln(L) = &\sum_{i=1}^{n}(y_iln(p_i)+(1-y_i)ln(1-p_i))\\
= &\sum_{i=1}^{n}(y_iln(p_i))+\sum_{i=1}^{n}((1-y_i)ln(1-p_i))\\
\end{split}
\end{equation}
\begin{equation}
\begin{split}
\frac{\partial ln(L)}{\partial \beta_j}=
&\sum_{i=1}^{n}(y_i\frac{1}{p_i}\frac{\partial p_i}{\partial z_i}\frac{\partial z_i}{\partial \beta_j})+\sum_{i=1}^{n}((1-y_i)\frac{-1}{1-p_i}\frac{\partial p_i}{\partial z_i}\frac{\partial z_i}{\partial \beta_j})\\
=&\sum_{i=1}^{n}(y_i\frac{1}{p_i}p_i(1-p_i)\frac{\partial z_i}{\partial \beta_j})+\sum_{i=1}^{n}((1-y_i)\frac{-1}{1-p_i}p_i(1-p_i)\frac{\partial z_i}{\partial \beta_j})\\
=&\sum_{i=1}^{n}(y_i(1-p_i)\frac{\partial z_i}{\partial \beta_j})+\sum_{i=1}^{n}(p_i(y_i-1)\frac{\partial z_i}{\partial \beta_j})
\end{split}
\end{equation}
注意,。
更具体的一点,要分出和
这两种情况:
\begin{equation}
\begin{split}
\frac{\partial ln(L)}{\partial \beta_0}=
&\sum_{i=1}^{n}(y_i(1-p_i))+\sum_{i=1}^{n}(p_i(y_i-1))
\end{split}
\end{equation}
\begin{equation}
\begin{split}
\frac{\partial ln(L)}{\partial \beta_{j_{(j>0)}}}
=&\sum_{i=1}^{n}(y_i(1-p_i)x_{i,j})+\sum_{i=1}^{n}(p_i(y_i-1)x_{i,j})
\end{split}
\end{equation}
根据梯度下降算法求公式的最大值,
的迭代公式是:
\begin{equation}
\beta_j = \beta_j + \mu \frac{\partial ln(L)}{\partial \beta_j}
\end{equation}
其中,是学习速率,通常设置成小于零的数,比如
,也可以根据每轮迭代情况做动态调整。
也有一种做法,对做变形:
,这样
对应的就是固定为1的元素,不再单独区分。
3.信用分
评分卡的分值分配,由比率决定。例如,一个评分卡可以设定,评分每降低20分,违约的比率升高一倍,600分账户的违约比率是620分账户的两倍。每个得分对应一个特定的违约比率,便于控制预期违约账户。
如果借贷客户的逾期概率是,那么正常概率就必然是
。
设
\begin{equation}\label{odds}
Odds = \frac{p_i}{1-p_i}
\end{equation}
公式做个变形,也就有:
\begin{equation}
p_i = \frac{Odds}{1+Odds}
\end{equation}
评分卡的信用分计算:
\begin{equation}\label{score}
Score = A-Bln(Odds)
\end{equation}
其中,A和B是常数。如果违约率p很小,那么是一个正的小数,比如0.01、0.02,表示逾期概率很低,此时
是大的负数,
的分数高。反之可知
的分数低。
计算A和B:
1.设定某个比率为的对应的分值是
,然后,比率为
的点的分值是
。
2.将上述两个设定带入公式,有如下两个等式:
\begin{equation}
p_0 = A-Bln(\theta_0)
\end{equation}
\begin{equation}
p_0 + PDO = A-Bln(2\theta_0)
\end{equation}
3.两个等式联合求解,可得:
\begin{equation}
B = \frac{PDO}{ln(2)}
\end{equation}
\begin{equation}
A = p_0 + Bln(\theta_0)
\end{equation}
4.计算示例,违约比的时候,是合理的违约比,此时对应的分值是
分,违约比每翻倍,分数变小20分,也就是
。那么,根据上述公式可以求出 A=481.86,B=28.85,也就是
。如果
,增加一倍,则
经过计算可得是580.01,四舍五入后是580,符合预期。
信用分分值的分布,由A、B和“理论”的Odds三者决定。“实际”的Odds的分布由决定。因此,对
的计算,跟A和B的计算无关。
4.WOE替换
对于公式Score,可以知:
\begin{equation}\label{score_2}
\begin{split}
Score =&A-Bln(\frac{p_i}{1-p_i})\\
=&A-Bz_i\\
=&A-B(\beta_0+\beta_1x_{i,1}+...+\beta_rx_{i,r})\\
=&A-B\beta_0+(-\beta_1x_{i,1}-...-\beta_rx_{i,r})\\
\end{split}
\end{equation}
对上式来说,是常量,后面的
,前文已说,
是样本
的第
个属性变量,这样的变量一共有
个,因此
根据
的值变动。
计算信用分,还可以进一步简化。根据上式计算信用分,需要和多个参数进行计算,让操作人员使用这些参数从直观上来看,结算结果解释性不清晰,核查每个属性对信用分产生的影响略显复杂。因此,简化的预期是,第一,一线人员不需要记住$A$、$B$、$\beta_j(j-0,1,...,r)$、$p_0$等参数,第二,要知道$x_i$的每个属性变量对信用分的贡献,大小多少。
举例来说,年龄$age$是一个属性。信用分计算使用年龄属性,与其把年龄数值代入公式$(\ref{score_2})$进行计算,不如把年龄进行分段,比如$age<18$是一段,对应一个分值,比如10分,$18\le age\le 35$是一段,对应一个分值,比如20分,$age>35$是一段,对应一个分值,比如15分。这样在计算信用分的时候,根据年龄所在的分段,查找分数。其他属性以此类推,把所有变量对应的分数加起来,再加上基础分,就得到信用分。
如果把年龄进行分段。那么,在优化计算公式$(\ref{ln_L})$的时候,就不能再使用年龄的数值--用什么数据优化才可以用什么数据预测,用年龄数值优化的结果不能用年龄分段值进行预测。因此,每个年龄段需要用这个年龄段对应的一个值,替换掉年龄值,进入公式$(\ref{ln_L})$做计算。
每个年龄段用一个值替换,这个值,在本质上需要能反应该年龄段对判别用户是逾期和正常的“价值”。所谓价值,比如说,全部样本有100个,其中正常的是90个,逾期的是10个,其中,$age<18$的样本有30个,这30个样本里,正常的是10个,逾期的是20个,那么,$age<18$这个年龄段对判断逾期,就是有“价值的”,因为这个年龄段逾期的密度比较高。如果$age<18$的样本有30个,这30个样本里,正常的是27个,逾期的是3个,那么,$age<18$这个年龄段对判断逾期,就是没有“价值的”,因为这个年龄段逾期的密度跟全部样本的逾期密度是一样的。
由此,我们到一个估算一个分段的价值度量,就是Weight of Evidence,就是:
\begin{equation}\label{woe}
WOE_k=ln(\frac{\frac{n_k^{good}}{n_k^{bad}}}{\frac{n_{all}^{good}}{n_{all}^{bad}}})
\end{equation}
其中,$k$表示一个属性的第$k$个分段,$n_k^{good}$表示这个分段对应的样本里正常还款的数量,$n_k^{bad}$表示这个分段对应的样本里逾期还款的数量,$n_{all}^{good}$表示所有样本里正常还款的数量,$n_{all}^{bad}$表示所有样本里逾期还款的数量。
以此类推,可以计算每个属性变量的每个分段的$WOE$
引入$WOE$之后,计算流程如下:
1.对公式$(\ref{big_x})$的每个变量,进行分段。分段方式有多种,也可以根据具体场景自行设计。分段之后,计算每个变量的每个分段的$WOE$值。然后,根据$x_{i,j}$对应的分段,用$WOE_k$替换$x_{i,j}$。最终,公式$(\ref{big_x})$所有的值,都是各种$WOE$的值,不再有$x_{i,j}$的值了。
2.后续其他流程完全不变。
分段在评分卡模型的正式叫法是“分箱”。
\section*{5.评分卡标准形}
引入WOE之后,公式$(\ref{score_2})$变成如下形式:
\begin{equation}\label{score_stand}
\begin{split}
Score =&A-B\beta_0+(-\beta_1x_{i,1}-...-\beta_rx_{i,r})\\
=&A-B\beta_0+\\
&(-\beta_1x_{i,1})+\\
&...\\
&(-\beta_rx_{i,r})\\
=&A-B\beta_0+\\
&(-\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}}))+\\
&...\\
&(-\beta_r(\delta_{i,r,1}WOE_{r,1}+\delta_{i,r,2}WOE_{r,2}+...+\delta_{i,r,k_{r}}WOE_{r,k_{r}}))\\
\end{split}
\end{equation}
其中,$(-\beta_1x_{i,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}}))$替换。$x_{i,1}$是第$i$个样本的第$1$个属性变量,这个数量变量在分段阶段被分为$k_1$段,$WOE_{1,k_{1}}$表示第$k_1$段的$WOE$。$\delta_{i,1,1}$表示,如果变量$x_{i,1}$的值在第1个分段,那么$\delta_{i,1,1}=1$,如果变量$x_{i,1}$的值不在第1个分段,$\delta_{i,1,1}=0$,这个变量的目的是让公式$(\ref{score_stand})$的形式整齐。其他以此类推。
注意,每个属性变量被切分成多少个分段是不确定的,肯定是互相不一样,因此需要分别表示,比如第$r$个属性变量,被切分成$k_r$段。
这样,计算信用分就变成了如下流程:
1.基础分是$A-B\beta_0$
2.对于第一个属性,如果它的值在该第一个分段,增加分值$-\beta_1\delta_{1,1}WOE_{1,1}$,如果它的值在第二个分段,增加分值$-\beta_1\delta_{1,2}WOE_{1,2}$...,由此,计算出第一个属性对应的分值,然后累加到基础分上。
3.以跟2.同样的步骤,处理所有属性变量,得到最终的信用分。
在实际操作上会把$-\beta_j\delta_{i,j,q}WOE_{j,q}$圆整成一个整数。
本文介绍了金融风控中评分卡的构建过程,包括问题描述、优化求解、信用分计算和WOE(Weight of Evidence)替换。通过最大似然估计方法优化线性模型,利用WOE值对特征进行分段,提高模型的解释性和信用分的计算效率。

5057

被折叠的 条评论
为什么被折叠?



