【发布时间】:2016-07-27 03:34:08
【问题描述】:
我正在尝试使用 'caret' 包对大约 28000 行和 58 列的所有数字数据的数据集运行一些预测。 (如果您想知道,这是 UCI 数据集存储库上的 mash 社交新闻数据集,在将其中的 75% 用于训练数据集之后)
如果页面浏览量超过 1400,我正在尝试在“是”/“否”上运行一些分类模型。
这是我使用的一般输入
library(caret)
library(foreach)
library(doParallel)
cl<-detectCores() *.5
registerDoParallel(cl)
ctrl = trainControl(
summaryFunction = twoClassSummary,
classProbs = TRUE,
savePredictions = 'final', # change to TRUE for all
method = 'cv',
number = kfolds,
repeats = repeats_folds,
verboseIter = TRUE,
seeds = seeds,
allowParallel =TRUE,
preProcOptions = c('scale','center')
)
"train" is the first 58 or so columns exlcuding a couple of irrelevant ones
mod_rf = train(
x = train, y = target,
method = 'rf',
trControl = ctrl,
tuneGrid = grid_rf,
# tuneLength = NULL,
metric=measurement
)
但是,在生成实际预测时,我遇到了一些重大问题。要么我的计算机崩溃并在 Rstudio 上弹出一个提示它需要终止,要么它似乎没有完成。
我有一台 16gb 最先进的 Macbook Pro。有什么我可以或应该做的事情来提高我的表现吗?我在这里使用的核心数量是 4 而不是 8,因为这会减慢我笔记本电脑的其余部分。
【问题讨论】:
-
尝试使用 method = "parRF"。否则随机森林将不会并行运行。
-
尝试使用
method = "ranger"或其他高性能随机森林包之一。请记住,当您使用 X 个 worker 并行运行时,您将始终增加内存需求 X 倍,此外,在并行运行之前查看 Activity Monitor在运行随机森林之前评估您的数据占用了多少内存。 -
@phiver 使用并行处理方式,他将并行运行模型调整,而不是底层 RF 模型。这通常比顺序调整和并行运行每个 RF 模型要快。
标签: r performance memory r-caret