您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页【R模型】R语言并行计算随机森林模型

【R模型】R语言并行计算随机森林模型

来源:好走旅游网


   随机森林是通过分装包裹。这个算法基本上是创建了一个有很多树的森林。属于一种监督分类算法。本期主要想介绍如何通过并行提高大数据量下随机森林的运算速度。

   众所周知,如果我们在森林中有更多的树,它会给所有人带来最好的审美吸引力,并被视为最好的森林。随机森林分类器中也是如此,树的数量越多,准确性就越好,是一个更好的模型。当然,随机森林也存在缺点。

随机森林优点:

  • 适合处理大型数据集。
  • 学习速度快,精度高。
  • 可以一次处理大量的变量。
  • 该模型不用担心过拟合。

随机森林缺点:

  • 复杂性是一个主要问题。由于该算法创建了许多树并组合其输出以产生最佳输出,因此需要更多的计算时间和资源。
  • 训练随机森林模型的时间通常更长,因为它会生成大量树。
    因此,今天我们主要与大家分享如何通过并行提高随机森林的运行速度。

🐣 一、并行计算的简介

并行计算基本上是指在同一实例中使用两个或两个以上(或处理器)来解决一个存在的问题。这里的主要目标是将任务分解为更小的子任务并同时完成它们。

一个简单的示例将阐明并行计算的核心思想:
假设下面的表达式来评估:

Z= 7a + 8b + 2c + 3d

如果没有并行运行的过程是:
1)输入变量的数值

Z = (7*1) + (8*2) + (2*9) + (3*5)

2)评估表达式:

Z = 7 + (8*2) + (2*9) + (3*5)

3)按顺序进行计算:

Z = 7 + 16 + (2*9) + (3*5)
Z = 7 + 16 + 18 + (3*5)
Z = 7 + 16 + 18 + 15
Z = 56

并行计算同一个式子的过程:

Z = (7*1) + (8*2) + (2*9) + (3*5)
Z = 7 + 16 + 18 + 15
Z = 56

这一看,节省了很多步骤,肯定比上面步骤所运行速度估计得快很多。

🐤 二、R语言并行计算随机森林

1.加载所需R包

library(caret)
library(randomForest)
library(doParallel)数据格式如下:

2.读取数据集

train_data <- read.csv("train_data.csv", header = T)
test_data <- read.csv("test_data.csv", header = T)

3.查看数据结构

dim(train_data)
dim(test_data)
str(train_data)
str(test_data)

考虑数据中是否存在缺失值,如果有可以剔除:

table(is.na(train_data))
table(is.na(test_data))

剔除需要用到,na.omit函数。从结果图来看不存在,因此不需要处理。

现在我们将正常构建模型并记录所花费的时间:

start.time<-proc.time()
model<-train(Survived ~., data=train_data, method='rf')
stop.time<-proc.time()
run.time<-stop.time -start.time
print(run.time)

现在用并行计算构建模型,加载doParallel包。我们可以看到函数 makePSOCKcluster() 创建了一组并行运行集群R 副本。stopCluster() 在 cl 中停止集群中的引擎节点。我们还将记录通过这种方法构建模型所花费的时间。

no_cores <- detectCores()/2
cl<-makePSOCKcluster(no_cores)
registerDoParallel(cl)

start.time<-proc.time()
model <- train(Survived~., data=train_data, method='rf')
stop.time<-proc.time()
run.time<-stop.time -start.time
print(run.time)
stopCluster(cl)

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务