ITPub博客

首页 > > > R语言信用评分卡:拒绝推断(3) 特征筛选B

R语言信用评分卡:拒绝推断(3) 特征筛选B

作者:浪花小雨滴 时间:2019-02-23 21:58:17 0 删除 编辑

作者:黄天元,复旦大学博士在读,热爱数据科学与R,热衷推广R在工业界与学术界的应用。知乎专栏:R语言数据挖掘 邮箱:huang.tian-yuan@qq.com.欢迎合作交流。

相关连接:

HopeR:R语言信用评分卡:拒绝推断(1) 问题定义

HopeR:R语言信用评分卡:拒绝推断(2) 特征筛选A


前文提要:

Hope现在作为金融风控分析师就职于A金融公司,之前的风控模型在1月份违约率为6.5%,2月份调整之后达到了4.7%,可喜可贺。但是公司领导Kate居安思危,认为目前市场的波动很大,用户的心理和行为的变化很敏感,因此要再次更新模型。Kate让Hope就1、2月份的所有数据(包括放款的数据和未放款的数据),对放款规则进行更新,来获得更加好的效果。就在2月末3月初,Hope开始做这个模型,尝试保持甚至提高3月份的业绩,并对4、5月份的决策做出指导。

现在,我们需要把1月份的数据拿出来,建立模型,对2月份的违约情况做预测。我认为,在最理想的状态下(暂时不考虑模型效果):简单的模型要优于复杂模型;线性模型要优于非线性模型;特征没有任何缺失值要优于包含缺失值。鉴于此,我们先选出最简洁的数据,来做一个最简洁的模型。

下面先做一点简单的清洗:

每一行解释分别为(以%>%作为分割):

1、原始数据raw;2、转化为data.table;3、使用lubridate包提取日期中的月份;4、选取1月份和2月份的数据,并选择label列和所有以f开头的特征列;5、如果label缺失了,那么就剔除掉整个记录(label是用户是否违约的信息,1为违约,0为没有违约);5、从新转化为tibble格式并赋值给raw12。

下面,我们求每一列的缺失比例。

结果如下:

我们把所有没有任何确实的变量提取出来,我们用这些变量来做简洁模型。

现在,raw12complete里面就包含这些记录的月份、是否违约和各种无缺失的特征(共1290个)。目前来说,特征的数量还是非常多,我们准备采用R语言的scorecard包(手动感谢谢士晨大神,帮助文档见Credit Risk Scorecard)对其进行筛选,函数名称为`var_filter`,作用包括:1.去除缺失值大于95%的变量(可调,但是我们已经全部去除了,所以不用管);2.去除变量相似性大于95%的其中一个变量(可调,本质来说如果95%以上的值都相等,不必存在两个);3.去除IV值小于0.02的变量(IV, Information Value,它能够用于衡量一个变量能够提供的区分效力。它是基于WOE编码的一种变量筛选标准,随手转一个帖子信息值IV(infromation value),不过很多地方都有说明)。

这里,我们只先对1月份的数据进行筛选。

结果我们发现,1290个变量筛选剩下708个变量。

这里,我们还没有处理变量之间的共线性问题。关于这个问题,R语言caret包的作者Max Kuhn在他的Applied Predictive Modeling一书中提到过,算法如下:

可喜可贺的是,这个算法天然地用作者caret包的函数findCorrelation实现了,我们把阈值设为0.75,然后对存在共线性的变量进行筛选。

这样我们就得到最后清洗的数据集raw1_washed,稍微看一下数据结构:

只剩下117个变量,其中1个为响应变量label,116个特征。我们终于得到一份可以直接用于建模的数据集。

现在,让我们从简单的逻辑回归(LR)开始尝试。采用这个模型之前,我们要知道这个模型的假设:我们认为特征与违约存在线性关系,而每个变量线性可加地提高了违约的概率。不过我们是不会这么容易就放过这116个特征的,后面还有逐步回归来对变量持续进行筛选。不过上百个特征做逐步没有这么简单,分分钟让你等半天,所以要使用bigstep包的一些函数作为辅助,从而加快我们模型变量的筛选。时间关系就不展开了,感兴趣直接去官网The stepwise procedure for big data。

这样我们得到了一个最终模型,如下:

一百多的变量,最终筛选剩下7个,简直就是一场求职的海选!最后我们组建出一支由特征构造的团队,它们之间的能力重叠程度被控制在很小的范围内,但是对区分是否违约都具有很强的能力,一起进行违约的判断(风险评估)!

那么效果如何?我们用2月份的数据进行一个效果的验证 。

最后结果为:

因为违约比例过少,因此全部认为是好的即可。这是典型的类失衡问题,不过有点累了,明天再说。今天已经完成了变量筛选的部分,尽管是最简单的LR模型做最简单的变量筛选,但是它是继往开来继续迭代的基石。

下面继续要解决的问题:

1、更好的特征工程;2、重采样解决类失衡问题。

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39870