当前位置: 首页 > news >正文

四个自定义 SHAP 图

超越 Python 包,创建 SHAP 值的定制可视化

img

SHAP 值是了解模型如何进行预测的绝佳工具。SHAP 包提供了许多可视化效果,使这个过程更加简单。话虽如此,我们不必完全依赖这个包。我们可以通过创建自己的 SHAP 图来进一步了解模型的工作原理。在本文中,我们将解释四个定制的 SHAP 图以及您可以从中学到什么。您可以在GitHub1上找到用于创建这些图的代码。

讨论的图表之一是图 1 中的瀑布图。这是一种可视化单个预测的 SHAP 值的好方法。模型做出的每个预测都会有自己的瀑布图。它可以用来准确解释每个特征对最终预测的贡献。例如,这只鲍鱼的壳重量使预测的环数减少了 1.82。

图 1:使用鲍鱼数据集和 XGBoost 创建的瀑布图

要创建此图,我们首先必须使用 SHAP 包计算 SHAP 值。然后我们将这些值传递到提供的瀑布图函数中。还有许多其他可用的图,但我们不一定非要使用它们。一旦我们有了 SHAP 值,我们就可以自由地创建自己的可视化效果。现在,让我们深入研究第一个。

图 1:SHAP 相关热图

正如我们在瀑布图中看到的,对于给定的预测,模型中的每个特征都会有一个 SHAP 值。我们能够计算这些 SHAP 值在所有预测中的相关性。对每个成对特征组合执行此操作,我们可以构建一个 SHAP 相关性热图,如图 2 所示。在这里我们可以看到,例如,鲍鱼壳直径(diameter)和高度(height)的 SHAP 值的相关性为 0.4。

图2:SHAP相关矩阵

我们可以将其与图 3 所示的标准相关性热图进行比较。这是使用特征值创建的,可以告诉我们特征是否相关。换句话说,它可以告诉我们两个特征是否倾向于朝相同方向或相反方向移动。另一方面,SHAP 值给出了特征对预测的贡献。因此,SHAP 相关性将告诉我们两个特征是否倾向于将预测移向同一方向。

图3:标准相关矩阵

我们已经看到一些差异。请注意,在图 3 中,整重和去壳重呈正相关 (1)。相比之下,这些特征的 SHAP 值呈负相关 (-0.5)。即使这些特征朝同一方向移动,它们的贡献也倾向于将预测朝相反的方向移动。直观地看,这可能看起来很奇怪。一个可能的原因是这两个特征之间存在相互作用。

另一个区别是 SHAP 相关性可以针对连续变量和分类变量进行计算。这是因为无论针对哪个特征计算 SHAP 值,它们始终都是连续的。这就是为什么三个二元变量(即 sex.I、sex.M 和 sex.F)包含在 SHAP 相关性热图中,而不是标准相关性热图中的原因。

2:调整后的瀑布图

下一个图更像是对现有 SHAP 图的补充。在文章开头的图 1 中,我们查看了瀑布图。我们可以通过添加一些其他信息来了解有关预测的更多信息。查看图 4,我们添加了该鲍鱼的实际环数(即 y=7)。我们还为每个特征添加了分布图。红线表示该特征的平均值。虚线表示用于进行预测的实际特征值。

图 4:具有特征分布的瀑布图

图 5 是可视化此信息的另一种方式。此处,特征被色块包围,其中颜色由特征的值决定。我们坚持 SHAP 包使用的惯例。如果特征的值相对于该特征的平均值较低,则该块将更蓝。如果特征值较高,则该块将为红色。在图 4 中,我们可以看到大多数特征值低于平均值(即红线左侧)。这对应于您在图 5 中看到的所有蓝色块。

图 5:带有特征颜色的瀑布图

通过在上图中包括实际环数 y,我们能够看到模型对这只鲍鱼的准确度。如果我们发现预测与实际值有很大差异,我们对 SHAP 值的解释可能会改变。在我们的例子中,预测值非常接近实际值。如果它们不同,我们可能会查看瀑布图以了解是否有任何特征导致了错误的预测。

通过添加分布图或色块,我们为特征值提供了背景信息。这使我们能够更全面地解释模型做出该预测的原因。之前我们可以看到哪个因素对预测贡献最大。现在,我们可以开始理解为什么该特征如此重要。为了更好地理解这一点,让我们使用银行业的一个示例。

img

假设我们建立一个用于接受/拒绝贷款申请的模型。月收入可能是一个重要因素。随着这一特征的下降,您更有可能拖欠贷款。假设该模型拒绝了一项申请。之前我们可以说,“我们拒绝了您的申请,您的月收入是这一决定的主要驱动因素”。现在,通过调整后的瀑布图之一,我们可以说,“我们拒绝了您的申请。这是因为您的月收入远低于我们的平均客户。”

图 3:交互热图

接下来我们将要看的两个图是 SHAP 交互值的可视化。如果您不熟悉这些,我建议您阅读一下分析与 SHAP 的相互作用这篇文章。我们将更深入地介绍如何解释这些值。总而言之,对于给定的预测,我们将有一个 SHAP 交互值矩阵。矩阵的对角线给出主效应,非对角线给出交互效应。每个预测都会有一个这样的矩阵。

为了创建第三个图,我们首先计算所有交互值矩阵中每个单元格的绝对平均值。交互效应减半,因此我们还将对角线外的数值乘以 2。然后我们可以将其显示为热图,如图 6 所示。热图将围绕对角线对称,因此我们仅显示下半部分。

图 6:SHAP 相互作用值热图

该图与均值 SHAP 图类似,因为它可以突出显示重要特征。但现在,我们可以突出显示重要的主效应和交互效应。例如,我们可以看到经验、学位、绩效和销售额的平均主效应很大。这告诉我们,这些特征往往会对模型的预测产生重大影响。同样,我们可以看到经验.学位和绩效.销售额交互效应很显著。

图 4:交互瀑布图

我们的最后一张图是 SHAP 交互值的瀑布图。这可以以与普通瀑布图相同的方式进行解释。但现在我们无法看到主效应和交互效应如何对预测做出贡献。例如,经验主效应使预测奖金增加了 35.99 美元。同样,经验.程度交互效应使预测奖金增加了 13.76 美元。

图 7:交互瀑布图

如果您查看用于创建此图的代码,您会发现我们非常狡猾。问题是 SHAP 包没有提供可视化预测交互值的方法。经过一些工作,我们就可以使用为正常 SHAP 值创建瀑布图的函数。如图 8 所示,这涉及将二维矩阵中的交互值转换为一维数组。一旦我们有了这个数组,我们就可以将其传递给瀑布函数,SHAP 会将其视为一组正常的 SHAP 值。

图 8:相互作用矩阵到相互作用阵列

参考

S. Lundberg, SHAP Python package (2021), https://github.com/slundberg/shap

S. Lundberg & S. Lee, A Unified Approach to Interpreting Model Predictions (2017), https://arxiv.org/pdf/1705.07874.pdf


「AI秘籍」系列课程:

  • 人工智能应用数学基础
  • 人工智能Python基础
  • 人工智能基础核心知识
  • 人工智能BI核心知识
  • 人工智能CV核心知识

AI企业项目实战课优惠二维码


  1. Github, https://github.com/hivandu/public_articles/blob/main/src/interpretable_ml/SHAP/shap_custom.ipynb ↩︎

相关文章:

四个自定义 SHAP 图

超越 Python 包,创建 SHAP 值的定制可视化 SHAP 值是了解模型如何进行预测的绝佳工具。SHAP 包提供了许多可视化效果,使这个过程更加简单。话虽如此,我们不必完全依赖这个包。我们可以通过创建自己的 SHAP 图来进一步了解模型的工作原理。在本…...

为什么使用HTTPS?

HTTPS现在是所有Web活动的首选协议,因为它是用户保护敏感信息的最安全方式。 HTTPS不仅对请求用户信息的网站至关重要。除了用户直接发送的信息外,攻击者还可以从不安全的连接中跟踪行为和身份数据。 HTTP为网站所有者带来的好处除了数据安全之外&…...

软件设计-系统架构师(五十五)

1在网络规划中,政府内外网之间应该部署网络安全防护设备。在下图部署的设备A是(),对设备A作用描述错误的是()。 问题1 A IDS B 防火墙 C 网闸 D UTM 问题2 A 双主机系统,即使外网被黑客攻击…...

三分钟学会线缆电流估算

今天带你用三分钟的时间,学会电源线承受电流估算,不浪费时间,直接开始吧。 工作温度30℃,长期连续90%负载下的载流量 1.5平方毫米――14A  2.5平方毫米――26A   4平方毫米――32A   6平方毫米――47A    16平方毫米――92A   25平方毫米――120A   3…...

Snipaste 的一款替代工具 PixPin,支持 gif 截图、长截图和 OCR 文字识别,功能不是一点点强!

Snipaste 的一款替代工具 PixPin,支持 gif 截图、长截图和 OCR 文字识别,功能不是一点点强! PixPin 的名字来源于“Pixel Pin”,简单来说是一个截图、贴图的工具,但是 PixPin 以截图和贴图两大功能为核心做了大量的优…...

Oracle基础教程

体系结构 数据库 一个操作系统仅有一个数据库 实例 拥有一系列后台进程和存储结构,一个数据库可拥有一个或多个实例,一般只有1个实例 数据文件(.dbf/.ora) 数据文件是数据库的物理存储单元,一个表空间由一个或多…...

电脑如何录屏?三款电脑录屏工具分享

电脑如何录屏?作为一个经常需要录制电脑屏幕大职场人,不是为了制作教程、记录会议,就是偶尔想自己做个游戏解说视频。市面上的录屏软件琳琅满目,经过一番尝试和比较,我选出了三款我个人认为表现不错的软件,…...

idea2024建立maven web项目servlet 6.0

(1) 下载好tomcat 10.1.28 打开tomcat.apache.org官网下载 (2)配置好maven (3)idea 2024打开,建立项目 选择maven java项目 (4)在项目src/main/下 建立webapp/WEB-INF目录,在…...

游戏开放式新手引导框架设计

强制性引导:只能点某个按钮 优:程序简单 缺: 玩家体验差 开放式引导:不强制点 优:玩家体验好 缺: 程序复杂 需求分析: 1.开放式引导,引导是到达某个条件后进行一系列行为&#xff08…...

【Hot100】LeetCode—189. 轮转数组

目录 1- 思路自定义 reverse 翻转函数 2- 实现⭐189. 轮转数组——题解思路 3- ACM 实现 原题链接:189. 轮转数组 1- 思路 自定义 reverse 翻转函数 2- 实现 ⭐189. 轮转数组——题解思路 class Solution {public void rotate(int[] nums, int k) {k % nums.lengt…...

javaweb学习之HTML(一)

推荐学习使用网站 w3school 在线教程 认识HTML HTML(HyperText Markup Language)是超文本标记语言,它是一个用于创建网页和网页应用程序的标准标记语言。HTML文档由一系列的元素(elements)组成,这些元素通…...

项目实战:Qt+Opencv相机标定工具v1.3.0(支持打开摄像头、视频文件和网络地址,支持标定过程查看、删除和动态评价误差率,支持追加标定等等)

若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/141334834 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、Op…...

【数据结构】汇总八、排序算法

排序Sort 【注意】本章是 排序 的知识点汇总,全文1万多字,含有大量代码和图片,建议点赞收藏(doge.png)!! 【注意】在这一章,记录就是数据的意思。 排序可视化网站: D…...

Java-分割list并执行多线程任务的工具类

要创建一个用于分割列表并执行多线程任务的工具类,你可以使用 Java 的 ExecutorService 和 ThreadPoolExecutor 来实现。下面是一个详细的示例,展示了如何创建这样一个工具类。 步骤 1: 创建线程池 首先,创建一个线程池来执行任务。 步骤 2: 分割列表 接着,定义一个方…...

Springboot-从服务器获取一个输入流,转成视频文件存到oss

要在Spring Boot应用中从服务器获取一个输入流,然后将该流转换为视频文件并存储到阿里云 OSS中,你可以遵循以下步骤: 设置阿里云OSS客户端:首先,你需要配置阿里云OSS客户端,以便能够上传文件到OSS。 获取输入流:使用HTTP客户端(如RestTemplate或WebClient)从服务器…...

[Meachines] [Easy] Bastion SMB未授权访问+VHD虚拟硬盘挂载+注册表获取NTLM哈希+mRemoteNG远程管理工具权限提升

信息收集 IP AddressOpening Ports10.10.10.134TCP:22, 135, 139, 445, 5985, 47001, 49664, 49665, 49666, 49667, 49668, 49669, 49670 $ nmap -p- 10.10.10.134 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH fo…...

STM32标准库学习笔记-9.DMA 直接存储器存取

参考教程:【STM32入门教程-2023版 细致讲解 中文字幕】 DMA(Direct Memory Access) DMA(Direct Memory Access)直接存储器存取DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预…...

ubuntu VCS+verdi安装遇到的一些问题

主体流程:https://blog.51cto.com/u_15346322/4995147 我的是Ubuntu22.4 安装目录问题 执行 ./installer -gui 只能安装到home 或者 sudo ./setup.sh -install_as_root 能安装到/usr/ 目录 运行 vcs 出现 bin/sh: Illegal option -h sudo rm -f /bin/sh sudo…...

使用Poi-tl对word模板生成动态报告

一、pom依赖问题&#xff1a; <dependency> <groupId>com.deepoove</groupId> <artifactId>poi-tl</artifactId> <version>1.12.2</version> </dependency> 使用 poi-tl 的 1.12.2版本&#xff0c;如果使用了poi依赖&#x…...

day45-dynamic programming-part12-8.16

tasks for today: 1. 115.不同的子序列 2. 583.两个字符串选的删除操作 3. 72.编辑距离 4. 总结编辑两个序列关系的问题 ------------------------------------------------------------------- 1. 115.不同的子序列 In this practice, it is necessary to compare with t…...

C# String的方法

目录 #region 知识点九 字符串切割 #region 知识点一 字符串指定位置获取 #region 知识点二 字符串拼接 #region 知识点三 正向查找字符位置 #region 知识点四 反向查找指定字符串位置 #region 知识点五 移除指定位置后的字符 #region 知识点六 替换指定字符串 #region 知识点七…...

Oracle RAC vs Clusterware vs ASM

Oracle RAC vs Clusterware vs ASM Oracle RACCache FusionRAC后台进程自动负载管理DBA管理工具Oracle ClusterwareCRS组件HAS组件管理工具Oracle ASMASM实例ASM磁盘组镜像和故障组ASM磁盘ASM文件Oracle RAC RAC即Real Application Clusters,是一种Oracle高可用部署架构。Orac…...

“华为杯”第十五届中国研究生数学建模竞赛-F题:机场新增卫星厅对中转旅客影响的研究

目录 摘 要: 一、 问题重述 1.1 研究背景 1.2 已知信息 1.3 需要解决的问题 二、 模型假设 三、 符号说明 四、 问题一模型的建立与求解 4.1 问题描述与分析 4.2 模型的求解 4.3 求解结果与分析 五、 问题二模型的建立与求解 5.1 问题描述与分析 5.2 模型的求解 5.3 求解结果与…...

正点原子linux开发板 qt程序交叉编译执行

1.开发板光盘 A-基础资料->5、开发工具->1、交叉编译器->fsl-imx-x11-glibc-x86_64-meta-toolchain-qt5-cortexa7hf-neon-toolchain-4.1.15-2.1.0.sh 拷贝到 Ubuntu 虚拟机 用文件传输系统或者共享文件夹传输到linux虚拟机 用ls -l查看权限&#xff0c;如果是白色的使…...

聚星文社和虹猫哪个好

聚星文社和虹猫是两个不同的公司&#xff0c;各有各的特点。下面是它们各自的优点&#xff1a; 聚星文社&#xff1a;Docshttps://docs.qq.com/doc/DRU1vcUZlanBKR2xy 聚星文社是一家传媒公司&#xff0c;专注于出版漫画、动画、小说等内容&#xff0c;拥有丰富的IP资源和创作…...

三十八、【人工智能】【机器学习】【监督贝叶斯网络(Bayesian Networks)学习】- 算法模型

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...

[书生大模型实战营][L0][Task1] Linux 远程连接 InternStudio

[书生大模型实战营][Task1] Linux 远程连接 InterStudio 1. 申请 InterStudio 账号 https://studio.intern-ai.org.cn/console/dashboard 2. ssh 生成公匙与密匙 使用 ssh-gen 生成公匙与密匙 # 1. ssh-gen ssh-gen# 2. 查看生成的文件 ls ~/.ssh# 3. 打开生成的公匙&#…...

【vue教程】六. Vue 的状态管理

目录 往期列表本章涵盖知识点回顾Vuex 的基本概念什么是 Vuex&#xff1f;为什么需要 Vuex&#xff1f; Vuex 的核心概念stategettersmutationsactionsmodules Vuex 的安装和基本使用安装 Vuex创建 store在 Vue 应用中使用 store在组件中访问和修改状态 Vuex 的模块化模块化的好…...

无人机电子调速器详解!!!

电子调速器是无人机动力系统中的关键组件&#xff0c;主要负责将电池提供的直流电转换为交流电&#xff0c;并精确控制电机的转速&#xff0c;从而实现对无人机飞行状态的精确控制。以下是对无人机电子调速器的详细解析&#xff1a; 一、基本功能与原理 功能&#xff1a; 直…...

Clichouse数据导出导入(数据迁移)

背景&#xff1a;因为clickhouse数据持续增加&#xff0c;导致服务器磁盘不够使用&#xff0c;云服务器的系统盘不能扩容&#xff0c;所以只能进行迁移 连接clickhouse查看要迁移那些数据库 rootjcdata:~/buckup/clickhouse# clickhouse-client -udefault --password 123456…...