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

相关连接:

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

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

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

HopeR:R语言信用评分卡:拒绝推断(4) 特征工程A

提要:

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

目前进度:

对一月份的数据做了特征工程,并做了一个简单的逻辑回归模型。但是还没有进行验证。

让我们看看之前筛选好的特征:

下面,让我们用1月份的数据构建模型,并对2月份进行预测。

结果如下:

准确率95.06%,感觉还可以。「错杀」21个用户,但是同时也放了284个违约用户进来。

需要注意的是,我们看看Baseline是多少。

这是个什么意思?这就是如果我把所有人都判别为不会违约,就直接得到了95.3%的准确率!

不过仔细想想,我们用于验证的数据集,是已经经过规则筛选之后的用户,也就是公司决定给他们放贷的用户。玩了这么久我们还没有涉及拒绝推断,这些都是「接受推断」。至少我们可以看到,我们建立的模型对「接受」用户的判别能力已经与公司之前的模型没有太大差距(公司做这个模型的时候很可能就是按照这个思路来做的)。但是如果用这个模型来对所有的用户进行评价,究竟会有什么样的效果呢?这个就不得而知了。但是凭这些数据,说Hope的模型就比公司的差,是不可以的。也许Hope的模型在实际操作中会找到更多的合适的用户,从而带来丰厚的利润;不过也可以能接受了更多违约用户,带来损失。这取决于每个交易的盈亏期望。

我们这个模型跟公司的原模型有多大差距?我们来稍微试试看:

解释一下标签:是否违约(label,1是违约,0是没有违约,NA为缺失)、是否借款(tag,0是认为没有违约放款了,1是认为违约了没放款)。这样一来我们可以发现,我们的模型认为很多可以放款的客户,最后都没有放款,这样的人数高达11914个。因为我们设置可以放款的阈值是0.5,其实这个阈值可以设得更加苛刻一些,从而通过「错杀」更多潜在用户来规避风险。

在实际应用中,不妨把相同分布的客户群体分为两份,进行一个AB测试。当然,这个测试是用真金白银在试,所以也不用五五分给两个模型来筛选用户。可以用稳健的模型来判断70~75%的用户(A模型),用稍微新的模型来测试25~30%的用户(B模型)。如果B模型效果比A要好很多,不妨增加B模型筛选用户的比例,甚至完全取代A模型。这里还有一个很有意思的问题,是「最小出模样本」。也就是说,我们至少要用多少的样本量,才能够得到一个稳定有效的模型呢?如果能够求得这个样本量,我们就可以用最低的成本来测试尽可能多的模型。这样,我们的模型组合就非常像一个投资组合,然后通过优化这个模型组合来实现利益最大化。这个高级玩法我会放在后面再实现并测试。

今天就玩到这里,下一步的安排是:

验证交叉验证、bootstrap这些重采样方法究竟有没有用,有多大用处?对于类失衡问题,重采样方法能够起到什么效果?效果多大?


推荐阅读:
相关文章