众所周知,如果我们在森林中有更多的树,它会给所有人带来最好的审美吸引力,并被视为最好的森林。随机森林分类器中也是如此,树的数量越多,准确性就越好,是一个更好的模型。当然,随机森林也存在缺点。
随机森林优点:
随机森林缺点:
并行计算基本上是指在同一实例中使用两个或两个以上(或处理器)来解决一个存在的问题。这里的主要目标是将任务分解为更小的子任务并同时完成它们。
一个简单的示例将阐明并行计算的核心思想:
假设下面的表达式来评估:
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
这一看,节省了很多步骤,肯定比上面步骤所运行速度估计得快很多。
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)
因篇幅问题不能全部显示,请点此查看更多更全内容