有没有办法跟踪并行随机森林构建过程中的进度?

Is there a way to track progress during parallelized Random Forest building?

我正在使用 R 的插入符号包为 Coursera class 机器学习建模。

我目前正在用包含 11k 个观察值和 40 个特征的数据集构建包含 500 棵树的随机森林。

单核实现花了大约 3 个小时来计算结果,我现在正在试验多核实现(代码如下)

library(parallel)
library(caret)
library(doParallel)
library(foreach)

cl <- makePSOCKcluster(4)
clusterEvalQ(cl, library(foreach))
registerDoParallel(cl)

trCtrl <- trainControl(allowParallel = TRUE)

modFit2 <- train(classe~ ., data=training, trControl = trCtrl, method="parRF", prox=TRUE, ntree = 500)

现在我的问题是:有没有办法在 运行 时间内查看构建模型的进度?是否有并行化 RF 的 package/implementation 可以输出例如在 运行 时构建的树数的进度?

显而易见的问题是:为什么我需要知道?我不能等一两个小时就知道结果吗?这样不会更快,但可能会更慢!

我有很多模型要为我的 class 构建,我不想在每个模型上花费几个小时并想知道它是否 运行ning。我想确认它正在构建树,停止执行并将其安排在我将 运行 完整模型的晚上。我将 运行 为 RF 和其他一些时间密集型模型设置不同的参数配置,所以我宁愿把白天的时间花在编写代码上,而让我的计算机任由 运行 宁计算满我睡觉时的速度(我的浏览器现在几乎不能工作 :P 因为我的 RAM 和 CPU 几乎都在 100%)

您可以使用 getModelInfocat 语句添加到 fit 函数。此外,trainControl 中有一个 verboseIter 选项,您在这里忽略了它。

问题可能出在您正在使用 trainControl(allowParallel = TRUE)。这将尝试适应不同核心的重采样迭代,并使用 method="parRF" 并行适应每个核心。

如果您在您的机器上指定 4 个内核,您可能已经生成了 16 个 worker。您最好使用 method = "rf"trainControl(allowParallel = TRUE)。这也可能意味着您在内存中有 17 个数据副本。