黑盒模型事后归因解析:SHAP 方法

简介: 近年来人工智能的浪潮越来越汹涌,以神经网络、集成模型为代表的机器学习模型在数据挖掘领域中发挥着不可替代的作用。在追求模型高精度的道路上,工业界和学术界也十分关注模型的可解释性,期待从复杂模型中得到更直观的理解。

云栖号资讯:【点击查看更多行业资讯
在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来!

近年来人工智能的浪潮越来越汹涌,以神经网络、集成模型为代表的机器学习模型在数据挖掘领域中发挥着不可替代的作用。在追求模型高精度的道路上,工业界和学术界也十分关注模型的可解释性,期待从复杂模型中得到更直观的理解。可解释机器学习作为索信达金融 AI 实验室的重要研究方向之一,包括了内在可解释模型和事后可解释方法。我们希望可以通过一系列文章来介绍解释不同模型的方法,并分享与实际场景相结合的业务与技术心得。

1.Shapley Value

在当今的金融、医疗等数据挖掘的应用领域中,模型的可解释性和精度是同等的重要。众所周知,精度较高的模型,如集成模型,深度学习模型等,内部结构复杂多变,不能直观理解。SHAP,作为一种经典的事后解释框架,可以对每一个样本中的每一个特征变量,计算出其重要性值,达到解释的效果。该值在 SHAP 中被专门称为 Shapley Value。因此 Shapley Value 是 SHAP 方法的核心所在,理解好该值背后的含义将大大有助于我们理解 SHAP 的思想。

1.1 Shapley value 起源

Shapley value 最早由加州大学洛杉矶分校(UCLA)的教授 Lloyd Shapley 提出, 主要是用来解决合作博弈论中的分配均衡问题。Lloyd Shapley 是 2012 年的诺贝尔经济学奖获得者,也是博弈论领域的无冕之王。
我们已有的数据集中会包含很多特征变量,从博弈论的角度,可以把每一个特征变量当成一个玩家。用该数据集去训练模型得到的预测结果, 可以看成众多玩家合作完成一个项目的收益。Shapley value, 通过考虑各个玩家做出的贡献,来公平地分配合作的收益。

1.2 Shapley value 计算

可以通过一个小例子来看如何计算 Shapley Value。
假设:合作项目 Proj=
Players={1,2,…n}, 每个玩家在这个项目中所做的贡献量的特征方程是 v。
定义 Proj=500 行代码,由 3 个程序员完成,这就对应 3 个玩家:1,2,3。
D9E3DF76_3F52_45bc_B2EC_267C3F0B7985
88d1ce70a0c2d1a36eb0d6215765d530
B31789E7_10A4_4442_B1F7_A1A6D7EC5962
635f4896bb7140021d6f6bda4a989332
计算第 i 个玩家的 Shapley Value, 主要是由上图的边际贡献得到。
df78dc0de558271ff7a910a682c466b6
所以按照比例来分配奖金:

  • 玩家 1 分配的奖金为总奖金的 32.3%
  • 玩家 2 分配的奖金为总奖金的 32.3%
  • 玩家 3 分配的奖金为总奖金的 35.3%

2. SHAP 原理

SHAP 全称是 SHapley Additive exPlanation, 属于模型事后解释的方法,可以对复杂机器学习模型进行解释。虽然来源于博弈论,但只是以该思想作为载体。在进行局部解释时,SHAP 的核心是计算其中每个特征变量的 Shapley Value。
SHapley:代表对每个样本中的每一个特征变量,都计算出它的 Shapley Value。
Additive:代表对每一个样本而言,特征变量对应的 shapley value 是可加的。
exPlanation:代表对单个样本的解释,即每个特征变量是如何影响模型的预测值。
当我们进行模型的 SHAP 事后解释时,我们需要明确标记。已知数据集(设有 M 个特征变量,n 个样本),原始模型 f,以及原始模型 f 在数据集上的所有预测值。g 是 SHAP 中用来解释 f 的模型。
19074FDB_DC4B_43d1_9887_AE5A7E446B9F
CDA2E1A6_A390_491a_9EBD_EB9C9F5A1F2F

3. SHAP 分类

ϕi就是众所周知的第 i 个特征变量的 Shapley Value。SHAP 的核心是计算这个理论的 Shapely Value,如果直接计算,由于特征子集的多种可能,上述计算方式的时间复杂度是指数级的。因此围绕着如何计算 Shapley Value,我们根据对 Shapley Value 计算的两种近似方法将 SHAP 分为两大类。

**3.1 Model-agnostic 近似
Kernel SHAP**

3878F147_9039_45d7_8BBF_125607530936

TreeSHAP

树集成模型中包括很多性能优良的黑箱模型,比如随机森林、XGBoost、LightGBM 和 CatBoost,都属于非线性模型。Scott M. Lundberg,Su-In Lee 等提出了 TreeSHAP 来对树模型进行局部解释。相对于 model-agnostic 的局部解释方法,TreeSHAP 不需要抽样,而是通过对树模型中的节点来计算 Shapley Value,具体算法可以参考论文 2。
TreeSHAP 有如下优点:

  1. 计算时间减少
    如果直接用 Shapley Value 的公式来计算,时间复杂度是指数级的,但是 TreeSHAP 将中计算 Shapley Value 的算法进行优化,时间复杂度变为线性,因此可以大大缩短运行时间。
  2. 将局部解释拓展到抓取交互效应
    对于每一个样本, 局部解释会对其中的每一个特征变量计算对应的值。直观来看,这种解释不能让我们直接地看到交互作用。为解决这个问题,TreeSHAP 提供了计算 SHAP interaction value(参考论文 2)的方法来看模型内部的交互作用。
  3. 基于众多局部解释来进行全局解释
    对于整个数据集,可以运用 Shapley Value 来高效准确地获得局部解释性, 即对每个样本的解释,可以帮助我们得到特征变量的全局解释。对于某一个特征变量,TreeSHAP 可以计算出所有样本中对应该变量的 Shapley Value, 将它们的平均值作为该特征的重要性值,从而得到全局解释。

4.SHAP 解释

0B91EA5C_442F_468f_BD77_AE239CE536D7

5. 代码展示

SHAP 可以用来解释很多模型。接下来在台湾银行数据集上用 Tree SHAP 来解释复杂树模型 XGBoost。
Tree Explainer 是专门解释树模型的解释器。用 XGBoost 训练 Tree Explainer。选用任意一个样本来进行解释,计算出它的 Shapley Value,画出 force plot。对于整个数据集,计算每一个样本的 Shapley Value,求平均值可得到 SHAP 的全局解释,画出 summary plot。

#训练 TreeExplainer
explainer=shap.TreeExplainer(clf)
shap_values=explainer.shap_values(test)

#局部解释
shap.force_plot(explainer.expected_value,shap_values[9,:], test.iloc[9,:])
#全局解释
shap.summary_plot(shap_values, test, plot_type="bar")

下图是 Tree SHAP 对任意一个样本画出的 force plot,由于 Treeshap 是对对数几率(log odd ratio)进行解释,所以出现负数。具有负向影响的变量变为 PAY_AMT1 和 LIMIT_BAL 等,具有正向影响的特征变量加入 PAY_AMT6,PAY_0。其他变量的 Shapley Value 由于值太小就不一一列举。

6042a7263955c192088ee648fd5371a1
在 summary plot 中 PAY_0 该特征最重要,其次是 LIMIT_BAL,PAY_AMT1。
f0bea2d3991f5d44745441c8f89f7f69

6. 结语

本文先引入博弈论中的经典问题:如何公平分配每个玩家对项目的收益,来介绍每个玩家的 Shapley Value。通过类比的思想,将数据集中的特征变量当做玩家,模型的预测值当做项目的收益。对于单个样本而言,每个特征变量计算出来的 Shapley Value,可以将其理解为该特征如何影响原始模型的预测值。接下来围绕着如何计算 Shapley Value 提出 SHAP 的两种分类,一种是 Kernel SHAP,对应 model-agnostic 方法。剩下的分类是对特定模型的,其中着重介绍了 TreeSHAP。然后对计算出的 Shapley Value 应用博弈论的方法来进行局部解释,全局解释则是基于众多样本的局部解释而得到。最后用台湾银行信用卡数据集实践了 TreeSHAP,并介绍几种重要的图,包括 force plot、summary plot。

7. 参考资料

LIME: Ribeiro, Marco Tulio, Sameer Singh, and Carlos Guestrin. “Why should i trust you?: Explaining the predictions of any classifier.” Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM, 2016.
Scott M. Lundberg, Su-in Lee. From local explanations to global understanding with explainable AI for trees.2020.
Scott M. Lundberg, Su-in Lee. A Unifified Approach to Interpreting Model Predictions, 2016.

【云栖号在线课堂】每天都有产品技术专家分享!
课程地址:https://yqh.aliyun.com/zhibo

立即加入社群,与专家面对面,及时了解课程最新动态!
【云栖号在线课堂 社群】https://c.tb.cn/F3.Z8gvnK

原文发布时间:2020-05-13
本文作者:索信达AI实验室
本文来自:“InfoQ”,了解相关信息可以关注“InfoQ

相关文章
|
9月前
|
监控 安全 网络安全
深入解析PDCERF:网络安全应急响应的六阶段方法
PDCERF是网络安全应急响应的六阶段方法,涵盖准备、检测、抑制、根除、恢复和跟进。本文详细解析各阶段目标与操作步骤,并附图例,助读者理解与应用,提升组织应对安全事件的能力。
1276 89
|
8月前
|
编解码 缓存 Prometheus
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
本期内容为「ximagine」频道《显示器测试流程》的规范及标准,我们主要使用Calman、DisplayCAL、i1Profiler等软件及CA410、Spyder X、i1Pro 2等设备,是我们目前制作内容数据的重要来源,我们深知所做的仍是比较表面的活儿,和工程师、科研人员相比有着不小的差距,测试并不复杂,但是相当繁琐,收集整理测试无不花费大量时间精力,内容不完善或者有错误的地方,希望大佬指出我们好改进!
547 16
「ximagine」业余爱好者的非专业显示器测试流程规范,同时也是本账号输出内容的数据来源!如何测试显示器?荒岛整理总结出多种测试方法和注意事项,以及粗浅的原理解析!
|
8月前
|
机器学习/深度学习 人工智能 算法
DeepSeek技术报告解析:为什么DeepSeek-R1 可以用低成本训练出高效的模型
DeepSeek-R1 通过创新的训练策略实现了显著的成本降低,同时保持了卓越的模型性能。本文将详细分析其核心训练方法。
1052 11
DeepSeek技术报告解析:为什么DeepSeek-R1 可以用低成本训练出高效的模型
|
7月前
|
JSON 监控 网络协议
Bilibili直播信息流:连接方法与数据解析
本文详细介绍了自行实现B站直播WebSocket连接的完整流程。解析了基于WebSocket的应用层协议结构,涵盖认证包构建、心跳机制维护及数据包解析步骤,为开发者定制直播数据监控提供了完整技术方案。
|
7月前
|
安全 IDE Java
重学Java基础篇—Java Object类常用方法深度解析
Java中,Object类作为所有类的超类,提供了多个核心方法以支持对象的基本行为。其中,`toString()`用于对象的字符串表示,重写时应包含关键信息;`equals()`与`hashCode()`需成对重写,确保对象等价判断的一致性;`getClass()`用于运行时类型识别;`clone()`实现对象复制,需区分浅拷贝与深拷贝;`wait()/notify()`支持线程协作。此外,`finalize()`已过时,建议使用更安全的资源管理方式。合理运用这些方法,并遵循最佳实践,可提升代码质量与健壮性。
212 1
|
7月前
|
传感器 监控 Java
Java代码结构解析:类、方法、主函数(1分钟解剖室)
### Java代码结构简介 掌握Java代码结构如同拥有程序世界的建筑蓝图,类、方法和主函数构成“黄金三角”。类是独立的容器,承载成员变量和方法;方法实现特定功能,参数控制输入环境;主函数是程序入口。常见错误包括类名与文件名不匹配、忘记static修饰符和花括号未闭合。通过实战案例学习电商系统、游戏角色控制和物联网设备监控,理解类的作用、方法类型和主函数任务,避免典型错误,逐步提升编程能力。 **脑图速记法**:类如太空站,方法即舱段;main是发射台,static不能换;文件名对仗,括号要成双;参数是坐标,void不返航。
284 5
|
8月前
|
人工智能 自然语言处理 算法
DeepSeek模型的突破:性能超越R1满血版的关键技术解析
上海AI实验室周伯文团队的最新研究显示,7B版本的DeepSeek模型在性能上超越了R1满血版。该成果强调了计算最优Test-Time Scaling的重要性,并提出了一种创新的“弱到强”优化监督机制的研究思路,区别于传统的“从强到弱”策略。这一方法不仅提升了模型性能,还为未来AI研究提供了新方向。
1169 9
|
9月前
|
自然语言处理
高效团队的秘密:7大团队效能模型解析
3分钟了解7大团队效能模型,有效提升团队绩效。
833 7
高效团队的秘密:7大团队效能模型解析
|
10月前
|
数据可视化 项目管理
个人和团队都好用的年度复盘工具:看板与KPT方法解析
本文带你了解高效方法KPT复盘法(Keep、Problem、Try),结合看板工具,帮助你理清头绪,快速完成年度复盘。
777 7
个人和团队都好用的年度复盘工具:看板与KPT方法解析
|
9月前
|
人工智能 监控 数据可视化
提升开发效率:看板方法的全面解析
随着软件开发复杂度提升,并行开发模式下面临资源分配不均、信息传递延迟及缺乏全局视图等瓶颈问题。看板工具通过任务状态实时可视化、流量效率监控和任务依赖管理,帮助团队直观展示和解决这些瓶颈。未来,结合AI预测和自动化优化,看板工具将更高效地支持并行开发,成为驱动协作与创新的核心支柱。

热门文章

最新文章

推荐镜像

更多
  • DNS