【MATLAB第114期】基于MATLAB的SHAP可解释神经网络分类模型(敏感性分析方法)
【MATLAB第114期】基于MATLAB的SHAP可解释神经网络分类模型(敏感性分析方法)
引言
该文章实现了一个可解释的神经网络分类模型,使用BP神经网络(BPNN)来预测特征输出。该模型利用12个变量参数作为输入特征进行训练。为了提高可解释性,应用了SHapley Additive exPlanations(SHAP),去深入了解每个参数对模型预测的贡献。
优化部分
1、套数据更加便捷,只需要更改数据、以及生成数据量
2、计算效率更快
(1)向量化预测:将所有特征子集的输入组合成矩阵instances,一次性完成网络预测,减少循环次数。通过net(instances")"批量获取所有子集的预测结果,充分利用MATLAB矩阵运算优化。
(2)并行计算:使用parfor并行处理每个样本的SHAP值计算,充分利用多核CPU资源
(3)预计算与哈希表:预计算所有子集的二进制表示和对应的哈希键,加速子集索引查找。预计算阶乘值避免重复计算权重,提升计算效率。
一、案例数据
1、导入数据
res = xlsread('分类数据集.xlsx'); %103行样本,7输入,1输出
x = res (:,1:end-1); %
y = res(:,end); % 最后一列为输出
2、数据标准化
该部分使用mapminmax函数对输入和输出数据进行标准化,将数据缩放到[-1, 1]范围内。
% 输入数据归一化
[x_norm, x_settings] = mapminmax(x',-1,1);
% 输出数据归一化
[y_norm, y_settings] = mapminmax(y',-1,1);normalization_x = x_settings;
save ('normalization_x.mat', 'x_settings');
normalization_y = y_settings;
save ('normalization_y.mat', 'y_settings');x_norm_t = x_norm';
y_norm_t = y_norm';
输入数据标准化:输入特征被标准化,标准化设置(x_settings)保存在名为normalization_x.mat的文件中,以便后续使用或反转标准化.
输出数据标准化:同样,输出数据被标准化,标准化设置(y_settings)保存在名为normalization_y.mat的文件中. 标准化后的数据被转置回原始方向,以保持模型进一步处理的一致性. 此步骤确保输入和输出数据适当缩放,以便于神经网络训练,从而有助于提高模型性能和收敛速度.
二、交叉验证和模型评估
该部分执行5折交叉验证以评估基于优化超参数构建的模型性能.
1、交叉验证设置
脚本使用K折交叉验证,numFolds = 5,将数据分成5个子集(折)。在每次迭代中,一个子集用于测试,其余子集用于训练模型.
2、模型训练和测试
对于每个折,使用cvpartition生成的索引将训练和测试数据分开. 使用BP神经网络(BPNN)训练模型,超参数设置:
%% 创建分类网络neuron = 5;net = patternnet([neuron], 'trainscg'); % 使用模式识别网络%% 网络参数设置net.trainParam.epochs = 1000;net.trainParam.showWindow = false; % 关闭训练窗口%% 训练网络[net, tr] = train(net, trainData', ind2vec(trainLabels')); % 转换为向量形式
3、解释交叉验证结果
最终模型选择:完成交叉验证后,可以通过所有折的平均ACC正确率总结模型的整体性能。这有助于选择最佳权衡的模型.
通过训练数据集评估模型的预测性能
测试集平均ACC: 0.92989
训练集平均ACC: 0.96845
选择最优数据集进行可视化(折数=4)
三、SHAP分析
1、生成随机数据
在本部分,生成一组合成输入数据用于SHAP分析。这种合成数据允许在受控和一致的方式下评估模型的特征贡献。步骤包括:
样本数量:脚本设置生成的合成样本数量为80(numSamples = 80).
特征范围: 定义操作参数在特定范围内,选择训练数据中各个输入变量的最大值和最小值
num_samples = 80;
VarMin = min(x);
VarMax = max(x);
随机数据生成: 使用rand函数在定义的范围内为每个特征生成随机值,创建80个样本.
for i=1:size(x,2)
x_shap(:,i)=VarMin(i)+ (VarMax(i) - VarMin(i)) * rand(numSamples, 1);
end
此生成数据用于评估SHAP值并分析每个特征如何影响模型的预测。生成随机输入数据确保了SHAP分析中特征值的广泛范围,便于更全面地评估特征重要性.
2、计算SHAP值
该代码计算神经网络模型的SHapley Additive exPlanations(SHAP)值。SHAP值量化了每个特征对模型预测的贡献。该过程包括:
- 预分配SHAP值矩阵:初始化一个矩阵以存储所有输入样本和特征的SHAP值.
2.计算参考值:将参考值计算为所有输入特征的平均值,用于在排除或包含特征时进行比较.
3.计算SHAP值:对于每个输入样本,使用自定义的shapley_ann函数计算SHAP值,该函数迭代所有可能的特征组合以确定每个特征对预测的贡献.
4.自定义的shapley函数接受一个训练好的神经网络(net)、当前输入样本和参考值来计算每个特征的SHAP值。该方法提供了对单个特征如何影响模型输出的洞察.
% ------------------------------------
function shapValues = shapley(net, x_shap, refValue) % 假设您有一个名为'net'的训练好的网络% 使用Shapley公式计算SHAP值如果有7个特征,则依次分析每个特征的累计贡献值当分析第1个特征时,排除当前特征,即 1 0 0 0 0 0 0迭代所有可能的特征组合 for i=1:2^(D-1)xt1: 每个样本的特征变量输入值(处理后) 1*7xt2: 计算的每个样本平均值(处理后) 1*7xt3: 当分析不同特征时,将该特征值替换为平均值。 1*7shapValues=shapValues+net(xt3)-net(xt2) end
3、可视化
------蜂群图:为每个特征创建散点图(蜂群图),显示所有样本的SHAP值。特征值被标准化并颜色编码以提高可解释性.
包括轴标签、网格、框以提高清晰度以及带有操作参数标签的颜色条. 此SHAP摘要图有助于理解哪些特征对模型的预测影响最大以及特征在样本中的变化情况.显示每个特征对模型预测的贡献。
-----条形图
计算平均绝对SHAP值:计算每个特征的绝对SHAP值的平均值,以量化每个特征的整体重要性.
条形图可视化:创建一个水平条形图,特征按其平均绝对SHAP值排序。这提供了模型中特征重要性的清晰、排序表示. 结果的SHAP摘要条形图有助于识别哪些特征对模型的预测影响最大.
四、代码获取
1.阅读首页置顶文章
2.关注CSDN
3.根据自动回复消息,私信回复“114期”以及相应指令,即可获取对应下载方式。
相关文章:
【MATLAB第114期】基于MATLAB的SHAP可解释神经网络分类模型(敏感性分析方法)
【MATLAB第114期】基于MATLAB的SHAP可解释神经网络分类模型(敏感性分析方法) 引言 该文章实现了一个可解释的神经网络分类模型,使用BP神经网络(BPNN)来预测特征输出。该模型利用12个变量参数作为输入特征进行训练。为…...
WPS免费使用宏(安装VBA插件)
WPS提示要开会员才能使用宏,多次搜索发现其实可以直接安装VBA插件就行,Mark一下 插件下载地址: https://www.onlinedown.net/soft/10044362.htm ‘’’ WPS插件软件介绍 wps vba是一款wps office插件,安装wps vba 7.1就可以让of…...
让测试飞起来——DevOps中的自动化测试实践指南
让测试飞起来——DevOps中的自动化测试实践指南 近年来,DevOps理念已经成为现代软件开发和运维的“最佳拍档”。它倡导“开发”和“运维”的协作,核心目标是加速交付,同时保障软件质量。而在这一过程中,测试自动化扮演了不可替代的角色。今天,我们就一起来聊聊测试自动化…...
开源AI大模型AI智能名片S2B2C商城小程序:科技浪潮下的商业新引擎
摘要: 本文聚焦于科技迅猛发展背景下,开源AI大模型、AI智能名片与S2B2C商城小程序的融合应用。通过分析元宇宙、人工智能、区块链、5G等前沿科技带来的商业变革,阐述开源AI大模型AI智能名片S2B2C商城小程序在整合资源、优化服务、提升用户体验…...
webpack配置导致浏览器自动刷新
文章目录 关键配置 - liveReload 关键配置 - liveReload const dev_config {devtool: source-map,// watch: true,devServer: {contentBase: path.resolve(__dirname, bin),port: 8005,host:192.168.xx.xx,inline: true,hot: false,liveReload: false //关键这一行【false不会…...
OPEX baota 2024.02.26
OPEX baota 2024.02.26 运维集成软件宝塔2024.02.26作废例子: 最重要的两个地方:上传文件 网站,重启应用服务器(tomcat) 其他很少用的...
【Pandas】pandas DataFrame to_numpy
Pandas2.2 DataFrame Conversion 方法描述DataFrame.astype(dtype[, copy, errors])用于将 DataFrame 中的数据转换为指定的数据类型DataFrame.convert_dtypes([infer_objects, …])用于将 DataFrame 中的数据类型转换为更合适的类型DataFrame.infer_objects([copy])用于尝试…...
Tensorflow2实现: LSTM-火灾温度预测
- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/rnFa-IeY93EpjVu0yzzjkw) 中的学习记录博客** - **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)** 一:理论知识基础 1.LSTM原理 一句话介…...
【降尺度】AI+CMIP6数据分析与可视化、降尺度技术与气候变化的区域影响、极端气候分析
气候变化已成为全球性挑战,对农业、生态系统、水资源、人类健康和社会经济系统产生深远影响。科学研究表明,自工业革命以来,人类活动导致的温室气体排放与全球气温上升、极端天气事件增加、冰川融化和海平面上升等现象密切相关。为科学理解和…...
粒子系统优化完成
按计划对幻世(OurDream)2D图形引擎的粒子系统进行了加强和优化,重点强化了粒子运动的控制和颜色混合效果的功能,目前优化过后的粒子系统的整体效果是令人满意的。...
spark-core编程
RDD转换算子 RDD 的两种算子:转换算子和行动算子。 RDD 根据数据处理方式的不同将算子整体上分为 Value 类型、双 Value 类型和 Key-Value 类型。 算子实际上是一些函数,用于数据处理。 Value类型 map 将处理的数据逐条进行映射转换,…...
智慧班牌系统解决方案,SaaS智慧电子班牌云平台
智慧班牌系统解决方案 系统概述 智慧班牌是智慧校园建设不断发展的产物,是教育信息化改革的载体。通过智慧班牌可以高效便捷传递各种知识信息和通知信息、及时反馈课堂信息、实现班级的透明化管理。智慧班牌将学生平安考勤、异常出勤情况及时反馈至家长、老师&…...
Flutter 2025 Roadmap
2025 这个路线图是有抱负的。它主要代表了我们这些在谷歌工作的人收集的内容。到目前为止,非Google贡献者的数量超过了谷歌雇佣的贡献者,所以这并不是一个详尽的列表,列出了我们希望今年Flutter能够出现的所有令人兴奋的新事物!在…...
【开发工具】科研开发中的主流AI工具整理及如何使用GPT润色英文论文
一、主流AI工具 AI技术发展至今已经逐渐成熟,并可以取代一部分科研和开发中的简单工作,并为复杂工作提高辅助,除此之外也是更高级的信息检索工具。熟练掌握 AI 工具在当前市场理应具有竞争优势,目前笔者在科研和开发中接触过AI工…...
用excel做九乘九乘法表
公式: IF($A2>B 1 , 1, 1,A2 & “" & B$1 & “” & $A2B$1,”")...
nacos配置达梦数据库驱动源代码步骤
1.在父工程pom.xml添加依赖: <dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.1.193</version> </dependency> 2.在nacos-config模块pom.xml添加依赖࿱…...
Spring Boot 线程池配置详解
Spring Boot 线程池配置详解 一、核心配置参数及作用 基础参数核心线程数 (corePoolSize) 作用:线程池中始终保持存活的线程数量,即使空闲也不回收。 建议:根据任务类型设定(如 I/O 密集型任务可设为 CPU 核心数 2)。 最大线程数 (maxPoolSize) 作用:…...
如何使用 qrcode.react生成二维码
qrcode.react(查看官网) 是一个用于 React 应用的 QR 码生成组件。下面是如何使用它的详细指南: 1、安装 npm install qrcode.react # 或者 yarn add qrcode.react2、基本用法 import {QRCodeSVG} from qrcode.react;const myPage () >…...
用VScode来编写前后端——构建基础框架
前言 我写这一个板块的原因是我参加了我们学校的新生项目课,需要创立一个系统,我们小组选的标题的基于计算机视觉的商品识别系统,那么我们需要一个网站来展示我们的功能,故写这些来记录一下自己,大家如果有什么问题的话…...
23.OpenCV轮廓逼近与拟合
OpenCV轮廓逼近与拟合 在计算机视觉中,轮廓是图像中边界或形状的重要表达形式。然而,直接从图像中提取的轮廓常常包含大量冗余点,且噪声较多。为了更好地描述图像中的形状,我们通常需要对轮廓进行逼近和拟合,从而降低…...
Flutter Row / Column 组件详解
1. 引言 在 Flutter 中,Row 和 Column 是最常用的布局组件,用于在水平方向 (Row) 或垂直方向 (Column) 排列子组件。它们提供了强大的对齐方式、空间分配策略,适用于各种 UI 设计需求。本文将详细介绍它们的基本用法、主要属性及自定义样式。…...
WHAT - 表单场景 - 依赖联动
目录 示例场景技术栈示例代码功能点总结详情场景 - 依赖联动初始化示例说明:详情页场景(含回显、联动)修改点说明示例代码(详情页)总结一下关键点 下面是一个基于 React TypeScript Ant Design (antd) 的表单联动示例…...
SecProxy - 自动化安全协同平台
本人为甲方安全人员,从事甲方工作近6年;针对在甲方平时安全工作的一些重复、复杂、难点的工作,思考如何通过AI、脚本、或者工具实现智能且自动化,于是花平时空闲时间准备将这些能力全部集中到一个平台,于是有了这个东西…...
网络3 子网掩码 划分ip地址
1.根据子网掩码判断主机数 IP地址网络位主机位 核心:将主机位划分为子网位和主机位 疑问:子网位有什么作用 子网掩码:网络位全为1,主机位全为0 主机数2^主机位 -2 2.根据主机和子网判断子网掩码 有一个B类网络145.38.0.0需要划…...
电容详解:定义、作用、分类与使用要点
一、电容的基本定义 电容(Capacitor) 是由两个导体极板(正负极)和中间绝缘介质组成的储能元件,其基本特性为存储电荷。 公式: C Q / V C:电容值(单位:法拉F)…...
Sublime Text for Mac v4.0 【注册汉化版】代码编辑器
Sublime Text for Mac v4.0 【注册汉化版】代码编辑器 一、介绍 sublime text for Mac一款轻量级的文本编辑器,拥有丰富的功能和插件。它支持多种编程语言,包括C、Java、Python、Ruby等,可以帮助程序员快速编写代码。Sublime Text的界面简洁…...
OpenCV 进阶实战与技巧——图像处理的全面解析
在上篇文章中,我们一起迈入了 Python OpenCV 的奇妙世界,学习了图像的读取、显示和保存等基本操作:用Python和OpenCV开启图像处理魔法之旅-CSDN博客。今天,我们将继续深入,探索图像的各种变换、滤波、边缘检测以及更深…...
单细胞转录组-生物标志物篇 | 从异质性描绘到筛查应用
宫颈癌(Cervical cancer, CC)是一种常见的妇科恶性肿瘤。尽管目前的筛查方法已被证明有效并显著降低了CC的发病率和死亡率,但仍然存在缺陷。单细胞RNA测序可以在单细胞分辨率下鉴定复杂和稀有的细胞群。通过scRNA-seq,已经绘制和描…...
MQTT:深入剖析 paho.mqtt.embedded - c - master 目录结构
引言 在嵌入式开发领域,消息队列遥测传输(MQTT)协议因其轻量级、低带宽消耗等特性被广泛应用。Eclipse Paho 项目提供了多种语言的 MQTT 客户端实现,其中paho.mqtt.embedded - c - master是针对 C 语言在嵌入式环境下的 MQTT 客户…...
minio命令行客户端mc常见用法
安装minio命令行客户端mc https://min-io.cn/docs/minio/linux/reference/minio-mc-admin.html # Windows安装minio命令行客户端 choco install minio-client -y# Linux安装mc客户端 wget -c -P /usr/local/bin/ https://dl.min.io/client/mc/release/linux-amd64/mc # 赋予可…...
Mac提示无法打开应用程序DBeaver
问题:安装好后,打开DBeaver时候提示“无法打开应用程序DBeaver” (1)首先,进入到/Applications/DBeaver.app/Contents/MacOS目录查看可执行程序的权限是否为-rwxr-xr-x,如果不是执行chmod x DBeaver的命令 …...
Dart逆向之函数调用
我们从Blutter恢复的部分IL中可以看到Dart调用函数的逻辑 // 0x180490: r16 <int> // 0x180490: ldr x16, [PP, #0x8a0] ; [pp0x8a0] TypeArguments: <int> // 0x180494: r30 Instance_MethodChannel // 0x180494: ldr lr, [P…...
Word / WPS 页面顶部标题 段前间距 失效 / 不起作用 / 不显示,标题紧贴页眉 问题及解决
问题描述: 在 Word 或者 WPS 里面,如果不是新的一节,而是位于新的一页首行时,不管怎么设置段前间距,始终是失效的,实际段前间距一直是零。 解决方案: 查询了很多方案均无法解决问题ÿ…...
在 ASP.NET Web 应用中解析 JSON 数据实例
在 ASP.NET Web 应用中解析 JSON 数据有多种方法,取决于你使用的是传统的 Web Forms、MVC 还是现代的 Web API。以下是几种常见的解析方法: 1. 使用 Newtonsoft.Json (Json.NET) 这是最常用的 JSON 处理库,需要先安装 NuGet 包:…...
vSphere 8.x Advanced Design(3V0-21.23)题库
最新版vSphere 8.x Advanced Design(3V0-21.23)题库,完整版见上方二维码。 Following a review of security requirements, an architect has confirmed the following requirements: REQ001- A clustered firewall solution must be placed at the perimeter of t…...
vba讲excel转换为word
VBA将excel转换为word Sub ExportToWordFormatted() 声明变量Dim ws As Worksheet 用于存储当前活动的工作表Dim rng As Range 用于存储工作表的使用范围(即所有有数据的单元格)Dim rowCount As Long, colCount As Long 用于存储数据范围的行数和列数…...
【BUG】远程连接阿里云服务器上的redis报错
出现 Redis Client On Error: Error: connect ECONNREFUSED 47.100.XXX.XX:6379 错误,表明 Redis 客户端无法连接到指定的 Redis 服务器,可按以下步骤排查解决: 1. 检查 Redis 服务器是否运行 操作:在 Redis 服务器所在终端执行…...
数据中台、BI业务访谈(二):组织架构梳理的坑
这是数据中台、BI业务访谈系列的第二篇文章,在上一篇文章中,我重点介绍了在给企业的业务部门、高层管理做业务访谈之前我们要做好行业、业务知识的功课。做好这些功课之后,就到了实际的访谈环节了。 业务访谈关键点 那么在具体业务访谈的时…...
集成学习+泰坦尼克号案例+红酒品质预测
集成学习简介 学习目标: 1.知道集成学习是什么? 2.了解集成学习的分类 3.理解bagging集成的思想 4.理解boosting集成的思想 【知道】集成学习是什么? 集成学习是机器学习中的一种思想,它通过多个模型的组合形成一个精度更高…...
SpringBoot 基础知识,HTTP 概述
1. 概述 1.1 Spring Spring 提供若干个子项目,每个项目用于完成特定功能 Spring 的若干个子项目都基于一个基础的框架:Spring Framework 框架类似于 房屋的地基 但 Spring Framework 配置繁琐,入门难度大 1.2 Spring Boot 于是…...
背包问题(java)实现
1、01背包 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scannew Scanner(System.in);int nscan.nextInt();int mscan.nextInt();int[][] dpnew int[n1][m1];int[] vnew int[n1];int[] wnew int[n1];for(int i1;i<n;i) {v…...
HDCP(一)
HDCP的核心目标解析 1. 数字内容版权保护 HDCP(高带宽数字内容保护)的核心目标是防止未经授权的设备对高清音视频内容进行非法复制或截取。它通过加密技术保护数字信号在传输链路(如HDMI、DisplayPort、DVI等接口)中的安全性&am…...
HTTP 1.0 时代,第一次优化
HTTP 是 “HyperText Transfer Protocol” 的缩写,即超文本传输协议。 相较于最初的设计,1.0增加了以下特性: 增加head,post等新方法。 引入新方法是为了扩充语义,其中 head 方法可以只拿元信息,不必传输…...
【吾爱出品】[Windows] 鼠标或键盘可自定义可同时多按键连点工具
[Windows] 鼠标或键盘连点工具 链接:https://pan.xunlei.com/s/VONSFKLNpyVDeYEmOCBY3WZJA1?pwduik5# [Windows] 鼠标或键盘可自定义可同时多按键连点工具 就是个连点工具,功能如图所示,本人系统win11其他系统未做测试,自己玩…...
计算机网络起源
互联网的起源和发展是一个充满创新、突破和变革的历程,从20世纪60年代到1989年,这段时期为互联网的诞生和普及奠定了坚实的基础。让我们详细回顾这一段激动人心的历史。 计算机的发展与ARPANET的建立(20世纪60年代) 互联网的诞生…...
Vue3 watch 与 watchEffect 深度解析
Vue3 watch 与 watchEffect 深度解析 一、响应式监听的基石作用 在Vue3的响应式系统中,watch和watchEffect是构建复杂状态逻辑的关键工具。它们实现了对响应式数据的精准监听,支撑着现代前端开发中的状态管理、副作用处理等核心功能。 1.1 演变 Optio…...
服务器信息收集
信息收集又叫打点,打仗也要侦探敌情,攻防更是如此。 但要获取哪些信息呢? 目录 一. 获取公网IP 如何知道一个网站用了CDN? 如何绕过CDN? 二. 旁站信息收集 三. C段主机查询 四. 子域名信息收集 五. 端口信息收…...
Java设计模式之装饰器模式:从入门到架构级实践
一、开篇:为什么需要装饰器模式? 在软件开发中,我们经常面临这样的困境:如何在不修改原有对象结构的情况下,动态地扩展对象的功能?当系统需要为对象添加多种可能的扩展功能时,如果直接使用继承…...
Vue3性能优化全攻略:从原理到极致性能实战
一、性能瓶颈深度诊断 1.1 关键性能指标分析 1.2 性能剖析工具矩阵 工具类型典型工具适用场景检测维度综合检测工具Lighthouse首屏加载性能分析加载评分/优化建议运行时监控工具Web Vitals页面交互性能监控FCP/LCP/TTI等框架专项工具Vue Devtools组件渲染性能分析渲染耗时/更…...
阿里云 AI 搜索开放平台:从算法到业务——AI 搜索驱动企业智能化升级
——已获知乎作者【GitHub Daily】授权转载 目前大模型的强大能力,使其成为一些企业和行业的主要创新驱动力,企业亟需重新审视和调整现有的创新机制,以适应AI技术和大数据的快速发展。目前很多企业已经开始尝试大模型在业务中进行赋能&#x…...