我想在大型数据集上运行随机森林:100k * 400.当我使用随机森林时需要花费很多时间。我可以使用插入包中的parRF方法来减少运行时间吗? 什么是正确的语法? 以下是一个示例数据框:
dat <- read.table(text = " TargetVar Var1 Var2 Var3
0 0 0 7
0 0 1 1
0 1 0 3
0 1 1 7
1 0 0 5
1 0 1 1
1 1 0 0
1 1 1 6
0 0 0 8
0 0 1 5
1 1 1 4
0 0 1 2
1 0 0 9
1 1 1 2 ", header = TRUE)
我试过了:
library('caret')
m<-randomForest(TargetVar ~ Var1 + Var2 + Var3, data = dat, ntree=100, importance=TRUE, method='parRF')
但我没有看到太大的差异。任何想法?
答案 0 :(得分:9)
您没有看到差异的原因是您没有使用caret
包。您可以使用library()
命令将其加载到您的环境中,但随后运行不使用插入符号的randomForest()
。
我建议首先创建一个仅包含输入变量的数据框(或data.table),以及一个包含结果的向量。我指的是最近更新的caret docs。
x <- data.frame(dat$Var1, dat$Var2, dat$Var3)
y <- dat$TargetVar
接下来,验证您是否有parRF
方法。直到我将我的插入包更新到最新版本(6.0-29)之后我没有。
library("randomForest")
library("caret")
names(getModelInfo())
您应该在输出中看到parRF
。现在您已准备好创建培训模型。
library(foreach)
rfParam <- expand.grid(ntree=100, importance=TRUE)
m <- train(x, y, method="parRF", tuneGrid=rfParam)