内在可解释模型之RuleFit
文 | 何悦 (机器学习算法专家)
本文来自索信达控股旗下的金融人工智能实验室团队,微信公众号(datamargin)将不定期推送原创AI科学文章。我们的作品都是由实战经验丰富的AI科学技术人员或资深顾问精心准备,志在分享结合实际业务的理论应用和心得体会。
可解释机器学习领域既包括以树模型,广义加性模型为代表的内在可解释模型,也包括对复杂模型的事后解释方法。内在可解释模型在精度上会稍逊于复杂模型,但是本身具有强大的解释性,在金融银行业等风控领域也是非常有应用前景的。本文要介绍的RuleFit模型属于内在可解释模型,相对于逻辑回归,决策树等传统模型,RuleFit精度更高,同时解释性很强。索信达AI实验室后续也会介绍一系列内在可解释算法,如Falling Rule Lists等。 (已发布)
1. 背景导语
2. RuleFit 简介
3. RuleFit 优势
4. RuleFit 原理
4.1 规则生成
4.2 规则拟合
4.3 线性基函数
5. RuleFit 解释
5.1 规则变量和特征变量的重要性度量
5.2 最具影响力的输入特征
6. RuleFit 代码实践
6.1 评估模型质量
6.2 场景实践
7.参考资料
1. 背景导语
提到规则筛选, 人们常常联想到银行的风控场景。银行内部采用的方法是通过经验得到的规则筛选有潜在风险的客户。然而这样的方法非常基础以及局限,不仅是因为人类的经验是有限的,而且通过众多规则抓取到的空间是线性的。如何找到重要的规则,并抓取到规则之间的交互信息,并使用合理的方法来计算规则的重要性是亟待解决的问题。
RuleFit模型将树模型中的规则融入广义加性模型,先从复杂模型中找到具有代表性的规则,将其当成新的变量,并加入原始特征变量,一起入模来训练广义加性模型。规则天然的可解释性和广义加性模型的易理解性使得该模型被归入内在可解释模型。相对于逻辑回归模型,RuleFit加入了规则变量的信息;相对于决策树模型,RuleFit加入了线性回归部分。因此在精度上, RuleFit也有提升。简单来说,RuleFit主要包含两种模型,Rule Based Model和Rule &Linear Based Model。后者是前者的升级版,适用于银行里信噪比低的数据集。
2. RuleFit 简介

3. RuleFit优势
看了上面的RuleFit简介,大家一定会有似曾相识的感觉。对的,你没看错,Facebook在2014年曾提出算法GBDT+LR来解决二分类问题,并在工业界的场景中得到很好的反响。众所周知,GBDT更适合处理稠密特征,将根节点到每一个叶子节点的路径提取出来,也就是上面RuleFit产生的规则。接着对这些规则变量进行逻辑回归拟合。
提取GBDT中的叶子节点产生的规则之后,数据将会变得高维稀疏,这时采用逻辑回归来拟合,效果会变好。具体的优势如下:
(1)逻辑回归算法简单,能够处理高维度稀疏数据。但是人工难以找到合适的特征组合。所以GBDT的叶子节点相当于是对原始特征进行了特征组合,将数据高维化,使其线性可分。
(2)GBDT对连续特征划分能力强,可以找到有区分性的特征和特征组合。在逻辑回归模型中,将连续特征离散化之后入模可以增强模型的稳健性。
相对于GBDT+LR算法,RuleFit对于规则的挑选范围更广,不仅仅是叶子节点,还会包括内节点。如果只有根节点到叶子节点的规则,会产生很多冗余的高阶交互项。而RuleFit中加入了从根节点到内节点的规则,会抓取到低阶交互项。同时升级版的RuleFit还会加入原始特征进去。
由此可见,GBDT+LR的优势RuleFit全都保留,同时RuleFit在此基础上还有两大改进,一方面是包括了低阶交互项,另一方面是加入了原始特征的信息,使得模型的精度和解释性都得到了很大的提高。
4. RuleFit 原理
RuleFit算法的运行流程如下:
训练过程主要分为两步,步骤一是训练M个基分类器(通常使用随机森林或者GBDT),生成规则。步骤二是对规则加惩罚项进行线性拟合。如果想要升级版,则可以在原有的全部规则基础上再加入由原始特征构成的线性基函数,来训练模型。

4.1 规则生成
当我们构建一棵决策树模型时,从根节点开始到每个非根节点都会生成一条规则。

从上面的决策树图中,可以看到共有9个节点,8条规则。
根节点(root node):编号0
内节点(interior node):编号1,2,4
叶子节点(leaf node):编号3,5,6,7,8

规则的定义是,从根节点到任一非根节点(内节点或者叶子节点)的一条路径可被当做是一条规则。上图中共有8条规则,分别是:从节点0到节点1,从节点0到节点2,从节点0到节点3,从节点0到节点4,从节点0到节点5,从节点0到节点6,从节点0到节点7,从节点0到节点8。
每条规则的具体表示如下:

那么每一条规则是要如何表示呢?

4.2 规则拟合

4.3 线性基函数

5. RuleFit 解释

5.1 规则变量和特征变量的重要性度量

对波士顿房价数据集使用RuleFit,根据上述重要性的计算方式得到排名前4的规则和变量是:LSTAT(人口中地位低下者的比例),AGE(年龄),DIS<1.40&PTRATIO>17.9&LSTAT<10.5(到波士顿五个中心区域的加权距离<1.4以及城镇师生比例>17.9以及人口中地位低下者的比例<10.5), RM>6.62&NOX<0.67(住宅平均房间数>6.62以及一氧化氮浓度<0.67)

从局部的角度来看样本中的变量重要性的计算方法:

5.2 最具影响力的输入特征

展示在整个波士顿房价数据集中13个输入特征的重要性:LSTAT的重要性排名最高,其次是RM。

接着从局部解释角度来展示Manchester样本中各个变量的重要性:与全局重要性排名第一的LSTAT不同,可以看到RM这个特征在该样本中的重要性最高,接下来才是LSTAT。

6. RuleFit 代码实践
6.1 评估模型质量
为了更好地看到RuleFit的效果,接下来将比较4种不同的模型表现:Random Forest, GBDT, RuleFit1(从Random Forest中选取2000条规则),RuleFit2(从Random Forest中选取1000条规则)。
在100个不同的回归数据集中,以绝对误差均值(absolute mean error)作为评价指标,100个数据集会得到100个absolute mean error, 计算其中位数,中位数越小代表该模型的性能越好。

由上图可以看到,RuleFit1的表现最好,其次是RuleFit2。接着为了看模型的相对效果,计算了comparative mean error,基准是每次表现最差的模型,同样是RuleFit1效果最佳。

在100个二分类数据集中,计算了100个数据集在4个模型下的错误率(error rate), 可以看到RuleFit1的表现也依旧优于其他模型。但是从箱线图中可以看到模型表现并不是很稳定,可能是由于每次模型训练时抽出的规则具有随机性导致的。

同样地,也看了4个模型的相对表现,计算comparative error rate,基准模型是每次表现最差的模型。

6.2 场景实践
在台湾银行的二分类数据集中,有3万个样本和23个变量,目标变量是预测客户下个月是否违约。对数据集进行简单的缺失值处理后,使用RuleFit从GBDT中提取规则后,加入线性部分进行二次拟合,训练模型。
模型训练结束后,我们可以看到提取的是哪些规则及其对应的重要性。根据重要性的排序,我们可以找到排名靠前的变量或者规则,供使用者解释,也可以尝试用在特征工程中,继续优化。

上图展示了重要性值靠前的16个变量和规则。第一列rule代表的是入模的变量和规则的名称,第二列是其类型,规则或者是线性变量,第三列是系数,第四列是支持度,代表有多少比例的样本满足该规则,变量类型全部为1,最后一列是重要性值,也是我们最关注的数据。可以看到重要性排第一的规则是:PAY_0 > 1.5 & BILL_AMT1 > 2207.5的重要性高达0.53,系数为1.81,代表着当用户的特征PAY_0大于1.5以及BILL_AMT1 大于2207.5时,对模型的预测值有一个正的影响,即更倾向于在下个月违约。通过这种规则的解释,也会让使用者更加理解模型的预测方式,从而更好的理解结果。
7.参考资料
[1] Friedman, J.H., and Popescu, B.E.(2008).Predictive Learning via Rule Ensembles. The Annals of Applied Statistics.
[2] Friedman, J.H., and Popescu, B.E.(2003). Importance Sampled Learning Ensembles. Journal of Machine Learning.