看上面抽象的表述看累了?实际操作马上来了。我们用的数据是每个搞风控的人都熟悉的“Give Me Some Credit"数据集。本节会按照列出的六个步骤带你领略评分卡实际构建过程。数据集地址:https://link.zhihu.com/?target=https%3A//www.kaggle.com/c/GiveMeSomeCredit/overview最终示例代码:https://link.zhihu.com/?target=https%3A//www.kaggle.com/orange90/credit-scorecard-example
4.1 数据探究
我们加载kaggle提供的数据集,先看看dataframe长啥样:太长了,不容易看,我们看看摘要好了。可以看到有些column里面是有null value的。我们看看有多少null value:可以看到MonthlyIncome和NumberOfDependents有一些空值。在建模前我们需要对其进行处理。对null值处理有很多策略,例如填中位数,填平均数,甚至拿个模型去预测都行。由于收入差距可能很大,MonthlyIncome填中位数相对合理。NumberOfDependents也可以填中位数,或者平均数,但平均数会变成小数,所以还是取中位数。 可以看到,fillna后就没问题了。其中,变量SeriousDlqin2yrs是我们模型的label。我们可以说1为坏,0为好。这个变量是意思是Serious Delinquent in 2 year,也就是2年内发生严重逾期,其中”严重“定义为逾期超过90天。也就是说。例如你2018年1月1号开卡,每个月1号是还款日。例如你2019年4月1号是你的还款日,然后你在7月1号前都没还钱,那这时候逾期就超过90天了,你的数据标签就为1。可以看到bad rate是0.06684。意味着我们在建模前,也许需要对数据做一个平衡(balancing)。除此之外,其他列的定义如下(定义来自原数据集的Data Dictionary.xls)为了方便阅读,关于其他变量我就不在本文一一探索了,感兴趣的读者可以到https://www.kaggle.com/orange90/credit-scorecard-example里慢慢看,这里有详细的EDA。
qcut和cut的方法及阈值如下:在做特征筛选时,我们怎么判断哪些特征有用,哪些特征没啥用呢?特征筛选有多种方法,其中一种是,我们可以计算IV(Information Value)来判断特征对结果的重要度。计算公式如下: 其中WOE(Weight of Evidence) 定义为:我们写一个计算IV值的函数:在业界实践中,我们把IV<0.02的看作无效特征,0.02<0.1的为弱效果特征,>0.5为强特征,如下表所示。那我们只选择IV值大于0.1的变量吧。计算每个变量的IV值:不同分箱会导致IV值不同,但本文是一个baseline模型,所以未对分箱策略做优化。我们只选择忽略week predictor和unless for prediction的特征,只选择IV值0.1以上的,最后这五个入选