@77qingliu
2018-05-16T20:51:56.000000Z
字数 3133
阅读 2276
信用评分
证据权重(WOE)转换可以将logistic回归模型转变为标准评分卡格式。
引入WOE转换的目的不是为了提高模型质量,仅仅是让模型结果更直观。
可以参看这篇知乎文章深入理解WOE。
下面我们拿Age(年龄)这个变量来计算相关的woe ,首先对每个level分层统计:
然后计算各分层的好坏占比:
最后通过好坏占比计算WOE
以上就是计算WOE的过程,简单易懂
每个类别的WOE定义如下:
接下来的例子表明,如果用一个已经经过WOE转换的自变量对logistic回归模型进行拟合,则该变量对应的模型参数正好是1.0。
Data CC1;
set CreditCard;
if ResStatus='Other' then RS_WOE=-0.200487;
else if ResStatus='Home Owner' then RS_WOE=-0.019329;
else RS_WOE=0.095564;
run;
/* Fit a logistic regression model with
RS_WOE as an indpendent variable */
proc logistic data=CC1;
model Status(event='1')=RS_WOE;
run;
结果如下:
根据以上结果,可以得到如下结论:
用公式8.5的WOE转换,可以将名义变量x的WOE重新表述为:
下面通过一个例子来阐明上述概念及含义。
用三个名义独立变量的logistic回归模型,模型公式可以用于违约与正常比率的形式表示如下:
变量 | 分类 |
---|---|
对这三个变量进行WOE转换,可以得到新的转换值如下:
宏%CalcWOE使用一个二元因变量DVVar计算一个名义变量IVVar的证据权重,并将结果保存在数据集DSout中。宏的参数如下:
用下例程序对数据集CreditCard
中的变量进行证据权重转行。
%let DsIn=CreditCard;
%let DVVar=Status;
%let IVVar=ResStatus;
%let WOEDS=ResStatus_WOE;
%let DSout=CreditCard_WOE1;
%let WOEVar=ResStatus_WOE;
%CalcWOE(&DsIn, &IVVar, &DVVar, &WOEDs,&woevar,&DSout);
输出如下:
为了将WOE转换应用于连续变量,需将数值分段,以适用WOE的定义。分段方法见之前的笔记,这里选用最优分段方法。
用宏%BinContVar和%ApplyMap2可以实施最优分段。因为要针对所有候选连续自变量调用这个宏,可以引入一个新的宏按照顺序调用这两个宏。宏%BinVar实现这个功能,代码的参数如下: