SHAP 和 LIME 解释模型
内容大纲
- 1、SHAP 解释器
- 1.1 案例:用于预测患者肺癌
- 1.2 案例中使用的shap解释器
- 1.3 SHAP工作原理
- 1.4 举例说明
- 2、LIME 解释器
- 2.1 案例:判断法律案件胜诉可能性
- 2.2 LIME解释器工作原理
- 2.3 本地解释模型的训练过程
- 2.4 举例说明1:新闻分类
- 2.4 举例说明2:电影评论判断
1、SHAP 解释器
1.1 案例:用于预测患者肺癌
该案例使用肺癌数据集,使用随机森林分类器训练模型,并预测测试集标签。最后使用SHAP解释器解释模型预测的依据,如哪些特征对预测影响较大,此外也可以添加其他指标评估模型质量。
1.2 案例中使用的shap解释器
- SHAP基于 shapely 值理论,它源于博弈论,用于衡量个体特征对模型预测结果的贡献。
- 对于每一个样本,SHAP通过计算该样本所有可能子集中,特征存在与不存在时模型输出的差异。
- 这些边际贡献根据公式计算出代表该特征对该实例预测结果贡献的shapley值。
- 由于shapley值具有加性性质,可以计算出每一个特征在该实例中的绝对影响程度。
- SHAP解释器会对每一次预测计算所有特征的shapley值。
- 这些shapley值既可以用来解释单个预测,也可以汇总 stationed 的 shapley值对所有样本进行可视化。
- 例如平均按特征 shapley值排序可以看出影响程度最大的特征。
- SHAP值也可以利用依赖图等方式展示特征间相互影响。
1.3 SHAP工作原理
假设我们有一个分类模型,输入有3个特征A,B,C,输出一个标签0或1。
现在有一个样本,其特征值为:
- A = 1
- B = 0
- C = 1
模型给出的预测标签是1
1、SHAP解释器会计算:
- 当只有A时,模型预测值。
- 当只有B时,模型预测值。
- 当只有C时,模型预测值。
- 当A,B共存时,模型预测值。
- 当A,C共存时,模型预测值。
- 当B,C共存时,模型预测值。
- 当A,B,C全存在时,模型预测值。
2、它通过对比不同子集中模型输出的差异,来计算每个特征的边际效应。
3、然后根据shapley值公式,得到每个特征A,B,C对预测结果的独立贡献,也就是它们的SHAP值。
4、通过这样的分析,我们就可以看到每个特征对预测结果的影响程度,这就是SHAP解释器工作的基本套路。
SHAP解释器计算每个特征的边际效应是基于下面这个思路:
对于样本X上的模型预测f(X),它有m个特征。
对于每个特征xi, SHAP会考虑该特征在所有可能的子集S中的取值:
- 当xi在S中时,模型输出为f(X|S)
- 当xi不在S中时,模型输出为f(X|-xi)
那么这个特征xi在子集S中的边际效应定义为: 边际效应 = f(X|S) - f(X|-xi)
也就是说,这个特征加入或去除子集S时,模型输出的变化。
5、SHAP会计算样本X上每个可能的子集S,然后对每个特征xi统计他在所有子集S中的边际效应。
6、最后根据shapley值的定义,通过加权平均计算出特征xi对整体模型输出f(X)的贡献大小。
这个贡献量就是我们常说的这个特征的SHAP值,就代表了它对预测结果的独立影响程度。
所以通过不断采样不同子集,SHAP可以详细解剖每个特征的边际影响,从而给出它们对结果的解释。
1.4 举例说明
小明,小军,小强,组队参加王者农药大赛,大赛设定哪个队先拿100个人头可获得一万元奖金。终于在他们三个的通力配合下,赢得了比赛获得一万元奖金,但分钱阶段出现了分歧,因为三个人的水平、角色不一,小强个人实力最强善用高输出角色,光是他自己就拿了大半的人头;但若是按照人头数分,也不合适,因为前期小强有几次差点挂掉,多亏队友及时治疗,另外有好多人头也是靠攻速抢到的。如何分配这一万元最公平?
这个问题,我们可以从贡献出发:
- 小强自己可以干掉35个人,小军可以干掉15个人,小明可以干掉10个人,显然,他们每个人都无法独立完成目标。
- 小强和小军联手可以干掉70个人,小强和小明可以干掉60个人,小军和小明联手可以干掉40个人,同样,无法完成任务。
- 而只有当三个人联手时候,才可以干掉100个人,达成目标。
考虑先后顺序,他们三个人一共有6种组队方式。
我们定义边际贡献:假定初始组合为小强一个人,贡献35,加入小军后,他们俩的组合贡献为70,则小军的边际贡献就是70-35=35,再加入小明,三个人的组合贡献为100,则小明的边际贡献为100-70=30;
根据组合次序计算全部的组合及组合中每个人的边际贡献,如表格所示,则可以求得每个人的贡献度。
因此,最合理的分配方案就是小强小军小明分别获得4916、2917、2167。
【举例参考原文:https://zhuanlan.zhihu.com/p/106320452】
2、LIME 解释器
2.1 案例:判断法律案件胜诉可能性
该案例加载法律案件数据,训练RF分类模型预测胜诉可能性,并使用LIME解释单例预测依据,可以辅助法律工作。
2.2 LIME解释器工作原理
LIME(Local Interpretable Model-agnostic Explanations) 的工作原理:
- 对预测的每个样本,LIME都会训练一个"本地解释模型"来近似实际模型在这个样本附近的行为。
- 本地解释模型一般使用线性模型或者决策树这类易解释模型。
- LIME通过对样本附近数据点进行扰动,并询问实际模型得到这些点的预测,来训练本地模型。
- 本地模型可以解释实际模型对这个样本的预测是如何受不同特征值影响的。
所以LIME可以解释模型预测一个单独样本的原因,指出影响程度最大的特征,这对法律工作很有意义。它的优点是模型无关,仍适用于黑箱模型,这就是LIME受到欢迎的原因。
2.3 本地解释模型的训练过程
LIME训练本地解释模型的过程包括以下步骤:
- LIME周围采样许多实例,如更改、删除单个词等。这构成了一个新数据集。
- 对新数据集每个实例,询问原始模型给出的预测结果。这为新数据集加入预测标签。
- LIME对新数据集中的每个实例计算其相对于原始实例的距离作为新特征。
- LIME利用新数据集训练一个线性回归模型,取各个特征项的系数作为“影响程度”。
- 被训练的线性模型直接优化的是对原始模型在周围实例表现的模拟goodness。
- 其中的特征系数量化了不同特征值改变对原始模型输出影响的程度。
- 系数值越大,表示该特征对原始模型输出贡献越大,可以视为关键影响特征。
通过这一训练过程,LIME得到的线性模型仅在原始样本附近有效,但能反映原始模型在这里的线性表现,从而提供本地解释。
2.4 举例说明1:新闻分类
假设我们有一个文本分类模型,用于判断新闻文章是否为政治类。
给定一个测试样本:
文本内容: “政府宣布将提高税率。”
模型预测: 政治类
LIME会做如下工作:
- 创建样本的变异实例,如删改单个单词:
- “政府宣布税率。”
- “将提高税率。”
- “政府将提高。”
-
询问原模型这些实例的预测结果。
-
求每个实例与原样本的距离,做为新特征。
-
用这些新数据训练线性模型fitting原模型表现。
-
得到的线性模型公式为:
y = 1.0*“政府” + 0.8*“税率” + 0.1*“将提高”
所以关键词为"政府"和"税率",它们最大影响预测结果。
通过这个例子可以清楚看到LIME是如何在本地近似原始模型,并解释单个预测结果的。它利用了简单且易解释的线性模型。
2.4 举例说明2:电影评论判断
假设我们有一个模型来判断是否是正面评论,输入是一个短评文本:
评论文本: “电影很好看,主演演技饱满”
模型预测: 正面评论
LIME会做以下工作:
- 根据输入文本生成多种扰动样本,如删除个别单词
- 检查样本:“电影很演技饱满”
模型预测:负面评论 - 样本:“主演演技饱满”
模型预测:中性评论 - 将样本和预测作为新数据集训练线性模型
- 得到线性模型:
正面=1.0*“电影很好看”+0.6*“主演演技饱满” - 所以"电影很好看"对正面判断贡献最大
通过对原始样本进行简单删除操作,LIME找到主要影响项"电影很好看",表明它是模型判断的关键依据。
————————————————
原文链接:https://blog.csdn.net/weixin_71458119/article/details/132460672
相关文章:

SHAP 和 LIME 解释模型
内容大纲 1、SHAP 解释器1.1 案例:用于预测患者肺癌1.2 案例中使用的shap解释器1.3 SHAP工作原理1.4 举例说明 2、LIME 解释器2.1 案例:判断法律案件胜诉可能性2.2 LIME解释器工作原理2.3 本地解释模型的训练过程2.4 举例说明1:新闻分类2.4 举…...

若依vue-初步下载使用
若依框架可以满足大部分的后台管理系统的开发,使用频率也是比较高的,所以这里讲一下如何使用若依框架 若依框架代码克隆 首先去若依官网 http://www.ruoyi.vip/ 这里演示的是若依-vue版本的使用 我们点击下载 会跳转到码云仓库 或者直接点击下面的链接去码云仓库 https://git…...

Android 使用.9图 NinePatchDrawable实现动态聊天气泡
最近一段时间,在做一个需求,需要实现一个聊天气泡的动画效果,如下图所示: GitHub源码demo ,建议下载demo,运行查看。 动态聊天气泡动画 静态聊天气泡 经过一段时间调研,实现方案如下: 实现方…...
力扣 LCR 024. 反转链表两种解法
目录 1.解题思路Ⅰ2.代码实现Ⅰ3.解题思路Ⅱ4.代码实现Ⅱ 1.解题思路Ⅰ 利用头插法,遍历数组将后面的元素头插到前面的元素. 2.代码实现Ⅰ struct ListNode* reverseList(struct ListNode* head) { struct ListNode*curhead;;struct ListNode*newheadNULL;whil…...

掌握Capture One 23 Pro,打造专业级图片编辑体验!
作为一位摄影师,您是否曾经为自己的照片无法达到预期效果而烦恼?或者您是否在寻找一种能够让您轻松处理和编辑照片的工具?如果是,那么您一定不能错过Capture One 23 Pro这款图片编辑软件! Capture One 23 Pro的特点 …...

MFC-TCP网络编程服务端-Socket
目录 1、通过Socket建立服务端: 2、UI设计: 3、代码的实现: (1)、CListenSocket类 (2)、CConnectSocket类 (3)、CTcpServerDlg类 1、通过Socket建立服务端ÿ…...
ChatGPT辅助下的小组学习
1 网上分享会-主题 1.9曾子曰:“慎终追远,民德归厚矣。” Master Zeng said:“Be circumspect in funerary services and continue sacrifices to the distant ancestors, and the virtue (de 德) of the common people will thrive.” 2 过程记录 听…...
Linux相关命令
切换root用户:sudo su 串口功能测试:cutecom 某某驱动查询:nvidia-smi #xxx-smi查询某某驱动 在线安装某某程序:apt install xxx 设置文件权限chmod 常用:chmod 777 sudo chmod 600 (只有所有者…...

详解卷积神经网络结构
前言 卷积神经网络是以卷积层为主的深度网路结构,网络结构包括有卷积层、激活层、BN层、池化层、FC层、损失层等。卷积操作是对图像和滤波矩阵做内积(元素相乘再求和)的操作。 1. 卷积层 常见的卷积操作如下: 卷积操作解释图解…...
java读取pdf数据
目录 读取方式有两种: 方式一: 方式一所需要的maven依赖如下: 方式一读取的Java代码如下:<...
arcmap / arcgis 安装教程
ArcGIS 10.8 for Desktop 完整安装教程(含win7/8/10 32/64位下载地址亲测可用汉化) | 麻辣GIS (malagis.com) 关于GIS语言汉化包(中文)安装失败的解决办法_arcgis中文语言包_miumiuniya的博客-CSDN博客 检查安装路径:…...
CMake中的变量: 改变构建行为的变量
文章目录 变量名称描述BUILD_SHARED_LIBS全局标志,用于在启用时使add_library()创建共享库。 如果存在并且为true,则这将导致所有库被构建为共享库,除非该库被明确添加为静态库。这个变量通常作为option()添加到项目中,这样项目的…...

台式电脑怎么无损备份迁移系统到新硬盘(使用傲梅,免费的就可以)
文章目录 前言一、想要将源硬盘上的系统原封不动地迁移到新硬盘上二、准备工作2.具体步骤 总结 前言 半路接手公司一台台式电脑,C盘(120g)爆红,仅剩几个G,优化了几次,无果后。准备换一个大一点的增到500g。…...

【紫光同创国产FPGA教程】【PGC1/2KG第七章】7.数字钟实验例程
本原创教程由深圳市小眼睛科技有限公司创作,版权归本公司所有,如需转载,需授权并注明出处 适用于板卡型号: 紫光同创PGC1/2KG开发平台(盘古1K/2K) 一:盘古1K/2K开发板(紫光同创PGC…...
【星海随笔】git的使用
1.在终端,检查git是否安装 git --version 2.没有安装的话去,官网,下载git 3.一直点下一步即可 4.安装后在终端检查git是否安装好 5.设置用户名和邮件地址(最好和GitHub的用户名/邮箱保持一致) git config --global user.name “自己的用户名”…...
安卓常见设计模式------装饰器模式(Kotlin版)
1. W1 是什么,什么是装饰器模式? 思想:动态地给对象添加额外的功能,通过将对象包装在一个装饰器类中,使装饰器类在不改变原始对象结构的情况下,扩展其功能。 2. W2 为什么,为什么需要使用装饰…...

将网站上的点击作为转化操作进行跟踪-官方指导文档
您可以使用转化跟踪功能,在用户点击您网站上的某个按钮或链接时进行跟踪。例如,您可以在用户点击“立即购买”按钮或点击您移动网站上的电话号码时进行跟踪。 本文介绍如何添加和修改转化跟踪代码,以便跟踪客户在您网站上的点击操作。如果希…...
Go相关命令说明
目录 Go相关命令说明go mod tidy :清理未使用依赖项,并更新模块文件主要功能好处 go clean -modcache :清除模块缓存go clean -testcache :清除测试缓存go test -v ./client :测试当前目录下client目录中的所有测试函数…...

3D全景技术,为我们打开全新宣传领域
随着科技的发展,3D全景技术正在融入我们的生活,这种全新视觉体验方式为我们打开了一扇全新的宣传领域,可以让我们多方位、多视角地探索各个行业,无论是对教育、商业、还是其他领域,都产生了深远的影响。 3D全景技术结合…...
【3D 图像分割】基于 Pytorch 的 VNet 3D 图像分割10(测试推理篇)
对于直接将裁剪的patch,一个个的放到训练好的模型中进行预测,这部分代码可以直接参考前面的训练部分就行了。其实说白了,就是验证部分。不使用dataloader的方法,也只需要修改少部分代码即可。 但是,这种方法是不end to end的。我们接下来要做的,就是将一个CT数组作为输入…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
省略号和可变参数模板
本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...