当前位置: 首页 > 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…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...