Random Forest 解释模型

  • 1. 介绍
  • 2. 理解随机森林运行机理
    • 2.1导入需要的包
    • 2.2 构建随机森林模型
    • 2.3 RF特征重要性:
    • 2.4 特征对预测结果的影响
    • 2.5 交互作用
    • 2.6 替代模型(Decision tree surrogate model)
    • 2.7 LocalModel方法

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)

结果显示:

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

  1. R语言决策树、bagging、随机森林模型在训练集以及测试集的预测结果(accuray、F1、偏差Deviance)对比分析、计算训练集和测试集的预测结果的差值来分析模型的过拟合(overfit)情况

    R语言决策树.bagging.随机森林模型在训练集以及测试集的预测结果(accuray.F1.偏差Deviance)对比分析.计算训练集和测试集的预测结果的差值来分析模型的过拟合(overfit)情况 ...

  2. R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型

    R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型 目录 R语言xgboost包:使用xgboost算法实现随机森林(random forest)模型

  3. 【机器学习】 随机森林(Random Forest)

    1 什么是随机森林? 作为新兴起的.高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来 ...

  4. [Machine Learning Algorithm] 随机森林(Random Forest)

    1 什么是随机森林? 作为新兴起的.高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来 ...

  5. 使用随机森林(Random Forest)进行特征筛选并可视化

    使用随机森林(Random Forest)进行特征筛选并可视化 随机森林可以理解为Cart树森林,它是由多个Cart树分类器构成的集成学习模式.其中每个Cart树可以理解为一个议员,它从样本集里面随机 ...

  6. 机器学习5—分类算法之随机森林(Random Forest)

    随机森林(Random Forest) 前言 一.随机森林 1.什么是随机森林 2.随机森林的特点 3.随机森林的生成 二.随机森林的函数模型 三.随机森林算法实现 1.数据的读取 2.数据的清洗和填 ...

  7. 随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测

    随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测 1.引言 2.理论基础 2.1 什么是决策树 2.2 特征选择的算法 2.2.1 ID3:基于 ...

  8. 随机森林(Random Forest)简单介绍

    文章目录 随机森林(Random Forest)简单介绍 1. 介绍 2. 工作原理 2.1 随机森林的基本原理 2.1.1 随机采样 2.1.2. 随机选特征 2.1.3. 多数表决 2.2 随机森 ...

  9. Machine Learning | (8) Scikit-learn的分类器算法-随机森林(Random Forest)

    Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集 ...

最新文章

  1. 框架页面jquery装载
  2. php simpletest 测试数据库,在PHP中使用SimpleTest进行单元测试
  3. 08-CoreData学习总结
  4. 从零开始使用Skywalking分布式链路追踪系统
  5. SignalR 中丰富多彩的消息推送方式
  6. 关于压缩工具 7z(7-zip) 的选项 -x(排除文件)的解读
  7. php类代码中常看到::的操作符
  8. vba ado返回集合_利用VBA代码导出工作表中的图片
  9. 作业一:建立博客、自我介绍、速读教材、学习进度总结(1)
  10. [家里蹲大学数学杂志]第392期中山大学2015年泛函分析考博试题回忆版
  11. vb精简版12M大小含msinet.ocx控件
  12. Xcode打包IPA包
  13. 简单几招,教你将GIF动图转换为JPG图片
  14. java 气象局api_【开放数据】中国气象局API接口
  15. 实名认证需谨慎,避免陷入隐私泄露风险
  16. Nacos 注册中心主要贡献者详解注册中心的设计原理
  17. 台式电脑怎么看计算机型号,在电脑上如何查看自己电脑硬件的型号
  18. android-风力风向图
  19. 做网站遇到的兼容性问题,包括兼容ie8以下
  20. java计算机毕业设计面向对象程序设计课程网站源码+系统+mysql数据库+lw文档

热门文章

  1. 对待二手车过户要理性
  2. 发布了每日一文应用,每日一文,每天阅读,简单生活。每天精选一篇不同的文章,也可以随机阅读往日精选文章...
  3. android6.0权限适配RxPermissions
  4. 7.去空格函数-strip
  5. 有人在Github上用几行代码就造了个锤子便签
  6. Python 基础|while 循环语句
  7. ecshop系统前后台出现的几个错误修正升级到PHP5.6后
  8. 跨境电商还有发展前景吗?跨境电商应该怎么运营?
  9. 1天1个岗位画像洞察-无线DPM岗位
  10. 如何将汉字写得又好又快