随机森林算法实现--R语言:randomForest函数

这篇具有很好参考价值的文章主要介绍了随机森林算法实现--R语言:randomForest函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、随机模型的介绍

在随机森林方法中,创建了大量的决策树。每个观察结果都被送入每个决策树。 每个观察结果最常用作最终输出。对所有决策树进行新的观察,并对每个分类模型进行多数投票。

  1. 随机森林首先是一种并联的思想,同时创建多个树模型,它们之间是不会有任何影响的,使用相同参数,只是输入不同。
  2. 为了满足多样性的要求,需要对数据集进行随机采样,其中包括样本随机采样与特征随机采样,目的是让每一棵树都有个性。
  3. 将所有的树模型组合在一起。在分类任务中,求众数就是最终的分类结果;在回归任务中,直接求平均值即可。

 

二、随机森林模型建立

1.首先是数据采样的随机:将数据集分为训练集和测试集,均从总数据集中随机抽样。

data1<-iris#加载数据集
data2<-na.omit(data1)#删除空缺值
trainlist<-sample(nrow(data2),7/10*nrow(data2))#将数据集划分为7:3
train_data<-data2[trainlist,]
test_data<-data2[-trainlist,]

 2.其次是考虑特征的随机性:寻找当特征数为多少时,模型的误判率均值最小。

install.packages("randomForest")
library("randomForest")
rate<-1#设置模型误判率向量初始值
n<-ncol(train_data)
for(i in 1:(n-1))
{
  set.seed(1234)
  rf_train<-randomForest(as.factor(train_data$Species)~.,data=train_data,
                         mtry=i,importance=T,proximity=T,ntree=1000)
  rate[i]<-mean(rf_train$err.rate)   #计算基于OOB数据的模型误判率均值
}
plot(rate)#可知当特征选取3时,模型误判率的均值最小

由结果可知,当特征数选取3时,模型误判率均值最小。

随机森林算法实现--R语言:randomForest函数

 

3.构建随机森林模型:将特征值定为3,树模型的个数并不是越多越好,当树模型个数达到一定数值后,整体效果趋于稳定,若建立太多树模型,会导致整体的准确率下降。

set.seed(1000)
rf_train<-randomForest(as.factor(train_data$Species)~.,data=train_data,
                       mtry=3,importance=T,proximity=T,ntree=500)
plot(rf_train)    #绘制模型误差与决策树数量关系图  
importance(rf_train,type=2)#计算平均最小基尼指数
importance(rf_train,type=1)#计算平均准确度下降指数
varImpPlot(rf_train, main = "variable importance")#使用图形的方式对指标的重要性进行可视化

平均最小基尼系数表示随机森林预测准确性的降低程度,该值越大表示该变量的重要性越大。

平均准确率下降指数表示每个变量对分类树每个节点上观测值的异质性的影响,该值越大表示该变量的重要性越大。

由图可知,Petal.Width的两项指标均最大,所以Petal.Width的重要性最大;随着决策树的数量增加,模型误差趋于稳定。

随机森林算法实现--R语言:randomForest函数

随机森林算法实现--R语言:randomForest函数

print(rf_train)#展示随机森林模型简要信息
hist(treesize(rf_train))#展示随机森林模型中每棵决策树的节点数
MDSplot(rf_train,train_data$Species,palette=rep(1,3),pch=as.numeric(train_data$Species),
        main="二维情况下各类别的具体分类情况")#展示数据集在二维情况下各类别的具体分布情况
barplot(rf_train$importance[,1],main="输入变量重要性测度指标柱形图")
box()

随机森林算法实现--R语言:randomForest函数

随机森林算法实现--R语言:randomForest函数

 

 

4. 利用测试集进行预测,并计算预测的准确率。可知预测准确率为93.33%,可认为预测效果较好。

pred<-predict(rf_train,newdata=test_data)#利用训练集进行预测
pred_out_1<-predict(object=rf_train,newdata=test_data,type="prob")#输出概率
table <- table(pred,test_data$Species,dnn=c("预测值","真实值"))#输出混淆矩阵
sum(diag(table))/sum(table)#计算预测准确率
plot(margin(rf_train,test_data$Species),main="观测值被判断正确的概率图")

随机森林算法实现--R语言:randomForest函数

 

随机森林算法实现--R语言:randomForest函数

 

5.利用pROC安装包来绘制ROC曲线,ROC曲线与横坐标轴所围成面积越大,说明模型的判错率越小。由于ROC曲线仅能用于二分类结果,而iris数据集的Species中有三个水平( setosa、virginica、versicolor),因此需要先处理数据,再绘制ROC曲线。

h<-test_data
h$label[h$Species=='setosa']<-1
h$label[h$Species=='virginica']<-0
h<-h[-which(h$Species == 'versicolor')]#剔除类型为versicolor的数据
h$Species<-NULL#去除Species列
head(h,10)#显示前10个数据
pred<-as.numeric(pred)
pred[pred==2]<-1
ran_roc<-roc(h$label,pred)
plot(ran_roc, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),
     grid.col=c("green", "red"),max.auc.polygon=TRUE,auc.polygon.col="skyblue", 
     print.thres=TRUE,main='随机森林模型ROC曲线')#绘制ROC曲线

随机森林算法实现--R语言:randomForest函数

 

       以上就是本文的全部内容,欢迎读者批评指正。


随机森林定义摘自:http://t.csdn.cn/kHjtQ

ROC曲线参考:http://t.csdn.cn/51re0 文章来源地址https://www.toymoban.com/news/detail-467885.html

到了这里,关于随机森林算法实现--R语言:randomForest函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 随机森林算法介绍及多分类预测的R实现

    随机森林(Random Forest)是一种经典的机器学习算法,是数据科学家中最受欢迎和常用的算法之一,最早由Leo Breiman和Adele Cutler于2001年提出。它是基于集成学习(Ensemble Learning)的一种方法,通过组合多个决策树来进行预测和分类,在回归问题中则取平均值。其最重要的特点之

    2024年02月09日
    浏览(40)
  • 数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病...

    这个数据集( 查看文末了解数据免费获取方式 )可以追溯到1988年,由四个数据库组成。克利夫兰、匈牙利、瑞士和长滩。\\\"目标 \\\"字段是指病人是否有心脏病。它的数值为整数,0=无病,1=有病 ( 点击文末“阅读原文”获取完整 代码数据 ) 。 目标: 主要目的是预测给定的人

    2024年02月16日
    浏览(53)
  • 【机器学习】P25 随机森林算法(2) 实现 “波士顿房价” 预测

    随机森林(Random Forest)算法 是一种 集成学习(Ensemble Learning)方法,它由多个决策树组成,是一种分类、回归和特征选择的机器学习算法。 在随机森林中,每个决策树都是独立地训练的,每棵树的建立都是基于随机选取的 特征子集 和随机选取的 训练样本集 。 在分类问题

    2024年02月01日
    浏览(54)
  • Python实现PSO粒子群优化算法优化随机森林分类模型(RandomForestClassifier算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。 PSO是粒子群优化算法(Particle Swarm Optimization)的英文缩写,是一种基于种群的随机优化技术,由Eberhart和Kennedy于1995年提出。粒子群算法模仿昆虫、

    2024年02月13日
    浏览(43)
  • 【机器学习】R语言实现随机森林、支持向量机、决策树多方法二分类模型

    暑期简单学习了机器学习理论知识,当时跟着B站咕泡老师学的,内容讲得蛮详细,实例代码、资料都比较全面,但是学校Python课程开设在这学期,所以用Python进行数据分析、建模等不是很熟悉,所以决定用之前学过的R语言来实现机器学习。R语言的相关包也都比较完善,所以

    2024年02月04日
    浏览(44)
  • 分类预测 | Matlab实现GA-RF遗传算法优化随机森林多输入分类预测

    效果一览 基本介绍 Matlab实现GA-RF遗传算法优化随机森林多输入分类预测(完整源码和数据) Matlab实现GA-RF遗传算法优化随机森林分类预测,多输入单输出模型。GA-RF分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为

    2024年02月07日
    浏览(53)
  • Python实现贝叶斯优化器(Bayes_opt)优化随机森林分类模型(RandomForestClassifier算法)项目实战

    说明:这是一个机器学习实战项目(附带 数据+代码+文档+视频讲解 ),如需 数据+代码+文档+视频讲解 可以直接到文章最后获取。 贝叶斯优化器(BayesianOptimization) 是一种黑盒子优化器,用来寻找最优参数。 贝叶斯优化器是基于高斯过程的贝叶斯优化,算法的参数空间中有大

    2024年02月11日
    浏览(47)
  • 四、分类算法 - 随机森林

    目录 1、集成学习方法 2、随机森林 3、随机森林原理 4、API 5、总结 sklearn转换器和估算器 KNN算法 模型选择和调优 朴素贝叶斯算法 决策树 随机森林

    2024年02月22日
    浏览(49)
  • 分类算法-随机森林实战案例

            随机森林是一种 有监督学习算法 ,是以决策树为基学习器的 集成学习算法 。                 那什么是有监督学习呢?有监督学习就是把有已知结果的数据集拿去训练,如果训练结果与标准答案的精度足够高就可以使用这个模型去预测或者分类未知结果

    2023年04月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包