如何信任机器学习模型的预测结果?

 在本篇中,我将通过一个例子演示在 MATLAB 如何使用 LIME 进行复杂机器学习模型预测结果的解释

我使用数据集 carbig(MATLAB 自带的数据集)训练一个回归模型,用于预测汽车的燃油效率。数据集 carbig 是 70 年代到 80 年代生产的汽车的一些数据,包括:

图片

其中:MPG 为响应变量(预测结果),其它变量为预测变量(数据特征),训练一个回归模型 f,该回归模型可以通过汽车的气缸数量、排量、生产年份等信息预测汽车的燃油效率,数学表达如下:

MPG = f(Cylinders,Displacement,Horsepower,modelyear,Weight,Acceleration)

利用 LIME 技术对回归模型 f 的预测结果进行解释,查看是那些特征对预测结果产生影响。具体的实现过程如下。

训练机器学习模型

导入数据集并构建数据表:

rng(0);

load carbig

tbl =table(Acceleration,Cylinders,Displacement,…

Horsepower,Model_Year,Weight,MPG);

进行数据预处理,去除带有缺失值的行:

tbl =rmmissing(tbl);

生成变量数据表:

tblX =removevars(tbl,'MPG');

head(tblX)

将变量按数据类型进行划分。其中第二列 Cylinders 和第五列 Model_Year 是分类变量,其它列是数值变量

图片

tblX_num= removevars(tblX,{'Cylinders','Model_Year'});

tblX_cate= tblX(:,{'Cylinders','Model_Year'});

对于数值变量查看变量之间的相关性

cor =corr(tblX_num{:,:});

h =heatmap(cor);

h.XDisplayLabels= tblX_num.Properties.VariableNames;

h.YDisplayLabels= tblX_num.Properties.VariableNames;

图片

 图 1

从图 1 的计算结果得出,Displacement 与 Weight 具有强相关性,Displacement 与 Horsepower 的相关性也较大。因此,去除 Displacement 变量。

tblX_num= removevars(tblX_num,{'Displacement'});

再次计算变量之间的相关性:

cor =corr(tblX_num{:,:});

h =heatmap(cor);

h.XDisplayLabels= tblX_num.Properties.VariableNames;

h.YDisplayLabels= tblX_num.Properties.VariableNames;

图片

图 2

图 2 显示,变量之间的相关性都小于 0.9,因此保留相关性小于 0.9 的变量作为预测变量。

对数值型预测变量进行标准化,缩放到[0,1]之间,以消除量纲对预测结果的影响。

tblX_num= normalize(tblX_num,"range");

tbl.MPG =normalize(tbl.MPG,"range");

head(tblX_num)

将数值变量和分类变量合并成训练数据集:

图片

将数值变量和分类变量合并成训练数据集:

tblX =[tblX_num tblX_cate];

head(tblX)

图片

训练一个随机森林回归模型,预测变量是表 tblX 中的变量,响应变量是 MPG,并指明第 4 和第 5 列是分类变量。

mdl_bag= fitrensemble(tblX,tbl.MPG,'Method',"Bag",…

'CategoricalPredictors',[4 5]);

对机器学习模型进行解释

利用 LIME 对训练好的回归模型进行解释。

首先构建使用 lime 函数构建一个 LIME,简单的解释模型选择决策树,同时 lime 中也指明了原始回归模型的训练样本的第 4 和第 5 列是分类变量。

lime_bag = lime(mdl_bag,'CategoricalPredictors',[4 5],…        'SimpleModelType',"tree");

我们从训练集中选取一个样本作为预测数据(即 QueryPoint),测试模型的预测结果,以及模型的解释结果。选择训练集中的第 257 个样本作为预测数据。

num =257;

queryPoint= tblX(num,:)

图片

以预测数据为基础生成合成数据,并训练一个可解释模型(决策树模型)。对于可解释模型,指定变量个数为 5。也就是说,我们最多只分析 5 个对预测结果产生影响的变量。

lime_bag= fit(lime_bag,queryPoint,5);

根据预测变量对预测结果的影响程度进行排序并可视化。

f =plot(lime_bag);

title('随机森林回归模型的LIME');

f.CurrentAxes.TickLabelInterpreter= 'none';

图片

图 3

从图 3 可以看出,预测变量 Weight,对回归模型预测的结果影响最大,其次是 Cylinders 和 Horsepower。

可以解释为:基于输入数据预测出的汽车燃油效率,主要依次考虑了汽车的重量(Weight)、汽车的动力(Horsepower)、汽车汽缸数量(Cylinders)。

这种解释也是符合我们的先验知识:汽车自重越大燃油效率越低,也就是每加仑行驶的里程数越少。汽车功率越大、汽缸数量越多,耗油越大。

因此说,回归模型预测的结果是可信的。

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

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

相关文章

docker的基础知识

介绍docker 什么是docker Docker是一种开源的容器化平台,可以让开发人员将应用程序与其依赖的运行时环境一起打包到一个称为容器的独立单元中。这个容器可以在任何支持Docker的机器上运行,提供了一种快速和可移植的方式来部署应用程序。Docker的核心组件…

Python库学习(十四):ORM框架-SQLAlchemy

1.介绍 SQLAlchemy 是一个用于 Python 的 SQL 工具和对象关系映射(ORM)库。它允许开发者通过 Python 代码而不是 SQL查询语言来操作数据库。SQLAlchemy 提供了一种灵活且强大的方式来与关系型数据库交互,支持多种数据库后端,如 P…

spring oauth2 authorization server 配置源码解析

版本 1.2.1 源码 OAuth2 授权服务器配置 org.springframework.security.oauth2.server.authorization.config.annotation.web.configuration.OAuth2AuthorizationServerConfiguration Configuration(proxyBeanMethods false) public class OAuth2AuthorizationServerConfi…

【十七】【动态规划】DP41 【模板】01背包、416. 分割等和子集、494. 目标和,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利…

小米红米Note9 Pro 5G刷PixelOS,并安装kali nethunter

1.解锁BL 小米解锁BL,网上有很多教程,如果需要刷机的话,需要提前7天准备。因为小米解锁需要登录账号,并使用官方解锁工具进行解锁,这里不做过多阐述。 2.下载相关文件 可以访问该地址下载recovery和rom:…

GeoServer发布地图服务(WMS、WFS)

文章目录 1. 概述2. 矢量数据源3. 栅格数据源 1. 概述 我们知道将GIS数据大致分成矢量数据和栅格数据(地形和三维模型都是兼具矢量和栅格数据的特性)。但是如果用来Web环境中,那么使用图片这个栅格形式的数据载体无疑是最为方便的&#xff0…

一个奇怪的问题和奇怪的解决方案

背景 最近想学学OpenCV,先说说学习环境 软件:Python 3.11 Pycharm opencv、numpy、matplotlib硬件:家里台式机,单位笔记本代码放到github上,方便在两台机子之间同步笔记本用win11系统台式机原来安装了debian 12KDE…

代码随想录算法训练营第四十九天|121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

代码随想录算法训练营第四十九天|121. 买卖股票的最佳时机、122.买卖股票的最佳时机II 买卖股票的最佳时机 121. 买卖股票的最佳时机 文章讲解:https://programmercarl.com/0121.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C…

Vue中插槽的简单使用

插槽 分类&#xff1a;默认插槽、具名插槽、作用域插槽 默认插槽&#xff1a;让父组件可以向子组件指定位置插入html结构&#xff0c;也是一种组件通信的方式&#xff0c;适用于父组件&#xff08;App&#xff09;>子组件(MyFooter) 默认插槽的App组件 <template>&…

WebofScience快速检索文献的办法

Web of Science为什么老是搜不到文章&#xff0c;原来是要在这个地方全部勾选 如果是搜标题的话&#xff0c;选Title&#xff0c;输入你要搜的文章标题 另外&#xff0c;也可以在浏览器直接搜文章标题&#xff0c;得到文章的DOI&#xff0c;然后选DOI&#xff0c;直接搜DOI也行…

红帽Redhat(liunx)连接虚拟机

一、xshell连接虚拟机的步骤 ①在Linux里面 ifconfig去查看网络的IP地址 setup设置IP地址 service network restart 重启网卡服务 ②在windows 打开网络和共享中心→更改适配器 仅主机&#xff1a;VMnet1 IPV4的IP Net模式&#xff1a;VMnet8 ③直…

中通快递查询,中通快递单号查询,批量删除不需要的快递单号

快递单号的管理现在是许多企业和个人日常工作中不可或缺的一部分&#xff0c;面对堆积如山的快递单号&#xff0c;如何快速、准确地处理成了许多人的难题。今天&#xff0c;我们将为大家带来一款强大的快递单号处理软件——快递批量查询高手&#xff0c;让你从此告别繁琐的手动…

SpringCloud-高级篇(十一)

&#xff08;1&#xff09;搭建Redis-主从架构 前面我们实现了Redis的持久化&#xff0c;解决了数据安全问题&#xff0c;但是还有需要解决的问题&#xff0c;下面学习Redis的主从集群&#xff0c;解决Redis的并发能力的问题 Redis的集群往往是主从集群&#xff0c;Redsi为什么…

MyBatis-基本概念

一、概念 概念MyBatis官方文档介绍&#xff1a;MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminates almost all of the JDBC code and manual setting of parameters and retrieval …

【leetcode】字符串中的第一个唯一字符

题目描述 给定一个字符串 s &#xff0c;找到 它的第一个不重复的字符&#xff0c;并返回它的索引 。如果不存在&#xff0c;则返回 -1 。 用例 示例 1&#xff1a; 输入: s “leetcode” 输出: 0 示例 2: 输入: s “loveleetcode” 输出: 2 示例 3: 输入: s “aabb”…

游戏缺少x3daudio1_7.dll文件怎么办?x3daudio1_7.dll丢失总共有六个解决方法

导语&#xff1a;在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“x3daudio1_7.dll丢失”。那么&#xff0c;x3daudio1_7.dll到底是什么文件呢&#xff1f;它的作用和影响又是什么呢&#xff1f;本文将为您详细介绍x3daudio1_7.dll的相关知…

linux cpu、memory 、io、网络、文件系统多种类型负荷模拟调测方法工具

目录 一、概述 二、stress介绍和使用 2.1 介绍 2.2 使用 三、stress-ng介绍和使用 3.1 介绍 3.2 使用 3.3 实例 四、sysbench 4.1 介绍 4.2 使用 五、lmbench 5.1 介绍 5.2 使用 一、概述 今天介绍两款cpu负荷调试工具,用来模拟多种类型的负载。主要用来模拟CPU…

LabVIEW开发自动光学焊点检测系统

LabVIEW开发自动光学焊点检测系统 LabVIEW于开发了一个自动光学焊点检测系统&#xff0c;旨在提高电子元件焊接的质量和效率。通过利用LabVIEW的高级视觉开发模块&#xff0c;该系统能够准确地识别和分类电路板上的不同焊点类型&#xff0c;如桥接、虚焊、漏焊和多锡。这一进步…

Java最大优先队列设计与实现

Java 学习面试指南&#xff1a;https://javaxiaobear.cn 1、API设计 类名MaxPriorityQueue构造方法MaxPriorityQueue(int capacity)&#xff1a;创建容量为capacity的MaxPriorityQueue对象成员方法private boolean less(int i,int j)&#xff1a;判断堆中索引i处的元素是否小…

Docker中swarm管理工具

Docker中swarm管理工具 1 安装swarm swarm是Docker自带的容器集群管理工具。 1.1 集群IP 主机名ip地址网卡名软件master192.168.108.201ens33Dockernode1192.168.108.202ens33Docker 修改主机名 # 管理节点&#xff0c;修改主机名 hostnamectl set-hostname master# 子节…