小蚂蚁说:
2018 年 5 月 21 日,国际顶级数据库会议 DASFAA 2018(International Conference on Database Systems for Advanced Applications)在澳大利亚黄金海岸举办。
本文是蚂蚁金服录用于 DASFAA 的论文 Unpack Local Model Interpretation for GBDT(作者:方文静、周俊、李小龙、朱其立)的简要介绍。
GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和 SVM 一起被认为是泛化能力(generalization)较强的算法,近些年更因为被用于搜索排序的机器学习模型而引起大家关注。
GBDT 模型自被提出以来,一直在有监督的机器学习任务中扮演重要角色,在各种机器学习算法竞赛中数见不鲜,因此对其应用的算法业务中对模型结果解释的需求也日益增加。本文设计并解释了一种 GBDT 模型行之有效的局部解释性方案。
GBDT(Gradient Boosting Decision Tree)模型自被提出以来,一直在有监督的机器学习任务中扮演重要角色,在各种机器学习算法竞赛中数见不鲜。GBDT 是一系列决策树弱分类器的集成,将所有决策树的分值相加获得最终预测结果,由于这种集成方法的本质,GBDT 在众多问题中具有较优的表现,因此吸引了研究者们对算法进行不断优化,出现不同的变式。树形模型虽然在诸多任务上取得比线性模型更好的效果,但线性模型的一大优势在于天然能提供特征重要性的评判,因此在一些需要模型解释的场景,树形模型的应用受到了局限。本文关注为 GBDT 模型及其各种变式,提供一种统一的局部解释方案,对每一个预测样本可以给出各个特征的贡献度,从而对模型预测结果进行归因。
下文是对蚂蚁金服在 DASFAA 的论文 Unpack Local Model Interpretation for GBDT 的介绍,论文链接:
https:// link.springer. com/content/pdf/10.1007%2F978-3-319-91458-9_48.pdf
问题说明
模型解释分为两类,一类是全局的解释性,衡量特征在模型中起的整体作用,另一类是局部的解释性,目的是对一个特定的预测条目,衡量该条样本预测分高的原因。
两类解释具有较大区别,以线性模型的解释为例,对于进行了归一化处理后的特征而言,最终的模型权重绝对值即为全局的特征重要性,因为权值越大该特征对最终分值影响越大,而对于一个取得高分的具体预测实例而言,可能在全局最重要的特征上,其分值较小,在该条样本的得分计算上并无多大贡献,因此对于线性模型单条样本的局部解释性,会使用权值乘以特征值来作为该维特征的贡献度,从而得到各个特征间的重要性排序。
对于 GBDT 模型全局的解释性,Freidman 基于树模型中分裂点对均方误差的影响,提出了评估特征重要性的方法,并被广泛用在特征筛选和模型分析当中。然而,对于对其局部解释性则需要将特征值纳入考虑,希望能够在有解释性需求的场景,对 GBDT 的单条结果提供个性化的解释。
问题分析
对于 GBDT 的局部解释性,需要考虑到几个方面的问题。
第一,不同于线性模型,模型权值与各维特征一一对应,GBDT 这种树形模型的权值存在于叶子结点上,一个叶子结点实际上是从根节点开始,由一系列特征分裂点、特征分裂值决定的一条路径,也就是一个叶节点上的分值是多个特征共同决定的,所以问题的难点就在于需要对单个特征的贡献度进行定义。
第二,由于 GBDT 模型的特点,它的每一棵树拟合的都是当前的残差,同一特征在不同的树上贡献度也是不同的,因为随着残差的逐渐减小,后面的树对最后预测分值的贡献度也是更小的,因此随机森林 RF(Random Forest)模型那种基于样本标签分布变化的局部解释性方案不适用于 GBDT 模型。此外,GBDT 还具有不同的变式,可能采用不同的损失函数和优化策略,解释性方案应该具有通用性。
方法介绍
图 1:GBDT 模型的 PMML 文件
模型解释的关键在于对特征贡献度的定义,需要把分数的计算分配到每个途径的特征上。并且,对于不同的 GBDT 实现来说,虽然其优化的原理和过程有所不同,但最终的模型输出是相同的,即叶节点上的分值。为了不失解释的一般性,我们的方案就基于这些分值和单条样本的各维特征值来计算。
GBDT 的模型可以使用 PMML (Predictive Model Markup Language)的格式来记录,图 1 即为一个 GBDT 模型的训练结果的一部分,记录了其中一棵树的表示。Node 元素标记的是一个树节点,每个树节点还包含了一条断定规则,决定一个样本是落向它还是它的兄弟节点,每一个节点的 id 属性是其唯一标识,只有叶节点拥有 score 属性,也就是一个样本落到该叶节点时获得的分值,可以将图 1 中表示的树画成图 2 的形式。
图 2:GBDT 模型树形表示
观察图 2 中的节点 6、节点 11 和节点 12,由父节点 6 向两个子节点前进的过程中,会对特征 feat5 进行判断,若其小于等于 1.5 则落向节点 11 获得 0.085 的预测分,否则落向节点 12 获得 0.069 的预测分。也就是在这一步的前进当中,由于特征 feat5 的不同,一个样本可能会获得的分值差异为 Sn11 − Sn12 = 0.085 – 0.069 = 0.016,Snk 表示在节点 k 上的得分。所以,可以通过求两个叶节点的平均值获得对节点 6 的分值估计,再通过自底向上回溯的方式,可以将分数回溯到所有中间节点最后到达根节点。分裂特征 f 落到叶节点 c 后的局部的特征贡献(LI:local increment)则可由子节点分值(Sc)与父节点分值(Sp)的差表示:
这样就实现了局部特征贡献度的定义,将分数分摊到各个特征上,图 2 示例的处理结果标识在图 3 当中。蓝色的分值表示中间节点获得的分值估计,边上的橙色
部分表示了经过该条边时的贡献特征和贡献分值。
图 3:分值回溯结果
值得注意的是,从父节点落入左右两个子节点的样本数并不相同,所以在求平均值的时候,为了得到父节点更准确的估计,应该使用样本数进行加权,即:
其中 Sp 表示父节点的分值,Sc1、Sc2 分别表示两个子节点的分值,Nc1、Nc2 则对应训练集中子节点 c1,c2 所包含的样本数。上面的预处理需要在训练阶段,记录下每个节点上的样本数量,再结合模型文件,对所有的树进行预处
理,贡献分值的大小和每棵树上的分值息息相关。
有了预处理好的局部特征贡献度,要得到一个样本预测时的特征重要性解释,只需要获得它在所有树上经过的所有路径上的特征贡献,并按照特征维度进行累积。例如对于图 3 中表示的一条路径 n0->n2->n5->n9->n14,则可计算出特征 feat4 的特征贡献为:
计算可以形式化地表示为:
其中,第一步表示的是计算特征 f 在样本 i、单棵树 m 上的贡献度,第二步表示在所有树上进行贡献度的累加,获得最终贡献度总计。
通过这样两阶段的操作,我们可以获得 GBDT 模型对每个样本预测的局部解释。第一步的预处理过程会提供预测时所需的局部特征贡献,并不会在第二步的预测过程中引入过多的计算而影响预测性能,因此样本解释可以实时获得。
实验结果
我们使用阿里内部基于参数服务器的 GBDT 分布式版本 SMART(Scalable Multiple Additive Regression Tree)进行模型的训练,并记录样本在节点上的分布情况。在预测阶段,使用 JPMML 作为预测器,并修改其代码以支持模型解释的输出。训练样本是支付宝转账交易的部分抽样,其中正样本定义为被用户举报并定性为欺诈的案件。
首先,我们检查了本文局部模型解释方案与全局模型解释方案的一致性。局部模型解释方案是对单条样本进行的,我们对大量样本输出的解释观察时,对于每一维特征存在一个贡献度的分布,我们取这个分布的中位数作为其一般衡量,它应该与全局模型解释对各个特征重要性大小的判断保持一致,分析结果如图 4 所示,橙色、灰色分别表示各个特征的局部、全局解释,具有我们预估的一致性,说明本文 GBDT 的局部解释方案较为可靠。
图 4:特征贡献度中位数(局部解释)和特征重要性(全局解释)
然后,延续上面特征贡献度中位数作为特征重要性评估,我们将其排序结果同随机森林 RF 的局部解释方案进行对比。IV(Information Value)作为一种特征预测力的评测指标,经常被用在特征选择中,我们测试了两种局部解释方案的重要性排序在前 50 位的特征,对比它们对 IV 的前 50 特征的分段覆盖率(为了公平,我们引入了 IV 特征重要性,而不是使用 GBDT 全局特征重要性),二者对比结果如图 5 所示。
图 5:GBDT 和 RF 的局部模型解释对比
其中蓝色 GBDT 表示直接使用子节点平均值作为父节点分值的初始方案,橙色 GBDTV2 表示使用样本个数加权平均的修正方案的结果。可以看出,GBDT 的局部模型解释结果优于 RF,且修正后的方案表现最佳。
最后,我们还通过人工进行具体解释案例检查,分析支付宝交易测试集,发现本文模型解释输出的高风险特征与人工判断一致,并且还能抓出一些全局重要性不高,但在特定样本中属于高风险的特征,验证了结果的可靠性和实用性。
总结
将机器学习模型用作黑盒在很多应用场景中已经远远不够,我们不仅需要模型输出的最终结果,并且还要求对给出的结果进行解释。
此外,模型解释还可以用于模型检查,通过给数据分析师一个直观解释,判断与人工归因的一致性来验证模型的效果,从而使他们相信机器学习模型。另一方面,模型解释也可以用于模型的提高,通过对漏抓、误抓样本的解释,可以对特征进行补充、修改,进而实现模型的更新迭代和效果的进一步提升。
我们提出了被广泛应用的 GBDT 模型的一种通用的局部模型解释方法,先通过对训练的模型进行一步离线预处理,再在预测时候对特征贡献度进行累加和排序,实现对每个样本结果的解释。我们通过实验检验了这一方法,从多个维度说明其有效性,并将它应用到实际业务中,成为一个优秀的“模型翻译官”。
本文转载自公众号蚂蚁金服科技(ID:Ant-Techfin)。
原文链接:
https://mp.weixin.qq.com/s/p2X29wiiZh7vpuLHPbAYZg
评论