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

本文介绍了如何使用iml包来分析随机森林模型,包括计算特征重要性、理解特征对预测结果的影响(ALE),评估特征交互作用,以及用决策树作为替代模型以增加可解释性,并利用LocalModel进行单个实例的解释。
摘要由CSDN通过智能技术生成

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)

在这里插入图片描述

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jackson的生态模型

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值