随机森林(R语言)

作者: 三猫后端 | 来源:发表于2018-10-05 22:11 被阅读2次

原文链接:随机森林(R语言)

微信公众号:机器学习养成记    搜索添加微信公众号:chenchenwings


随机森林可处理大量输入变量,并且可以得到变量重要性排序,在实际中,有广泛应用。本文简要展示R语言实现随机森林的示例代码,并通过F值判断模型效果。

随机森林

随机森林是一种常用的集成学习算法,基分类器为决策树。每棵树随机选择观测与变量进行分类器构建,最终结果通过投票得到。一般每棵树选择logN个特征(N为特征数),如果每棵树都选择全部特征,则此时的随机森林可以看成是bagging算法。R语言中,可通过randomForest包中的randomForest()函数完成随机森林算法。

R语言实现

导入包与数据,并根据3:7将数据分为测试集和训练集。

target.url <- 'https://archive.ics.uci.edu/ml/machine-learning-databases/undocumented/connectionist-bench/sonar/sonar.all-data'

data <- read.csv(target.url,header = F) 

set.seed(17)  

index <-  which( (1:nrow(data))%%3 == 0 )

train <- data[-index,]

test <- data[index,]

library(randomForest)

进行随机森林训练。randomForest()函数中的两个重要参数为ntree和mtry,其中ntree为包含的基分类器个数,默认为500;mtry为每个决策树包含的变量个数,默认为logN,数据量不大时可以循环选择最优参数值。

err<-as.numeric()

for(i in 1:(length(names(train)))-1){  

  mtry_test <- randomForest(V61~., data=train, mtry=i)    

  err<- append( err, mean( mtry_test$err.rate ) )

}  

print(err)

mtry<-which.min(err)

ntree_fit<-randomForest(V61~., data=train, mtry=mtry, ntree=1000)

plot(ntree_fit)

发现mtry取7时err最小,ntree取900时误差稳定。

得到最终分类器,并观察模型效果和变量重要性。

rf<-randomForest(V61~., data=train, mtry=mtry, ntree=900, importance=T )

rf

模型误差为20.14%。然后可以通过精确度和基尼系数,判断变量重要性。

importance(rf)

varImpPlot(rf)

对测试集进行预测,并计算F值,用来判断模型效果。

pred1<-predict(rf,newdata=test)

Freq1<-table(pred1,test$V61)

tp<-as.data.frame(Freq1)[4,3]

tn<-as.data.frame(Freq1)[1,3]

fn<-as.data.frame(Freq1)[2,3]

fp<-as.data.frame(Freq1)[3,3]

p<-tp/(tp+fp)

r<-tp/(tp+fn)

f<-2/(1/p+1/r)

最终发现,F值为0.87。


推荐文章

· Bagging算法(R语言)

·静态爬虫与地址经纬度转换(python)

·特征工程(一):前向逐步回归(R语言)

·聚类(三):KNN算法(R语言)

·小案例(六):预测小偷行为(python)

·ggplot2:正负区分条形图及美化

扫描二维码,关注我们。

如需转载,请在开篇显著位置注明作者和出处,并在文末放置机器学习养成记二维码和添加原文链接。

快来关注我们吧!

相关文章

  • 随机森林(R语言)

    原文链接:随机森林(R语言) 微信公众号:机器学习养成记 搜索添加微信公众号:chenchenwings 随机森...

  • R语言 随机森林算法

    在随机森林方法中,创建大量的决策树。 每个观察被馈入每个决策树。 每个观察的最常见的结果被用作最终输出。 新的观察...

  • R语言与随机森林

    运用R语言实现随机森林 安装所需要的包randomForest.在Rstudio中输入所需安装的包的名称进行安装。...

  • 随机森林-R

    这里与Python的区别在于R中有一种变量叫factor,是专门用来表示分类对象的,我们需要把分类结果转换成fac...

  • 扩增子随机森林图 2022-07-27

    R语言randomForest包的随机森林分类模型以及对重要变量的选择 https://cloud.tencent...

  • 基于R语言的随机森林算法

    随机森林基本原理 随机森林,从字面理解就是随机生成的树构成的森林,树与树之间是独立的。每一颗树就是决策树,所以说随...

  • R语言实现随机森林(randomForest)分析

    姓名:童莹萍 学号:19021210910 嵌牛导读:randomForest 包提供了利用随机森林算法解决分类和...

  • 随机森林

    随机森林(原理/样例实现/参数调优) R包randomForest的随机森林分类模型以及对重要变量的选择 简单易懂...

  • 分类树/装袋法/随机森林算法的R语言实现

    本文是我自己动手用R语言写的实现分类树的代码,以及在此基础上写的袋装法(bagging)和随机森林(random ...

  • 解决R出现“二进列运算符中有非数值参数”的错误!

    解决R语言出现“二进列运算符中有非数值参数”的错误! 问题描述 今天在用R来复现一个随机森林分类问题的时候,在运行...

网友评论

    本文标题:随机森林(R语言)

    本文链接:https://www.haomeiwen.com/subject/sihcaftx.html