ITPub博客

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

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

作者:浪花小雨滴 时间:2019-02-22 21:12:01 0 删除 编辑

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


相关链接:

HopeR:R语言信用评分卡:拒绝推断(1) 问题定义​zhuanlan.zhihu.com图标


前文提要:

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


我们现在有1、2月份的数据,想要订立规则指导3月份的风险评估。首先,我们利用1月份的数据作为基础,建立模型,看是否能够正确评估2月份的违约情况。通过观察,我们发现数据框中一共有6745个特征。这是非常之多的,最后入模的特征肯定不能这么多。在做特征筛选和特征工程之前,我们先要对我们“理想中的模型”有一个大致的猜想,这样才能够往目标方向靠拢。

理想中的模型,特征不可能太少。如果特征太少,这个问题就成为一个公式定理一般的简单问题,这倒是很开心。也许在特定的一些时期,真的用非常少的特征就能够对一个用户是否违约作出判断,如果真的是这样,也不需要做什么模型,一个相关分析就能够筛选出这个特征。不过能够用尽量少的特征来做尽量好的模型一直都是我们所追求的。

理想中的模型,特征不可能太多。如果特征过多,那么这个模型的鲁棒性(稳定性)肯定是很差的。我们知道,模型依赖的特征越多,如果某个特征发生变化的话,模型就会失效。诸如深度学习训练出来的模型,无论短期内如何准确,都很容易在短时间内失效。唯一能够不让模型失效的方法,就是挖掘出“真理”,这就是找到真正决定用户是否违约的特征和这些特征是如何来影响违约率的。

这里我们要对6745个特征进行筛选,也就是有的特征对于我们这个问题而言不是那么重要。在比赛TOP1的结果中(吊车尾:第三届融360天机-智能金融算法挑战赛多场景金融赛题--TOP1方案),我们看到了其中一种解决方案:

这是一个可行性极高的方案(如果不是最高的话)。建模本身是为了降低不确定性的一个过程,如果入模特征中包含缺失值,无疑大大提高了不确定性。在做评分卡模型的时候,我认为首推整列删除,而行删除是不可行的。因为要预测的数据中也会包含缺失值,我们可以说我们不用这个特征来评价用户是否违约,但是不可能说因为用户这个特征缺失了,我们就告诉老板我们没法对这个用户是否违约进行判断了。

除了删除之外,还有一种处理方法是插值。缺失值的插补在没有先验假设的前提下,是一个零和博弈。如果特征变量缺失了,可以采用均值、众数进行插值。但是,缺了就是缺了,怎么可能随便补?其实数值型的插值是极其不靠谱的,缺得多的时候,可能会对模型起到误导作用。在多重插补法中,会对这个特征的分布进行一个模拟,然后进行插补,这样会额外引入随机性。插补实在是一个“不是办法的办法”。另一种稍微靠谱的方法是KNN插值,它的前提假设是:如果两个记录在很多特征表现上都相似,那么在一方缺失而另一方不缺失的特征也一样。因此,秉承着“相似相同”的理念,可以给记录互相进行插值。这种插值方法是无法提高信息量的,依然是“自欺欺人”。唯一可行的办法只有:知道为什么缺,然后让它不缺。

也就是说,要了解缺失的原因,然后让它不缺。比如有的用户不愿意填写部分信息,那么我们是否可以在设置问卷的时候,就强制让客户填写?或者如果没有填写的,是否可以作为单独的一类(不愿意回答,本身也是能够表征用户是否违约的重要信息)?如果是通过调查而获得的数据,而这个项目又及其难以调查得到有助于区分客户好坏的特征,那么是否应该考虑不再调查?或者通过别的项目侧面反映这方面的信息?

没错,数据可能不如意,而功夫更在数据外。解决缺失最好的办法既不是删除也不是插补,而是在最初就不要缺!模型就是为了通过有区分度的特征根据一定的规则来对放贷风险进行评估,最应该考虑的就是从源头处解决缺失问题,从而获得具有区分度的优秀特征。而这个工作本身,就应该派专员来落实,而不是一味让数据分析师想办法对缺失值进行“处理”。

为了继续我们的试验,这个缺失还是要进行处理的。那么缺多少(百分比)的特征应该删掉呢?这个东西往往来自经验。在TOP1的例子中,缺失70%的变量自动删除,其他保留。这里,我要提出一种新的策略,就是“缺失值零容忍”。

本部分的目标就是:选出我们认为合适的特征。数据的样本量比较大,没必要先进行插值再建模,而是用一定策略把毫无缺失的数据提取出来,然后看看哪些特征比较重要,然后再想办法对这些特征进行填补建模(实际场景中,建议不是填补,而是加强对这些强特征的采集使其不缺失)。因此我们先不用所谓的“大数据”来获得所谓的“最佳”效果,而是筛选“厚数据”(质量高的数据)来对核心特征进行筛选,然后再重点考虑这些入模特征。具体尝试,且听下回分解。

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

下一篇: NoSql数据库
请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    39870