R语言实现可理解的随机森林模型(Random Forest)——iml包

2023-11-13

1. 介绍

机器学习模型通常可以很好地进行预测,但无法解释。 iml包提供了用于分析任何黑匣子机器学习模型的工具:The iml package provides tools to analyze machine learning models and predictions.

机器学习步骤: 我们主要是想通过iml包理解机器学习的黑盒子的运行过程和原理。
在这里插入图片描述

2. 理解随机森林运行机理

2.1导入需要的包

library("iml")
library(randomForest)
library(partykit)
library(glmnet)
data("Boston", package  = "MASS")
head(Boston)

2.2 构建随机森林模型

set.seed(123)
rf = randomForest(crim ~ ., data = Boston, ntree = 500,importance = T)

2.3 RF特征重要性:

特征重要性度量是通过改变每个特征并测量性能下降多少来起作用,而并非代表重要程度。回归分析中一般使用MAE(平均绝对误差),分类中一般使用MSE(均方误差)。

# 数据划分为自变量X和因变量y
X = Boston[which(names(Boston) != "crim")]
#X <- Boston[-which(names(Boston) == "crim")]
# Predictor$new:创建一个预测对象
predictor = Predictor$new(rf, data = X, y = Boston$crim)

#### 特征重要性
imp = FeatureImp$new(predictor, loss = "mae")
plot(imp)
print(imp$results)

特征重要性结果展示:
在这里插入图片描述

2.4 特征对预测结果的影响

ALE: 局部累积效果,显示了当特征变化时预测结果如何变化。x轴上的标记表示“ lstat”特征的分布,显示了一个区域与预测结果的相关性,很少或没有点表示我们不应过度解释该区域。
这是一个非常重要的部分,可以帮助我们理解数据是否对结果具有可靠性。你可以把这一步单独放到你的机器学习模型中去,检查数据的可靠性,类似于偏依赖图。

# 特征对预测结果的影响
ALE = FeatureEffect$new(predictor, feature = "lstat")
plot(ALE)
# 所有特征的ALE效果展示
ALE_effs = FeatureEffects$new(predictor)
plot(ALE_effs)

结果展示:
在这里插入图片描述
所有特征的ALE效果展示:
在这里插入图片描述

2.5 交互作用

衡量要素之间相互作用的强烈程度。 交互作用量度取决于交互作用解释了y的方差度量介于0(无交互)和1(y~.因交互而引起的方差的100%)之间所有自变量与indus进行交互。

#### 交互作用
interact_1 = Interaction$new(predictor, feature = "indus")
plot(interact_1)
# 所有自变量之间进行交互对y的影响
interact_all = Interaction$new(predictor)
plot(interact_all)

交互结果:
在这里插入图片描述
在这里插入图片描述

2.6 替代模型(Decision tree surrogate model)

使模型更易于解释的另一种方法是用一个更简单的模型:决策树替换黑匣子

# 替代模型
tree_local = TreeSurrogate$new(predictor, maxdepth = 3)
plot(tree_local)
plot(tree_local$tree)
# 使用替代模型进行预测
set.seed(1234)
X.sample <-  X[sample(1:nrow(X), 10), ]
a<-tree$predict(X.sample)
head(a)

结果展示: 决策树的最大深度为3
在这里插入图片描述

当然树的深度也可以更大,这里为8,但是这样看上去好像很复杂,不太能体现出数据的分布特点:
在这里插入图片描述
在这里插入图片描述

head(a):
.y.hat
1 0.4903775
2 0.1342809
3 0.1342809
4 0.1342809
5 0.1342809
6 0.1342809

2.7 LocalModel方法

# LIME使用距离度量来计算加权glm的接近权值
# 使用LocalModel方法解释数据集的第一个实例:
lime.explain <- LocalModel$new(predictor, x.interest = X[1,], k = 3)
lime.explain
lime.explain$results
plot(lime.explain)

在这里插入图片描述

结果显示:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R语言实现可理解的随机森林模型(Random Forest)——iml包 的相关文章

  • usb 命名乱的一批,怎么破

    USB 的命名真是乱的一批 命名里 一股浓浓的 印度风扑面而来 我想给 iso 文件加个驱动直接跪了 被绕进去了 幸运的是速度没乱 以下用速度整理该文档 USB2 0 时代 12 mbps usb1 0 480 mbps usb2 0 US
  • 什么是Restful?

    REST 简介 REST 是英文 Representational State Transfer 的缩写 有中文翻译为 具象状态传输 REST 这个术语是由 Roy Fielding 在他的博士论文 Architectural Styles
  • 大数据课程最后任务-hive处理数据

    好的这是第五次也就是不加额外挑战任务的最后任务 基本过程来自于厦门大学的hive教程 主要是hive处理20w的数据 两部分 一部分是安装 来自http dblab xmu edu cn blog 959 一步分是运行http dblab

随机推荐

  • Yii Framework 开发教程(34) Zii组件-AutoComplete示例

    CJuiAutoComplete 在用户输入时可以根据用户输入的前几个字符自动提示用户可以输入的文字 它封装了 JUI autocomplete插件 基本用法如下 php view plain copy print
  • vue3优雅实现移动端登录注册模块

    前言 近期开发的移动端项目直接上了vue3 新特性composition api确实带来了全新的开发体验 开发者在使用这些特性时可以将高耦合的状态和方法放在一起统一管理 并能视具体情况将高度复用的逻辑代码单独封装起来 这对提升整体代码架构的
  • VUE element-ui 之table表格表头插入输入框

    很简单
  • 手把手教你安装RabbitMQ(基于CentOS7系统)

    RabbitMQ简介及安装 什么是RabbitMQ RabbitMQ的特点 安装 安装Erlang 配置Erlang环境变量 验证环境 安装RabbitMQ 启动RabbitMQ 添加用户 访问 什么是RabbitMQ RabbitMQ是一
  • 财富自由?五年后为什么他月入十万,而我月入六千

    最近无论是在社群里还是 各种付费平台上 都能看到闪闪发光的一个词 财富自由 我好奇地去搜索了一下百度百科 财富自由是指 你无需为生活开销而努力 为钱工作的状态 简单的说 你的资产产生的被动收入 至少等于或超过你的日常开支 这是我们大多数人最
  • int、float和double的字节及位码

    int类型 4字节32位 第一位 符号位 2 9位 阶位 指数位 10 32位 普通数值位 0 00000000 00000000000000000000001 flaot类型 4字节32位 第一位 符号位 2 9位 阶位 指数位 10 3
  • 神经网络优化(二) - 激活函数和损失函数

    1 神经网络中的激活函数activation function 1 1 引入激活函数概念 神经网络的基本构成单元是神经元 在搭建神经网络一文中使用的神经元模型为 这个神经元模型是较为简化的基本神经元模型 还有一种理论模型包含有激活函数和偏置
  • live555学习之二RTSP协议说明

    RTSP协议 是一种基于C S架构的并用于双方通信约定的流媒体协议 全称实时流协议 Real Time Streaming Protocol 集成了网络实时控制 数据传输接收功能 客户端遵循协议发送指令控制多媒体的资源的功能如播放 暂停 停
  • row format delimited fields terminated by ','

    row format delimited fields terminated by 以 结尾的行格式分隔字段
  • base64图片编码大小与原图文件大小之间的联系

    base64图片编码大小与原图文件大小之间的联系 有时候我们需要把canvas画布的图画转换成图片输出页面 而用canvas生成的图片就是base64编码的 它是由数字 字母等一大串的字符组成的 但是我们需要获取它的文件流大小该怎么办呢 B
  • 题解-equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y;

    Problem Description Now given the equation 8 x 4 7 x 3 2 x 2 3 x 6 Y can you find its solution between 0 and 100 br Now
  • Docker 容器安全风险和防御综述

    摘要 Docker是目前最具代表性的容器平台之一 它的安全问题引起了产业界和学术界的广泛关注 首先 对Docker架构以及基本安全特性进行介绍 分析了Docker面临的安全威胁 其次 对Docker增强 安全检测 瘦身等方面的安全技术进行了
  • JSONArray操作汇总,排序,筛选,分组

    JSONArray操作汇总 一 排序 1 根据集合对象中某一对象属性进行排序 返回新的集合 2 List进行排序 返回新的List 注意 并没有改变原始list的顺序 二 筛选 1 获取集合对象中某一属性值 2 获取集合对象中某一属性值并去
  • JavaWeb基础7——会话技术Cookie&Session

    导航 黑马Java笔记 踩坑汇总 JavaSE JavaWeb SSM SpringBoot 瑞吉外卖 SpringCloud SpringCloudAlibaba 黑马旅游 谷粒商城 目录 一 会话技术 1 1 会话和跟踪技术介绍 1 2
  • 【华为OD机试 2023】 查找单入口空闲区域(C++ Java JavaScript Python)

    华为od机试题库 华为OD机试2022 2023 C Java JS Py https blog csdn net banxia frontend category 12225173 html 华为OD机试2023最新题库 更新中 C Ja
  • npm安装依赖至指定版本的方法

    简介 本文介绍npm安装依赖至指定版本的方法 依赖的版本可以在淘宝镜像或官方查询到 三种方法 方法一 先在package json里修改好指定版本号 然后输入 npm update webpack 方法二 npm update webpac
  • 【从推理出发】

    赌上爷爷之名 2021年暑假 和现在一样 也是很佛 不想好好学习的时间 8月的天气太过炎热 有时却又暴雨倾盆 很不讨喜 只得在家闲着看电视 动漫打发时间 按照以前的习惯 一般是悠闲地躺在沙发上吹着空调 看着长达900多集的柯南 然后在剧情中
  • spring cloud gateway 自定义负载均衡

    spring cloud gateway 自定义负载均衡 相关类及接口 LoadbalancerClientFilter 使用ribbon负载均衡 默认使用该类 已不推荐使用 deprecated Deprecated public cla
  • 伙计,Go项目怎么使用枚举?

    前言 哈喽 大家好 我是asong 枚举是一种很重要的数据类型 在java C语言等主流编程语言中都支持了枚举类型 但是在Go语言中却没有枚举类型 那有什么替代方案吗 本文我们来聊一聊这个事情 为什么要有枚举 我们以java语言为例子 在J
  • R语言实现可理解的随机森林模型(Random Forest)——iml包

    Random Forest 解释模型 1 介绍 2 理解随机森林运行机理 2 1导入需要的包 2 2 构建随机森林模型 2 3 RF特征重要性 2 4 特征对预测结果的影响 2 5 交互作用 2 6 替代模型 Decision tree s