黑盒模型事后归因解析: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

相关文章
|
1天前
|
存储 缓存 安全
第二章 HTTP请求方法、状态码详解与缓存机制解析
第二章 HTTP请求方法、状态码详解与缓存机制解析
|
2天前
|
机器学习/深度学习 数据采集 人工智能
深度学习中的大模型「幻觉」问题:解析、原因及未来展望
深度学习中的大模型「幻觉」问题:解析、原因及未来展望
12 0
|
2天前
|
XML JavaScript 数据格式
Beautiful Soup 库的工作原理基于解析器和 DOM(文档对象模型)树的概念
【5月更文挑战第10天】Beautiful Soup 使用解析器(如 html.parser, lxml, html5lib)解析HTML/XML文档,构建DOM树。它提供方法查询和操作DOM,如find(), find_all()查找元素,get_text(), get()提取信息。还能修改DOM,添加、修改或删除元素,并通过prettify()输出格式化字符串。它是处理网页数据的利器,尤其在处理不规则结构时。
37 2
|
2天前
|
XML JavaScript Java
详解Java解析XML的四种方法
详解Java解析XML的四种方法
15 1
|
2天前
|
存储 开发框架 .NET
C#中将DataTable转化成ListT的方法解析
C#中将DataTable转化成ListT的方法解析
8 0
|
2天前
项目管理工具计划模板解析:项目管理工具的双重功能与创建方法
本文介绍了项目计划模板的含义和重要性。项目计划模板是用于规划项目结构的可编辑文档,帮助团队明确任务、分配责任和管理时间。模板有助于跟踪项目进度、避免任务冲突,并简化会议安排。创建模板通常涉及选择合适的项目管理工具,如Zoho Projects或Microsoft Excel,然后分解任务、定义日期并持续调整。在Zoho Projects中,用户可以按步骤创建模板,包括命名、添加任务和设置相关细节。
21 0
|
2天前
|
JavaScript 前端开发 算法
vue生命周期函数原理解析,vue阻止事件冒泡方法实现
vue生命周期函数原理解析,vue阻止事件冒泡方法实现
|
2天前
|
JavaScript 大数据 开发者
Node.js的异步I/O模型与事件循环:深度解析
【4月更文挑战第29天】本文深入解析Node.js的异步I/O模型和事件循环机制。Node.js采用单线程与异步I/O,遇到I/O操作时立即返回并继续执行,结果存入回调函数队列。事件循环不断检查并处理I/O事件,通过回调函数通知结果,实现非阻塞和高并发。这种事件驱动编程模型简化了编程,使开发者更专注业务逻辑,为高并发场景提供高效解决方案。
|
2天前
|
机器学习/深度学习 自然语言处理 算法
深度解析深度学习中的优化算法:从梯度下降到自适应方法
【4月更文挑战第28天】 在深度学习模型训练的复杂数学迷宫中,优化算法是寻找最优权重配置的关键导航者。本文将深入探讨几种主流的优化策略,揭示它们如何引导模型收敛至损失函数的最小值。我们将比较经典的批量梯度下降(BGD)、随机梯度下降(SGD)以及动量概念的引入,进一步探索AdaGrad、RMSProp和Adam等自适应学习率方法的原理与实际应用。通过剖析这些算法的理论基础和性能表现,我们旨在为读者提供一个关于选择合适优化器的参考视角。
|
2天前
|
存储 JavaScript 开发者
Vue3中的组件间通信:多种方法解析
【4月更文挑战第20天】
11 1

推荐镜像

更多