1. 首页
  2. 科技部落

拍拍贷教你如何用GBDT做评分卡

在各种强有力的算法席卷整个世界的当下,很多风控行业的小伙伴们仍然使用着30多年前就出现的评分卡默默地做着风控模型。现在拍拍贷带你一文穿越30年,让我们进入自动建模的时代,本文中的主要内容是讲如何理解GBDT和评分卡模型,在它们之间建立桥梁,并通过GBDT自动获得评分卡。其中部分内容已经在拍拍贷内部ML平台上工具化并广泛服务于业务部门了。

 

GBDT(梯度提升树)和 评分卡模型

评分卡模型出现于上个世纪80年代。是构建信用模型十分常见并且今天依然活跃的技术。将整个建模过程从损失函数的角度来看,它的优化目标可以写成:minimize:拍拍贷教你如何用GBDT做评分卡,其中logloss是交叉熵,σ是sigmoid函数,i表示数据x的第i个特征,woei表示数据第i个特征的证据权重(Wight of Evidence),wi、b是依靠逻辑回归习得的参数。在评分卡模型中最后的输出是拍拍贷教你如何用GBDT做评分卡,其中c 和 d是两个参数,作用是把分数线性变换到我们熟悉的600分左右的信用分的样子。评分卡模型的训练并不是端到端的,它的基woei是单独训练的,求WoE的优化过程可以看做是对于每一个特征i, minimize:拍拍贷教你如何用GBDT做评分卡,其中拍拍贷教你如何用GBDT做评分卡

GBDT最早在1999年被Jerome H. Friedman提出,在陈天奇做出重大改良xgboost(2014)之后开始流行,现今依然快速的发展着,lightGBM(2016)、CatBoost(2017)等更新的改良也已经被广泛使用。经过近20年的不断发展,GBDT已经成了最具实力的建模算法之一,不管是在实际应用中,还是在比赛刷榜中都能经常见到它的身影。现在我们回到信用建模的领域来看这个算法,如果就二分类问题看GBDT,那么它的优化目标可以写成minimize:拍拍贷教你如何用GBDT做评分卡,其中j表示GBDT中的第j棵树。最后的输出的是拟合得到的概率拍拍贷教你如何用GBDT做评分卡

从损失函数我们可以看到,评分卡模型和梯度提升树的结构十分相似。主要差在两个地方:

1.评分卡模型有常数项b,而GBDT并没有,在训练的时候GBDT的前几棵树会包含这个b的信息,在评分卡模型中,理论上b这一项应该会非常接近拍拍贷教你如何用GBDT做评分卡,事实上评分卡模型就是这样设计的,基准分对标的就是总人群的逾期率。

2.评分卡模型的基WoE拟合的是最终预测值y,而GBDT单棵树拟合的目标是损失函数的梯度(可以视为当前预测和y之间的残差)。

在模型的构建过程中它们也有很多的相通之处:

1. GBDT的发明来自于对逻辑回归的借鉴,解逻辑回归问题的时候,我们通过梯度下降来找到我们的最优参数,Friedman借鉴了这个想法,将它融合在了提升算法中,提出了梯度提升树;而评分卡模型正是依靠逻辑回归找到各个特征之间的权重的。

2. woei(χ)和Tj(χ)都是分段函数,可以帮助找寻特征和目标y之间的非线性关系。

现在,当我们看到30多年前的技术和当前的一线技术有着非常相似的结构时,不得不叹服评分卡发明人的高超智慧,也明白了评分卡模型经久不衰的部分原因。但是毕竟现在是2018年,30多年过去了。让我们更进一步拥抱更高性能,更高自动化的新算法吧。

 

从GBDT构建评分卡

理解了评分卡和GBDT的异同点之后,我们可以开始利用最先进的GBDT十分便捷的做一个更高性能评分卡:

1.预测每个样本的为正样本的概率为总体中正样本的概率:mean(y)。这一步的目的是为了在接下来的梯度提升树的训练中提前加入常数项。我们可以看到,在评分卡模型的损失函数中和在GBDT的损失函数中差了一项b。我们用这样的方式为GBDT补足。损失函数看起来是这个样子的:拍拍贷教你如何用GBDT做评分卡。b有解析解拍拍贷教你如何用GBDT做评分卡

2.使用仅有两个叶子的树在第一步的残差上训练梯度提升树,在这个过程中损失函数看起来会是这个样子的:拍拍贷教你如何用GBDT做评分卡。对于每一个特征,我们找到在这些特征上分叉的所有的树和它们对应的权,将这些函数相加,我们可以得到一个新的分段函数。例如,对于特征i,我们有一组wik*Tik(χ),其中ik指使用i特征的第k棵树。由于我们使用的是两个叶子节点的树,除了i特征不包含其他的特征,此时我们将这棵决策树看作是将这个变量分箱为两个类,并给出相应分箱的分数。我们将这一组决策树的结果相加可以得到拍拍贷教你如何用GBDT做评分卡, 同理,这也是一个分段函数,可以用分箱来表示最后的结果,因此它也可以像WoE一样用来生成评分卡分数。最后我们就可以在这个基础上生成一个评分卡:拍拍贷教你如何用GBDT做评分卡

可以看到通过这种方法,我们可以利用GBDT得到一个高性能的评分卡。而在GBDT的各个现有算法实现中,如何分箱,如何填充空值,如何处理类型变量等很多在原有构建评分卡过程中颇费精力的问题都已经由多年来发展的先进算法解决。(这里有非常多的有趣的内容,但是和我今天的主题关系不大。大家有兴趣的话可以参考相关资料。ⅶ/ⅷ/ⅸ)不需要再人工介入,而且能取得比传统方法更好的效果。基本上,只要提供数据,利用GBDT的现有实现,我们可以全自动化地获得一个高性能评分卡。

 

从GBDT建立评分卡的建模手段的优劣

当完成了基于GBDT的评分卡构建后让我们回过头来看一看通过这种方式构建的评分卡相对与传统方法来说有什么优劣。

  • 我们先看一下使用GBDT的几大好处:

1. 全自动:全自动的类型特征处理(lightGBM, CatBoost);全自动的缺失值处理(xgboost,lightGBM, CatBoost)。

2. 基于残差的基生成,端到端的训练过程:能更好的利用信息,减少分箱时的信息损失,从而有更高的预测精度。相对于评分卡建模流程,一般都能有额外2到3个点的KS增益。

  • 同时我们也不能忘了有得必有失:

1. 由于直接使用GBDT进行训练,未做特征筛选,去除共线性高的特征,可能存在特征之间相互竞争的问题,表现在评分卡中可能是评分卡的可解释性会略有下降。

2. GBDT相对与原评分卡模型,模型的自由度较高,相对容易过拟合。

3. 对于一些重要特征,GBDT可能会区分太细,导致评分分箱太细,评分卡会变得比较大。

4. 变量稳定性从未纳入考虑。可能导致模型稳定性不佳。

  • 对于这些问题,我们一般可以通过合理的调参和一些小技巧来解决。

对于问题1,2我们可以通过引入正则化项比如DART来抗过拟,正则项的加入会平衡特征之间的关系,对于共线性带来的习得参数的剧烈抖动可以起到非常好的抑制作用。

对于问题3,我们可以用普通的决策树去拟合最后的评分卡上的评分,通过限定叶子数来缩小最后生成的评分卡的大小。

对于问题4,虽然使用正则项可以增加模型鲁棒性,但是最好的解决方案还是在训练前直接剔除完全失效的变量。(尚待自动化)

 

还不快上车

当我们将评分卡的生成转换成为GBDT的训练了以后,最大的好处是整个建模流程就可以做到自动化,通过结合GBDT高性能的建模能力,和评分卡的高可解释性和可解读性,提升整个分析部门的数据分析能力。拍拍贷已经在内部开发相关自动建模平台。

另外一个很大的好处是,一旦走上GBDT,我们就可以背靠现在发展迅速的学术圈。很多近期发展的风骚操作就可以走起。在已经学好的模型上,再用多个叶子的树组成的GBDT去拟合残差,那么我们就可以有效地发现一些交叉规则。通过调节训练样本的权重,我们可以让模型更关注较新的数据。通过引入迁移学习,我们可以在小数据上建立有效的模型。总之用了GBDT搭建评分卡后,我们很容易就可以与各种新算法,好算法接轨,从而实现整个风控系统的大跨步发展。

 

参考

ⅰ https://en.wikipedia.org/wiki/Gradient_boosting

ⅱ https://en.wikipedia.org/wiki/Credit_scorecards

ⅲ Friedman, J. H. “Greedy Function Approximation: A Gradient Boosting Machine.” (February 1999)

ⅳ https://xgboost.readthedocs.io/en/latest/

ⅴ Guolin Ke, Qi Meng, Thomas Finley, Taifeng Wang, Wei Chen, Weidong Ma, Qiwei Ye, and Tie-Yan Liu. “LightGBM: A Highly Efficient Gradient Boosting Decision Tree”. In Advances in Neural Information Processing Systems (NIPS), pp. 3149-3157. 2017.

 Anna Veronika Dorogush, Vasily Ershov, Andrey Gulin “CatBoost: gradient boosting with categorical features support”. Workshop on ML Systems at NIPS 2017.

ⅶ Anna Veronika Dorogush, Vasily Ershov, Andrey Gulin “CatBoost: gradient boosting with categorical features support”. Workshop on ML Systems at NIPS 2017.

ⅷ Guolin Ke, Qi Meng, Thomas Finley, Taifeng Wang, Wei Chen, Weidong Ma, Qiwei Ye, and Tie-Yan Liu. “LightGBM: A Highly Efficient Gradient Boosting Decision Tree”. In Advances in Neural Information Processing Systems (NIPS), pp. 3149-3157. 2017.

ⅸ https://xgboost.readthedocs.io/en/latest/

ⅹ DART: Dropouts meet Multiple Additive Regression Trees  https://arxiv.org/abs/1505.01866

没被实际引用,但有需求了解信用评分卡模型的话可以参考这2个链接。评分卡模型出现时间较早,又是从业界发源,原始资料比较少,这个是国内一些从业人员自己整理的,可以拿来参考:

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

https://blog.csdn.net/lll1528238733/article/details/76600598