机器学习模型的可解释性算法汇总!

news2024/12/27 0:52:53

模型可解释性汇总

简 介

目前很多机器学习模型可以做出非常好的预测,但是它们并不能很好地解释他们是如何进行预测的,很多数据科学家都很难知晓为什么该算法会得到这样的预测结果。这是非常致命的,因为如果我们无法知道某个算法是如何进行预测,那么我们将很难将其前一道其它的问题中,很难进行算法的debug。

本文介绍目前常见的几种可以提高机器学习模型的可解释性的技术,包括它们的相对优点和缺点。我们将其分为下面几种:

  1. Partial Dependence Plot (PDP);

  1. Individual Conditional Expectation (ICE)

  1. Permuted Feature Importance

  1. Global Surrogate

  1. Local Surrogate (LIME)

  1. Shapley Value (SHAP)

六大可解释性技术

01

Partial Dependence Plot (PDP)

PDP是十几年之前发明的,它可以显示一个或两个特征对机器学习模型的预测结果的边际效应。它可以帮助研究人员确定当大量特征调整时,模型预测会发生什么样的变化。

上面图中,轴表示特征的值,轴表示预测值。阴影区域中的实线显示了平均预测如何随着值的变化而变化。PDP能很直观地显示平均边际效应,因此可能会隐藏异质效应。

  • 例如,一个特征可能与一半数据的预测正相关,与另一半数据负相关。那么PDP图将只是一条水平线。

02

Individual Conditional Expectation (ICE)

ICE和PDP非常相似,但和PDP不同之处在于,PDP绘制的是平均情况,但是ICE会显示每个实例的情况。ICE可以帮助我们解释一个特定的特征改变时,模型的预测会怎么变化。

如上图所示,与PDP不同,ICE曲线可以揭示异质关系。但其最大的问题在于:它不能像PDP那样容易看到平均效果,所以可以考虑将二者结合起来一起使用。

03

Permuted Feature Importance

Permuted Feature Importance的特征重要性是通过特征值打乱后模型预测误差的变化得到的。换句话说,Permuted Feature Importance有助于定义模型中的特征对最终预测做出贡献的大小。

如上图所示,特征f2在特征的最上面,对模型的误差影响是最大的,f1在shuffle之后对模型却几乎没什么影响,生息的特征则对于模型是负面的贡献。

04

Global Surrogate

Global Surrogate方法采用不同的方法。它通过训练一个可解释的模型来近似黑盒模型的预测。

  • 首先,我们使用经过训练的黑盒模型对数据集进行预测;

  • 然后我们在该数据集和预测上训练可解释的模型。

训练好的可解释模型可以近似原始模型,我们需要做的就是解释该模型。

  • 注:代理模型可以是任何可解释的模型:线性模型、决策树、人类定义的规则等。

使用可解释的模型来近似黑盒模型会引入额外的误差,但额外的误差可以通过R平方来衡量

  • 由于代理模型仅根据黑盒模型的预测而不是真实结果进行训练,因此全局代理模型只能解释黑盒模型,而不能解释数据。

05

Local Surrogate (LIME)

LIME(Local Interpretable Model-agnostic Explanations)和global surrogate是不同的,因为它不尝试解释整个模型。相反,它训练可解释的模型来近似单个预测。LIME试图了解当我们扰乱数据样本时预测是如何变化的。

上面左边的图像被分成可解释的部分。然后,LIME 通过“关闭”一些可解释的组件(在这种情况下,使它们变灰)来生成扰动实例的数据集。对于每个扰动实例,可以使用经过训练的模型来获取图像中存在树蛙的概率,然后在该数据集上学习局部加权线性模型。最后,使用具有最高正向权重的成分来作为解释。

06

Shapley Value (SHAP)

Shapley Value的概念来自博弈论。我们可以通过假设实例的每个特征值是游戏中的“玩家”来解释预测。每个玩家的贡献是通过在其余玩家的所有子集中添加和删除玩家来衡量的。一名球员的Shapley Value是其所有贡献的加权总和。Shapley 值是可加的,局部准确的。如果将所有特征的Shapley值加起来,再加上基值,即预测平均值,您将得到准确的预测值。这是许多其他方法所没有的功能。

该图显示了每个特征的Shapley值,表示将模型结果从基础值推到最终预测的贡献。红色表示正面贡献,蓝色表示负面贡献。

小结

机器学习模型的可解释性是机器学习中一个非常活跃而且重要的研究领域。本文中我们介绍了6种常用的用于理解机器学习模型的算法。大家可以依据自己的实践场景进行使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/389232.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

巴别塔——问答平台调研

项目内容这个作业属于哪个课程2023 年北航软件工程这个作业的要求在哪里个人作业-软件案例分析我在这个课程的目标是了解软件工程的方法论、获得软件项目开发的实践经验、构建一个具有我的气息的艺术品这个作业在哪个具体方面帮助我实现目标对于“程序员是什么”这个问题有了一…

【ChatAug: Leveraging ChatGPT for Text Data Augmentation 论文精读】

ChatAug: Leveraging ChatGPT for Text Data Augmentation 论文精读InformationAbstract1 Introduction2 RELATED WORK2.1 Data Augmentation2.2 Few-shot Learning2.3 Very Large Language Models2.4 ChatGPT: Present and Future3 DATASET3.1 Symptoms Dataset3.2 PubMed20k …

Qt扫盲-CMake 使用概述

CMake 使用概述一、概述二、创建Qt CMake 项目三、简单介绍1. 引入Qt的库2.Qt CMake 引入第三方库3. Qt CMake 项目目录四、使用案例一、概述 CMake是一个简化跨不同平台开发项目的构建过程的工具。对C来说其实就是生成一个文件,文件里面描述了,怎么组织…

【MyBatis】MyBatis操作数据库

MyBatis操作数据库 文章目录MyBatis操作数据库:one:什么是MyBatis:two:创建SSM项目引入依赖配置文件设置MyBatis底层逻辑:three:实现CRUD功能查询全列查询带参数的查询新增获取自增主键删除更新:four:参数占位符:#{}和${}不支持String参数问题${}使用场景&#xff1…

javascript的ajax

学什么Ajax基础JSON跨域XHR对象Ajax进阶Ajax应用Ajax扩展Ajax基础初识 AjaxAjax的基本用法GET请求POST请求JSON初识JSONJSON的3种形式JSON的常用方法跨域初识跨域CORS跨域资源共享JSONPXHR 对象XHR的属性XHR的方法XHR的事件Ajax进阶FormData封装Ajax使用Promise改造封装好的Aja…

Linux 进程:进程退出返回值的获取

目录一、对输出参数status的理解二、获取进程退出返回值1.位运算(1)异常退出码(2)进程返回值2.宏函数我们常使用函数 wait 和 waitpid 来执行进程等待的功能:处理退出的子进程并释放资源,防止子进程变成僵尸进程。而这两个函数都有一个输出参数status&am…

【LeetCode】第 99 场双周赛

1. 最小和分割 给你一个二维整数数组 ranges ,其中 ranges[i] [starti, endi] 表示 starti 到 endi 之间(包括二者)的所有整数都包含在第 i 个区间中。 你需要将 ranges 分成 两个 组(可以为空),满足&am…

单板TVS接地不当造成辐射骚扰超标问题分析-EMC

【摘要】 某产品EMC辐射骚扰测试超标,通过近远场扫描配合定位分析,逐步找出骚扰源、传播路径,最终通过修改 PCB 走线切断传播路径解决此问题。 1 故障现象 某产品在进行 EMC 研发摸底测试时发现,整机辐射骚扰垂直方向测试超标&a…

Cesium实现的光柱效果

Cesium实现的光柱效果 效果展示: 可以通过拼接两个entity来实现这个效果: 全部代码; index.html <!DOCTYPE html> <html><head><meta charset

HBase写入流程详解

HBase采用LSM树架构&#xff0c;天生适用于写多读少的应用场景。在真实生产线环境中&#xff0c;也正是因为HBase集群出色的写入能力&#xff0c;才能支持当下很多数据激增的业务。需要说明的是&#xff0c;HBase服务端并没有提供update、delete接口&#xff0c;HBase中对数据的…

C++实战md5、base64算法实现(附源码)

C++常用功能源码系列 文章目录 C++常用功能源码系列前言一、常用加密算法1. md5是什么二、源码1. md52. base64、decode总结前言 本文是C/C++常用功能代码封装专栏的导航贴。部分来源于实战项目中的部分功能提炼,希望能够达到你在自己的项目中拿来就用的效果,这样更好的服务…

WebStorm + JetBrains IDE Support 实现自动刷新功能

找了半天&#xff0c;还借了朋友一个vpn,然后发现&#xff1a; JetBrains IDE Support已经下架&#xff1a; 关于插件JetBrains IDE Support在chrome商店中消失_webstorm启动chrome没有插件_kesin_lee的博客-CSDN博客 在写Html网页时&#xff0c;参考WebStrom说明文档&#xf…

【MySQL】P1 数据库基础以及MySQL下载安装

MySQL数据库基本概念MySQLSQL 简介前言 本篇博文为 MySQL 系列博文第一弹&#xff0c;主要围绕数据库基本概念&#xff0c;MySQL数据库下载安装以及SQL分类进行介绍。 下一篇博文将围绕 DDL 进行学习记录。 链接&#xff1a; 正文 数据库基本概念 数据库&#xff1a;存储数据…

华为OD机试用Python实现 -【垃圾信息拦截】 |2023.Q1 A卷

华为OD机试题 最近更新的博客华为 OD 机试 300 题大纲本篇题目:垃圾信息拦截题目描述输入描述输出描述示例一输入输出说明示例二输入输出编码思路和算法逻辑Python 代码实现最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单

python智能停车场车牌识别计费系统百度ai

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;python停车场 获取完整源码源文件说明文档可执行文件等 在PyCharm中运行《智能停车场车牌识别计费系统》即可进入如图1所示的系统主界面。 说明&#xff1a;在运行程序前&#xff0c;先将当前的计算机连接互联网&#xff0…

Windows+VS2019用vcpkg编译colmap

WindowsVS2019用vcpkg编译colmap Window下官方建议用vcpkg安装。这里我已经安装好了VS2019以及cuda11.7。 1.安装vcpkg git clone https://github.com/microsoft/vcpkg cd vcpkg .\bootstrap-vcpkg.bat2. 使用vcpkg编译colmap .\vcpkg install colmap[cuda,tests]:x64-wind…

cuda调试(一)vs2019-windows-Nsight system--nvtx使用,添加nvToolsExt.h文件

cuda调试 由于在编程过程中发现不同的网格块的结构&#xff0c;对最后的代码结果有影响&#xff0c;所以想记录一下解决办法。 CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid cuda context (上下文) context类似于CPU进程上下&#xff0c;表示由管理层 Drive …

信息系统项目管理师——OSI模型、协议

OSI七层网络模型&#xff08;掌握&#xff09; 应用层&#xff1a;对软件提供接口以使程序能使用网络服务&#xff0c;如事务处理程序、文件传送协议和网络管理等。&#xff08;HTTP、Telnet、FTP、SMTP&#xff09;表示层&#xff1a;程序和网络之间的翻译官&#xff0c;管理…

可选链运算符(?.)与空值合并运算符(??)

1. 可选链运算符Optional chaining(?.) MDN定义 可选链运算符&#xff08;?.&#xff09;允许读取位于连接对象链深处的属性的值&#xff0c;而不必明确验证链中的每个引用是否有效。?. 运算符的功能类似于 . 链式运算符&#xff0c;不同之处在于&#xff0c;在引用为空 (n…

JavaScript事件循环及任务处理

JavaScript事件循环及任务处理## 浏览器中 JavaScript 的执行流程和 Node.js 中的流程都是基于 事件循环 的。 理解事件循环的工作方式对于代码优化、性能优化很重要&#xff0c;有时对于正确的架构也很重要。 我们首先介绍事件循环工作方式的理论细节&#xff0c;然后介绍该知…