【机器学习】如何计算解释模型的SHAP值

2024-03-28 00:36

本文主要是介绍【机器学习】如何计算解释模型的SHAP值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 近似算法
    • 计算步骤
    • 计算举例
    • 参考资料

SHAP值是一种用于解释机器学习模型的工具,可以帮助我们理解每个特征值对模型预测结果的贡献程度。具体地,我们应该如何计算单个特征的SHAP值呢?以下介绍一种近似计算方法。

近似算法

单个特征值的shap值近似估计算法:

  • 输出:第j个特征值的shap值
  • 输入:迭代次数 M M M、待计算的实例 x x x、特征索引 j j j、数据矩阵 X X X、和机器学习模型 f f f
    • 对于所有 m = 1 , ⋯ , M m=1,\cdots,M m=1,,M:
      • 从数据矩阵 X X X 中抽取随机实例 z z z
      • 选择特征值的随机排列
        • 排序实例 x x x: x o = ( x ( 1 ) , ⋯ , x ( j ) , ⋯ , x ( p ) ) x_o=(x_{(1)},\cdots,x_{(j)},\cdots,x_{(p)}) xo=(x(1),,x(j),,x(p))
        • 排序实例 z z z: z o = ( z ( 1 ) , ⋯ , z ( j ) , ⋯ , z ( p ) ) z_o=(z_{(1)},\cdots,z_{(j)},\cdots,z_{(p)}) zo=(z(1),,z(j),,z(p))
      • 构造两个新实例
        • 包含特征 j j j x + j = ( x ( 1 ) , ⋯ , x ( j − 1 ) , x ( j ) , z ( j + 1 ) , ⋯ , z ( p ) ) \;\;\;x_{+j}=(x_{(1)},\cdots,x_{(j-1)},x_{(j)},z_{(j+1)},\cdots,z_{(p)}) x+j=(x(1),,x(j1),x(j),z(j+1),,z(p))
        • 不包含特征 j j j x − j = ( x ( 1 ) , ⋯ , x ( j − 1 ) , z ( j ) , z ( j + 1 ) , ⋯ , z ( p ) ) x_{-j}=(x_{(1)},\cdots,x_{(j-1)},z_{(j)},z_{(j+1)},\cdots,z_{(p)}) xj=(x(1),,x(j1),z(j),z(j+1),,z(p))
      • 计算边际贡献: ϕ j m = f ^ ( x + j ) − f ^ ( x − j ) \phi_j^m=\hat{f}(x_{+j}) - \hat{f}(x_{-j}) ϕjm=f^(x+j)f^(xj)
    • 计算特征值 x j x_j xj的shap值: ϕ j ( x ) = 1 M ∑ 1 = m M ϕ j m \phi_j(x)=\frac{1}{M}\sum_{1=m}^{M}\phi_j^m ϕj(x)=M11=mMϕjm

计算步骤

此算法是用于计算单个特征值的SHAP值。下面是公式的计算步骤:

  1. 首先,设定迭代次数 M M M,这是一个输入参数,决定了我们要进行多少次的随机采样。
  2. 接着,从数据矩阵X中随机选择一个实例 z z z
  3. 然后,对特征值进行随机排列,产生两个新的实例: x x x z z z
  4. 在这两个新实例中,我们构造出两个更具体的实例:包含特征 j j j x + j x_{+j} x+j 和不包含特征 j j j x − j x_{-j} xj。在 x + j x_{+j} x+j 中,特征j的值取自实例 x x x,而在 x − j x_{-j} xj 中,特征 j j j 的值取自实例 z z z
  5. 计算这两个实例的预测值之差,这即是特征j的边际贡献。
  6. 重复上述步骤M次,然后将所有的边际贡献求平均,得到特征 j j j 的SHAP值。

简而言之,此算法的目的是估计在随机排列特征的情况下,特征j的存在与否对模型预测结果的影响,从而评估特征 j j j 的重要性。

计算举例

假设我们有一个机器学习模型,该模型使用一组特征(例如年龄、性别、收入等)来预测一个人是否会购买某个产品。我们想知道“年龄”这个特征对预测结果的影响有多大,也就是我们想要计算“年龄”的SHAP值。

以下是计算步骤:

  1. 首先,我们设定一个迭代次数 M M M,例如100次。

  2. 然后,我们进行100次迭代,每次迭代都会做以下操作:

    • 从数据集中随机选择一个人(称为 z z z)。

    • 创建两个新的“虚拟”人。一个人的所有特征值都与我们要预测的那个人(称为 x x x)相同,但“年龄”特征的值与z相同。而另一个人的所有特征值都与z相同,但“年龄”特征的值与x相同。

    • 使用模型对这两个“虚拟”人进行预测,并计算预测结果的差异。这个差异就是“年龄”特征的边际贡献。

  3. 最后,将100次迭代中计算出的所有边际贡献进行平均,得到的就是“年龄”特征的SHAP值。

总的来说,这个算法就是在模拟一个实验:如果我们改变一个人的年龄(而其他特征保持不变),那么这将如何影响我们的预测结果。通过多次模拟这个实验并取平均,就可以得到一个对“年龄”特征的影响力的估计值,也就是SHAP值。

参考资料

TBD

这篇关于【机器学习】如何计算解释模型的SHAP值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/853908

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

AssetBundle学习笔记

AssetBundle是unity自定义的资源格式,通过调用引擎的资源打包接口对资源进行打包成.assetbundle格式的资源包。本文介绍了AssetBundle的生成,使用,加载,卸载以及Unity资源更新的一个基本步骤。 目录 1.定义: 2.AssetBundle的生成: 1)设置AssetBundle包的属性——通过编辑器界面 补充:分组策略 2)调用引擎接口API

计算绕原点旋转某角度后的点的坐标

问题: A点(x, y)按顺时针旋转 theta 角度后点的坐标为A1点(x1,y1)  ,求x1 y1坐标用(x,y)和 theta 来表示 方法一: 设 OA 向量和x轴的角度为 alpha , 那么顺时针转过 theta后 ,OA1 向量和x轴的角度为 (alpha - theta) 。 使用圆的参数方程来表示点坐标。A的坐标可以表示为: \[\left\{ {\begin{ar

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

一份LLM资源清单围观技术大佬的日常;手把手教你在美国搭建「百万卡」AI数据中心;为啥大模型做不好简单的数学计算? | ShowMeAI日报

👀日报&周刊合集 | 🎡ShowMeAI官网 | 🧡 点赞关注评论拜托啦! 1. 为啥大模型做不好简单的数学计算?从大模型高考数学成绩不及格说起 司南评测体系 OpenCompass 选取 7 个大模型 (6 个开源模型+ GPT-4o),组织参与了 2024 年高考「新课标I卷」的语文、数学、英语考试,然后由经验丰富的判卷老师评判得分。 结果如上图所

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

《offer来了》第二章学习笔记

1.集合 Java四种集合:List、Queue、Set和Map 1.1.List:可重复 有序的Collection ArrayList: 基于数组实现,增删慢,查询快,线程不安全 Vector: 基于数组实现,增删慢,查询快,线程安全 LinkedList: 基于双向链实现,增删快,查询慢,线程不安全 1.2.Queue:队列 ArrayBlockingQueue:

大语言模型(LLMs)能够进行推理和规划吗?

大语言模型(LLMs),基本上是经过强化训练的 n-gram 模型,它们在网络规模的语言语料库(实际上,可以说是我们文明的知识库)上进行了训练,展现出了一种超乎预期的语言行为,引发了我们的广泛关注。从训练和操作的角度来看,LLMs 可以被认为是一种巨大的、非真实的记忆库,相当于为我们所有人提供了一个外部的系统 1(见图 1)。然而,它们表面上的多功能性让许多研究者好奇,这些模型是否也能在通常需要系