R随机森林实现

原文链接:来自公众号生信数据挖掘

目录

  • R实现随机森林
    • 随机森林R包
    • 估值过程
    • 袋外错误率(oob error)
    • R randomForest函数实现
      • 安装程序包,查看样本数据结构
      • 建模与观察

R实现随机森林

  • 该文只简单的讲解关于的R的随机森林具体实现步骤,只简单介绍了随机森林,未对原理进行过多解释

  • 随机森林模型是一种预测能力较强的数据挖掘模型,常用于进行分类预测和数据回归分析,这里我们只讨论分类预测。

  • 使用的数据集是R自带的 iris 的数据集
    在这里插入图片描述
    如上图所示, 随机森林模型包含多个树形分类器,预测结果由多个分类器(决策树)投票得出,每个决策树相当于一个大师,通过自己在数据集中学到的知识对于新的数据进行分类。

    在随机森林算法的函数randomForest()中有两个非常重要的参数,而这两个参数又将影响模型的准确性,它们分别是mtry和ntree。一般对mtry的选择是逐一尝试,直到找到比较理想的值,ntree的选择可通过图形大致判断模型内误差稳定时的值。

随机森林R包

randomForest::randomForest 该包中主要涉及5个重要函数,关于这5个函数的语法和参数请见下方:

randomForest(): 此函数用于构建随机森林模型

randomForest(formula, data=NULL, …, subset,na.action=na.fail)

  • formula:指定模型的公式形式,类似于y~x1+x2+x3…;
  • data:指定分析的数据集;
  • .ntree:指定随机森林所包含的决策树数目,默认为500;
  • mtry:指定节点中用于二叉树的变量个数,默认情况下数据集变量个数的二次方根(分类模型)或三分之一(预测模型)。一般是需要进行人为的逐次挑选,确定最佳的m值;

估值过程

  • 指定m值,即随机产生m个变量用于节点上的二叉树,m的选择原则是使错误率最低。
  • 应用bootstrap自助法在原数据集中又放回地抽取k个样本集,组成k棵决策树,每个决策树输出一个结果。
  • 对k个决策树组成的随机森林对样本进行分类或预测:分类原则:少数服从多数;预测原则:简单平均。

袋外错误率(oob error)

如何选择最优的特征个数m,要解决这个问题,我们主要依据计算得到的袋外错误率.
在构建每棵树时,对训练集使用了不同的bootstrap sample(随机且有放回地抽取)。所以对于每棵树而言,部分训练实例没有参与这棵树的生成,它们称为第k棵树的oob样本

袋外错误率(oob error)计算方式如下:

  1. 对每个样本计算它作为oob样本的树对它的分类情况
  2. 以简单多数投票作为该样本的分类结果
  3. 最后用误分个数占样本总数的比率作为随机森林的oob误分率

R randomForest函数实现

在R语言中,我们调用randomForest包中的randomForest()函数来实现随机森林算法。

安装程序包,查看样本数据结构

#R package# install.packages("randomForest")library(randomForest)#选取训练样本(70%)和测试样本(30%)index <- sample(2,nrow(iris),replace = TRUE,prob=c(0.7,0.3))traindata <- iris[index==1,]testdata <- iris[index==2,]

遍历比较确定最优mtry值。mtry参数是随机森林建模中,构建决策树分支时随机抽样的变量个数。选择合适的mtry参数值可以降低随机森林模型的预测错误率。示例的数据中共有4个自变量,可通过遍历设定mtry参数1至4进行4次建模,并打印出每次建模的错误率,选择错误率最低的mytry取值。

- 选择最优mtry参数值

n <- ncol(iris) -1errRate <- c(1)for (i in 1:n){ m <- randomForest(Species~.,data=iris,mtry=i,proximity=TRUE) err<-mean(m$err.rate)errRate[i] <- err  }  print(errRate)[1] 0.05462878 0.04320072 0.04302654 0.04316091#选择平均误差最小的m  m= which.min(errRate)  print(m)

输出结果:[1] 3
根据遍历打印结果,当mtry=3时,错误率达到最低,因此本次建模过程中以3作为mtry参数值
选择合适的ntree参数值: ntree参数指出建模时决策树的数量。ntree值设置过低会导制错误率偏高,ntree值过高会提升模型复杂度,降低效率。以mtry=3进行随机森林建模,并将模型错误率与决策树数量的关系可视化,如下:

- 选择最优ntree参数值

 rf_ntree <- randomForest(Species~.,data=iris)plot(rf_ntree)

结果图如下:
在这里插入图片描述
从图中可以看到,当ntree=100时,模型内的误差就基本稳定了,出于更保险的考虑,我们确定ntree值为100。

建模与观察

根据以上结果,以mtry=3,mtree=100为参数建立随机森林模型,并打印模型信息

m <- randomForest(Species~.,data=traindata,mtry=3,ntree=100, proximity=TRUE)print(m)

结果如下所示:

Call:randomForest(formula = Species ~ ., data = traindata, mtry = 3,      ntree = 100, proximity = TRUE) Type of random forest: classificationNumber of trees: 100No. of variables tried at each split: 3OOB estimate of  error rate: 5.41%Confusion matrix:setosa versicolor virginica class.errorsetosa         39          0         0  0.00000000versicolor      0         33         3  0.08333333virginica       0          3        33  0.08333333
  • MDSplot():函数用于实现随机森林的可视化
specialmds <- cmdscale(1 - m$proximity, eig=TRUE)op <- par(pty="s")pdf("trees_proximity.pdf")pairs(cbind(traindata[,1:length(traindata)-1], specialmds$points), cex=0.6, gap=0,col=c("red", "green", "blue")[as.numeric(traindata$Species)], main=":Predictors and MDS of Proximity Based on RandomForest")par(op)print(specialmds$GOF)dev.off()

在这里插入图片描述

  • importance()函数:用于计算模型变量的重要性
importance(m)

结果:

   MeanDecreaseGiniSepal.Length         1.201101Sepal.Width          1.685455Petal.Length        32.926760Petal.Width         37.559478

绘制重要性图示:

varImpPlot(m)

在这里插入图片描述从返回的数据和图形可知,在四个变量中,Petal.Width和Petal.Length最为重要,其次分别是Sepal.Length和Sepal.Width.

- 接着使用已建立好的随机森林模型进行新数据集的测试

pred <- predict(m,newdata=testdata)

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

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

相关文章

随机森林 – Random forest

随机森林 – Random forest 随机森林是一种由决策树构成的集成算法&#xff0c;他在很多情况下都能有不错的表现。 本文将介绍随机森林的基本概念、4 个构造步骤、4 种方式的对比评测、10 个优缺点和 4 个应用方向。 什么是随机森林&#xff1f; 随机森林属于 集成学习 中的 …

随机森林原理详解 random forest 代码+参数讲解

事实上随机森林的基本单元决策树很早就被提出来了&#xff0c;只不过单个决策树效果不好。这个情况和神经网络差不多。 到了2001年Breiman把分类树组合成随机森林&#xff08;Breiman 2001a&#xff09;&#xff0c;即在变量&#xff08;列&#xff09;的使用和数据&#xff0…

随机森林及应用

学习了B站视频《随机森林及应用》&#xff0c;记录一下学习笔记啦&#xff0c;原视频链接&#xff1a;Python机器学习算法实践Ⅲ-随机森林及应用。 一、随机森林属于集成学习&#xff0c;所以首先了解集成学习。在集成学习中&#xff0c;主要分为Bagging算法和Boosting算法。 B…

随机森林(Random Forests)介绍

1.决策树&#xff08;Decision Tree&#xff09; 决策树是一种树形结构&#xff0c;其中每个内部节点表示一个属性上的测试&#xff0c;每个分支代表一个测试输出&#xff0c;每个叶节点代表一种类别。常见的决策树算法有C4.5、ID3和CART。ID3算法用的是信息增益&#xff0c;C…

使用随机森林进行特征选择

绘制随机森林每棵树的决策边界 首先导入必要的库函数&#xff1a; from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import make_moons from sklearn.model_selection import train_test_split import matplotlib.pyplot as plt import numpy as…

python实现随机森林

定义&#xff1a; 随机森林指的是利用多棵决策树对样本进行训练并预测的一种分类器。可回归可分类。 所以随机森林是基于多颗决策树的一种集成学习算法&#xff0c;常见的决策树算法主要有以下几种&#xff1a; 1. ID3&#xff1a;使用信息增益g(D,A)进行特征选择 2. C4.5&…

教你体验目前最火AI - 在craft AI assistant 使用chatGPT

atGPT大火之后&#xff0c;很多人都想体验一把&#xff0c;今天为大家推荐一种免费方式&#xff0c;体验chatGPT同款内核的AI助手。 craft AI assistant Craft 推出的 AI 助手产品 Craft AI Assistant&#xff0c;并且现在就可以使用。根据 Craft 官方介绍&#xff0c;Craft …

【ChatGPT+AI】持续更新

ChatGPT的缘分 ChatGPT的缘分 一、小白必知1.1ChatGPT是什么&#xff1f;1.2ChatGPT怎么用&#xff1f;1.3ChatGPT登录注意事项 二、ChatGPT实战2.1什么Prompt&#xff1f;2.2ChatGPT怎么发图片2.3ChatGPT快速制作PPT 三、其他AI与免费镜像网站四、星球介绍 ChatGPT的缘分 大家…

DetectGPT VS ChatGPT:AI反击战?

1.背景 随着 ChatGPT 的持续火爆&#xff0c;现在无论哪个行业&#xff0c;几乎是人尽皆知。同时&#xff0c;利用 ChatGPT 进行造假作弊的情况也是层出不穷&#xff0c;尤其是在教育和传媒行业。在美国的一项千人调查中&#xff0c;有89%的学生表示在家庭作业中使用了 ChatGP…

多国拟发ChatGPT禁令 关“野兽”的笼子要来了?

“人工智能想越狱“、”AI产生自我意识”、“AI终将杀死人类”、“硅基生命的进化”.......曾经只在在赛博朋克等科技幻想中出现的剧情&#xff0c;在今年走向现实&#xff0c;生成式自然语言模型正在遭受前所未有的质疑。 聚光灯下最瞩目的那个是ChatGPT&#xff0c;3月底到4…

ChatGPT从入门到精通,深入认识Prompt

ChatGPT从入门到精通&#xff0c;一站式掌握办公自动化/爬虫/数据分析和可视化图表制作 全面AI时代就在转角 道路已经铺好了 “局外人”or“先行者” 就在此刻 等你决定 让ChatGPT帮你高效实现职场办公&#xff01;行动起来吧。欢迎关注专栏 。。。。。 还有更多。。。。&…

【Prompting】ChatGPT Prompt Engineering开发指南(1)

ChatGPT Prompt Engineering开发指南1 Prompting指南设置 提示原则策略1&#xff1a;使用分隔符清楚地指示输入的不同部分策略2&#xff1a;要求结构化输出策略3&#xff1a;让模型检查条件是否满足策略4: “Few-shot”提示 原则2&#xff1a;给模型时间“思考”策略1&#xff…

【ChatGPT】Prompt Engineering入门

Prompt Engineering入门 一、什么是 Prompt Engineering&#xff1f;二、我们还需要学习 PE 吗&#xff1f;三、Prompt基础原则 一、什么是 Prompt Engineering&#xff1f; 简单的理解它是给 AI 模型的指令。它可以是一个问题、一段文字描述&#xff0c;甚至可以是带有一堆参数…

大型语言模型LLM的基础应用

ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型&#xff0c;一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话&#xff0c;还能根据聊天的上下文进行互动&#xff0c;真正像人类一样来聊天交流&#xff0c;甚…

【ChatGPT】怎样计算文本token数量?

ChatGPT 按 token 计费&#xff0c;当你把一段长文本发送给它时&#xff0c;你如何计算该文本消耗了多少 token&#xff1f; 在非流式访问的情况下&#xff0c;ChatGPT 的回复信息中包含有 token 消耗数量。但是在流式访问的情况下&#xff0c;回复信息里没有 token 数量&…

微软用 ChatGPT 改写 Bing、Edge,市值一夜飙涨 5450 亿元!

整理 | 屠敏 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 已经没有什么能够阻挡科技巨头追逐 ChatGPT 的步伐&#xff0c;前有 Google CEO 桑达尔皮查伊亲自下场官宣 Bard AI 对话式系统的到来&#xff0c;后有微软更快一步地推出了应用 ChatGPT 的 Bing 搜索引…

ChatGPT和DALLE-2级联后,输出效果震撼了…

源&#xff5c;机器之心 文&#xff5c;张倩、袁铭怿 生成式 AI 正在变革内容的生产方式。 在过去的一周&#xff0c;相信大家都被 ChatGPT 刷了屏。这个强大的对话 AI 仅用 5 天时间用户量就突破了 100 万。大家用各种方式测试着它的能力上限&#xff0c;其中一种测试方式就是…

ChatGPT 的能力上限将被突破

最近&#xff0c;一篇名为《Scaling Transformr to 1M tokens and beyond with RMT》的论文在 AI 界引起了广泛热议。 该论文提出一种名为 RMT 的新技术&#xff0c;如果能够成功应用&#xff0c;那将把 Transformer 的 Token 上限扩展至 100 万&#xff0c;甚至更多。 GitHub…

ChatGPT 的 10 种集成模式:从开源 AI 体验平台 ClickPrompt 中受到的启发

和国内外的很多公司一样&#xff0c;在 Open AI 公司开放了 ChatGPT API 接口之后&#xff0c;我们也在探索如何去结合到业务中。而在探索的过程中&#xff0c;我们发现了一个问题&#xff0c;大部分的业务人员并不了解 AI 的能力&#xff0c;所以我们开源构建了 ClickPrompt&a…

聊天新纪元:通过和ChatGPT聊天就能开发自己的Chrome插件

文章目录 1. 前言1.1 ChatGPT是什么1.2 ChatGPT能干什么1.3 我要让ChatGPT干什么 2. 环境准备3. 交互过程3.1 发送需求3.2 询问执行3.3 继续提问3.4 加载代码3.5 执行插件3.6 执行插件 4. 生成的代码4.1 manifest.json4.2 popup.css4.3 popup.js4.4 popup.html 5. 总结 1. 前言…