GMTC北京站9折购票倒计时,部分日程已上线,戳此查看 了解详情
写点什么

蚂蚁金服 DASFAA 论文带你深入了解 GBDT 模型

  • 2019 年 9 月 06 日
  • 本文字数:3892 字

    阅读完需:约 13 分钟

蚂蚁金服DASFAA论文带你深入了解GBDT模型

小蚂蚁说:

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


2019 年 9 月 06 日 09:532175
用户头像

发布了 150 篇内容, 共 26.6 次阅读, 收获喜欢 25 次。

关注

评论

发布
暂无评论
发现更多内容

Week 11命题作业

Jeremy

Apache Pulsar 社区周报:08-15 ~ 08-21

Apache Pulsar

云原生 Apache Pulsar 消息系统 消息中间件

Week11作业1

熊威

实用!教学白板跨国低时延互动技术实现指南

ZEGO即构

OSS 全站加速 集群

Flink算子状态-9

小知识点

scala 大数据 flink

用户密码验证函数

周冬辉

加密

【华为云数据库技术大公开】机房失火后,还能拯救你的数据吗?

华为云开发者社区

数据库 机房 华为云 数据存储 云数据库

架构师训练营 第十一周 总结

CR

系统不可用的原因和解决方案

极客李

【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

冰河

高并发 分布式限流 秒杀系统 异步削峰 签约计划第二季

技术揭秘:华为云DLI背后的核心计算引擎

华为云开发者社区

大数据 spark 数据湖 华为云 DLI

架构师训练营第 0 期第 11 周作业

无名氏

云上度假村木莲庄酒店助你远离城市的喧嚣

InfoQ_967a83c6d0d7

java安全编码指南之:拒绝Denial of Service

程序那些事

Java 安全编码指南 java安全编码 DOS攻击 zip炸弹

奈学:Executor线程池的概述

奈学教育

线程池 Executor

奈学:Executor线程池的概述

古月木易

线程池 Executor

90%的开发都没搞懂的CI和CD!

禅道项目管理

ci DevOps 持续集成 持续交付 持续部署

极客大学架构师训练营 0 期 week 11 作业

chun1123

高可用 密码校验

安全架构和高可用系统的架构

周冬辉

高可用系统的架构

Newbe.Claptrap 框架入门,第四步 —— 利用 Minion,商品下单

newbe36524

云计算 微服务 dock .net core ASP.NET Core

漫画解读:唐僧师徒如何帮助大唐官网打造CDN+OSS完美架构?

阿里云Edge Plus

第十一周命题作业

菲尼克斯

Week11总结

熊威

浅谈业务系统设计哲学

滴滴普惠出行

有了MDL锁视图,业务死锁从此一目了然

华为云开发者社区

MySQL 数据库 华为云 MDL锁视图 元数据

Week 11 作业

鱼_XueTr

极客时间架构师训练营 - week11 - 作业 2

jjn0703

极客大学架构师训练营

高可用的系统架构

莫莫大人

极客大学架构师训练营

用户密码验证函数

任小龙

架构师训练营 - 第 11 周作业

Jam

第十一周学习总结

菲尼克斯

蚂蚁金服DASFAA论文带你深入了解GBDT模型_文化 & 方法_Geek_cb7643_InfoQ精选文章