taoCMS是基于php+sqlite/mysql的国内最小(100Kb左右)的功能完善的CMS管理系统

评分卡模型构建介绍

2017-09-07

https://zhuanlan.zhihu.com/p/27770760


终于要写点什么了,这次讲讲评分卡构建流程。评分卡是银行非常喜欢用的模型,现在很多P2P也用。主要分为申请评分卡,行为评分卡,催收评分卡。下面我就梳理下评分卡的各个环节,文中很多材料知识都非原创,敬请留意。


变量选择:

选择上基本几个方面,客户物理属性,贷前贷中贷后的表现,这里不多叙述,比如逾期,余额等,此处不多叙述。

实际中,在实际应用场景,很多很根据业务背景,构造特征变量(或者称为衍生变量),

形如

x,y和z都是变量,a和b是系数,当然还有很多形式,这方面我请教过很多人,似乎并没有可以套用的经验模板,只能看各位的脑洞了。

而因变量,一般选舆情90天以上的客户标记为0(坏客户),其他为1(好客户)


变量筛选

这里学校的理论都有一堆。

单变量:归一化,离散化,缺失值处理

多变量:降维,相关系数,卡方检验,信息增益。决策树等。

这里讲一种行业经常用的基于IV值进行筛选的方式。

首先引入概念和公式。

IV的全称是Information Value,中文意思是信息价值,或者信息量。

求IV值得先求woe值,这里又引入woe的概念。

WOE的全称是“Weight of Evidence”,即证据权重。

首先把变量分组(怎么分后面说),然后对于每个组i,对于第i组有:

其中 是第i组坏客户数量(bad), 是整体坏客户数量。同理,G就是good,好客户的意思。


woe反映的是在自变量每个分组下违约用户对正常用户占比和总体中违约用户对正常用户占比之间的差异;从而可以直观的认为woe蕴含了自变量取值对于目标变量(违约概率)的影响

而IV值得公式如下:

我们可以看到IV值其实是woe值加权求和。这个加权主要是消除掉各分组中数量差异带来的误差。

比如如果只用woe的绝对值求和,如果一些分组中,A组数量很小,B组数量很大(显然这样的分组不合理),这是B的woe值就很小,A组很大,求和的woe也不会小,显然这样不合理。比如:

最后我们可以根据每个变量VI值的大小排序去筛选变量。VI越大的越要保留。


变量处理

变量离散化:

评分卡模型用的是logistics,基本上都需要变量离散化后,效果才比较好。

离散化一般有几种方式:合并和切割。

合并:先把变量分为N份,然后两两合并,看是否满足停止合并条件。

切割:先把变量一分为二,看切割前后是否满足某个条件,满足则再切割。


而所谓的条件,一般有两种,卡方检验,信息增益。

传送门:卡方检验 卡方检验-百度百科<span class="icon-external" style="box-sizing: inherit; font-size: 24px; speak: none; line-height: 1; -webkit-font-smoothing: antialiased; width: 16px; height: 16px; display: inline-block; background-image: url("data:image/svg+xml;utf8,"); background-size: cover; background-position: 0px 2px; font-family: icomoon !important;">

信息增益 百度百科-信息增益<span class="icon-external" style="box-sizing: inherit; font-size: 24px; speak: none; line-height: 1; -webkit-font-smoothing: antialiased; width: 16px; height: 16px; display: inline-block; background-image: url("data:image/svg+xml;utf8,"); background-size: cover; background-position: 0px 2px; font-family: icomoon !important;">

所以流程总结下来就是

哑变量:

当一些变量是非等级的字符串变量怎么办呢?

比如职业ABC,有的人写成123,其实这样就会有很大误差,ABC3种职业本无关系,但变为123后,1 2之间和1 3之间,似乎前者更加密切,对于模型来说(2-1<3-1)。所以我们需要将其变成哑变量。形如:

N组变量用M个变量的0和1来代替(M肯定小于N),在用这些新变量拟合模型。


构建评分卡

首先肯定是拟合logistics模型,用SAS,R,PYTHON,SPSS都可以,你开心就好。

一般出来各种系数和检验值。最后模型的形状形如:

而回到评分卡,我们需要将logistics回归结果衍生成评分卡,一般除了每个变量每个分组对应一个分值,还得加个基础分。所以有如下公式:

一般行业规则,一般设定当odds为50时,score为600;

Odds翻倍时,score+20,所以有如下公式:

这样我们就能得到新鲜出炉的评分卡了!

后面我们就把变量离散化后每组对应的woe值代进模型就好了。

比如这样图,如果拟合出来的模型为:

我们只用把该客户对应的woe值代进模型就可以了。

比如客户最近一次购买金额是<100元,woe为-0.74,模型中就是1.5*-0.74,以此类推。

模型优化

根据KS值图

横轴是总体累积率,纵轴是各样本累积率

蓝色是坏客户的占比,红色是好客户的占比,两者都会随着横轴总体累积率的变化而变。但两者差距最大时,为KS值。

如在60%的时候KS值取得最大,此时将模型里面算出的P值(odds)排序,往下取60%时的P值,将60时的P值作为新的阈值,效果往往会有所提升。

模型检验

1.KS值图

上面说过,此处不再叙述。

2.ROC曲线

召唤经典级交叉矩阵

(1)True Positive Rate,敏感度,召回率计算公式为TPR=TP/(TP+FN)

(2)False Positive Rate,简称为FPR,计算公式为FPR=FP/(FP+TN)

(3)Precision=TP/(TP+FP),或2TP/((TP+FN)+(TP+FP))。

(4)真负类率(True Negative Rate,TNR),也称为specificity,计算公式为TNR=TN/ (FPTN) = 1 - FPR

此时根据每段的百分比,可以列出下图的数据:

然后根据数据可以得到下图。

折线下方的面积我们称为AUC,如果AUC接近0.5,就是说和随机没什么区别,AUC越大越好(当然过大可能是过拟合)

3.Lift曲线


Lift=命中率/真实中正例的比例

横坐标Depth为预测成正例的比例

在模型中,随着改变阈值p,命中率会随之改变,lift曲线中横坐标就是改变阈值p下正比例的变化,纵坐标是lift提升度。比如命中率是80%,原来好坏比是1.1,那样就提高了1.6。

一般来说,在depth为1前,lift越大于1越好。

总结

一般来说,构建的过程大致是和业务聊聊天,开下脑洞想想怎么构建特征工程,然后变量离散化,扔进logistics模型,根据KS图改下P值。不爽的话改下特征工程变量中各系数,然后再来一遍离散化,进入模型,优化,检验。。。。。。

最后小弟才疏学浅,有所不知,请指教~

类别:未分组 | 阅读:1306 | 评论:0 | 标签:

想收藏或者和大家分享这篇好文章→

公告

taoCMS发布taoCMS2.5Beta5(最后更新14年05月25日),请大家速速升级,欢迎大家试用和提出您宝贵的意见建议。

捐助与联系

☟请使用新浪微博联系我☟

☟在github上follow我☟

标签云