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

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 近年来人工智能的浪潮越来越汹涌,以神经网络、集成模型为代表的机器学习模型在数据挖掘领域中发挥着不可替代的作用。在追求模型高精度的道路上,工业界和学术界也十分关注模型的可解释性,期待从复杂模型中得到更直观的理解。

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

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

相关文章
|
24天前
|
安全 Ubuntu Shell
深入解析 vsftpd 2.3.4 的笑脸漏洞及其检测方法
本文详细解析了 vsftpd 2.3.4 版本中的“笑脸漏洞”,该漏洞允许攻击者通过特定用户名和密码触发后门,获取远程代码执行权限。文章提供了漏洞概述、影响范围及一个 Python 脚本,用于检测目标服务器是否受此漏洞影响。通过连接至目标服务器并尝试登录特定用户名,脚本能够判断服务器是否存在该漏洞,并给出相应的警告信息。
146 84
|
5天前
|
数据可视化 项目管理
个人和团队都好用的年度复盘工具:看板与KPT方法解析
本文带你了解高效方法KPT复盘法(Keep、Problem、Try),结合看板工具,帮助你理清头绪,快速完成年度复盘。
38 7
个人和团队都好用的年度复盘工具:看板与KPT方法解析
|
1月前
|
机器学习/深度学习 人工智能 PyTorch
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
本文探讨了Transformer模型中变长输入序列的优化策略,旨在解决深度学习中常见的计算效率问题。文章首先介绍了批处理变长输入的技术挑战,特别是填充方法导致的资源浪费。随后,提出了多种优化技术,包括动态填充、PyTorch NestedTensors、FlashAttention2和XFormers的memory_efficient_attention。这些技术通过减少冗余计算、优化内存管理和改进计算模式,显著提升了模型的性能。实验结果显示,使用FlashAttention2和无填充策略的组合可以将步骤时间减少至323毫秒,相比未优化版本提升了约2.5倍。
51 3
Transformer模型变长序列优化:解析PyTorch上的FlashAttention2与xFormers
|
13天前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
62 1
|
23天前
|
存储 Java 开发者
浅析JVM方法解析、创建和链接
上一篇文章《你知道Java类是如何被加载的吗?》分析了HotSpot是如何加载Java类的,本文再来分析下Hotspot又是如何解析、创建和链接类方法的。
|
1月前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
78 3
|
2月前
|
JSON PHP 数据格式
PHP解析配置文件的常用方法
INI文件是最常见的配置文件格式之一。
56 12
|
2月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
103 2
|
2月前
|
存储 安全 Linux
Golang的GMP调度模型与源码解析
【11月更文挑战第11天】GMP 调度模型是 Go 语言运行时系统的核心部分,用于高效管理和调度大量协程(goroutine)。它通过少量的操作系统线程(M)和逻辑处理器(P)来调度大量的轻量级协程(G),从而实现高性能的并发处理。GMP 模型通过本地队列和全局队列来减少锁竞争,提高调度效率。在 Go 源码中,`runtime.h` 文件定义了关键数据结构,`schedule()` 和 `findrunnable()` 函数实现了核心调度逻辑。通过深入研究 GMP 模型,可以更好地理解 Go 语言的并发机制。
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
探索深度学习与自然语言处理的前沿技术:Transformer模型的深度解析
118 0

推荐镜像

更多