风控评分卡模型原理与应用(七):模型转评分
评分卡模型转评分评分卡最终一般都是以分数的形式输出而不是直接使用逻辑回归模型进行计算。例如对于一个客户最终在逻辑回归模型中的结果是在0-1之间的概率值而最终的评分卡一般是会将逻辑回归模型的结果转化为对客户的打分分数便于理解和查看评分越高代表客户的质量越好。评分卡的分数主要由逻辑回归模型的线性部分转换得来Socreoffsetfactor∗(WXb)Socreoffsetfactor∗(WXb)Socreoffsetfactor∗(WXb)其中offset、factor是待确定参数。而确定offset、factor一般通过设置d、B、k、S四个参数来间接得到offset和factord、B、k、S四个参数的意义如下假设odds为d时评分为B备注odds是坏、好概率比即oddsp1−p\text{odds}\dfrac{p}{1-p}odds1−ppodds每缩小k倍时分数提升S分 ,在设置好d、B、k、S后就可求得offset和factor. d、B、k、S和offset、factor的关系如下factor−Sln(k)offsetBSln(k)∗ln(d)\text{factor} -\dfrac{S}{\ln(k)} \\[10pt] \text{offset} B \dfrac{S}{\ln(k)} *\ln(d)factor−ln(k)SoffsetBln(k)S∗ln(d)在确定了offset和factor后就可以计算模型的基础分和特征分由于Socreoffsetfactor∗(WXb)offsetfactor∗b∑ifactor∗(wixi)\begin{aligned} \text{Socre} \text{offset} \text{factor}*(WXb) \\ \text{offset} \text{factor}*b \sum\limits _{i} \text{factor}*(w_ix_i) \end{aligned}Socreoffsetfactor∗(WXb)offsetfactor∗bi∑factor∗(wixi)即可得到基础分BaseScoreBaseScoreBaseScore和每个特征分FetureScoreiFetureScore_iFetureScorei为BaseScoreoffsetfactor∗bFetureScoreifactor∗(wixi)\text{BaseScore} \text{offset} \text{factor}*b \\ \text{FetureScore}_i \text{factor}*(w_ix_i)BaseScoreoffsetfactor∗bFetureScoreifactor∗(wixi)模型转评分实例假设我们已得到逻辑回归模型如下p11e−(2∗x10.5∗x26)p \dfrac{1}{ 1e ^{-(2*x_10.5*x_26)}}p1e−(2∗x10.5∗x26)1其中x1x_1x1有两种取值x2x_2x2有三种取值,x1,x2x_1,x_2x1,x2的woe值如下现在需要将模型转成评分卡具体过程如下一、设置odd相关参数设置odd相关参数如下d50B600k2S20它的意义为(1) odds每降低2倍(例如从501缩小到251)分数提升20分(2) 当 odds50:1时分数是600分备注这套d、B、k、S设置是比较常用的设置二、计算factor和offset利用BdSk参数计算factor和offsetfactor−Sln(k)−20ln(2)−28.8539offsetB−factor∗ln(d)60028.8539∗ln(50)712.8771\text{factor} -\dfrac{S}{\ln(k)}-\dfrac{20}{\ln(2)}-28.8539 \\[10pt] \begin{aligned}\text{offset} B - \text{factor}*\ln(d) \\60028.8539*\ln(50) 712.8771 \end{aligned}factor−ln(k)S−ln(2)20−28.8539offsetB−factor∗ln(d)60028.8539∗ln(50)712.8771三、计算BaseScore和FetureScore计算基础分由基础分的公式可以算得BaseScoreoffsetfactor∗b712.8771−28.8539∗6539.7537\begin{aligned} \text{BaseScore} \text{offset} \text{factor}*b \\712.8771-28.8539*6539.7537 \end{aligned}BaseScoreoffsetfactor∗b712.8771−28.8539∗6539.7537计算特征得分由特征分公式FetureScoreifactor∗(Wi∗xi)factor∗(Wi∗woei)\small \text{FetureScore}_i \text{factor}*(W_i*x_i)\text{factor}*(W_i*woe_i)FetureScoreifactor∗(Wi∗xi)factor∗(Wi∗woei)算得各个特征得分如下四、最终的评分卡表综合上面计算的基础分和特征得分就可得到最后的评分卡如下模型转评分代码实现importnumpyasnpimportpandasaspd features[x1,x2]# 模型的变量wnp.array([2,0.5])# 模型的权重b6# 模型的阈值dfpd.DataFrame({feature:[x1,x1,x2,x2,x2],# 变量名value:[女,男,已婚,未婚,离异],# 变量取值woe:[-0.1,0.8,-0.2,0.5,1.2]# 变量取值对应的woe})foriinrange(len(features)):# 将模型权重拼接到每个变量中featurefeatures[i]# 当前变量名df.loc[df[feature]feature,w]w[i]# 变量的权重d50# 当odds为50:1时,B600# 分数为600k2# odds每缩小2倍S20# 分数提升20分factor-S/(np.log(k))# 计算factoroffsetB-factor*np.log(d)# 计算offsetdf[score]factor*df[w]*df[woe]# 计算特征得分baseScoreoffsetfactor*b# 计算基础分print(\n特征得分:\n,df)# 打印特征得分print(\n基础分:,baseScore)# 打印基础分参考文章https://www.bbbdata.com/text/67