" rf"的超长运行时间在R中使用Caret包

时间:2016-03-17 15:58:13

标签: r random-forest r-caret

我正在使用R(和Rstudio)从rf包中使用caret训练模型。训练数据集是具有76k行和291个cols的数据帧。我的代码如下:

library(caret)

myTrControl <- trainControl(method = "repeatedcv",
                            number = 5,
                            repeats = 3,
                            p = 0.75,
                            classProbs = TRUE,
                            summaryFunction = twoClassSummary)

set.seed(64)
myRF <- train(x = myTrain[ , -c(1, 291)],
              y = myTrain$TARGET,
              data = myTrain,
              method = "rf",
              metric = "ROC",
              maximize = TRUE,
              trControl = myTrControl)

现在已经跑了24个小时了。有没有办法估计需要多长时间?

我阅读了caret文档,我应该在verboseIter = TRUE中设置trainControl,以便了解计算时发生了什么。我想在计算&#34;时没有&#34;请求进展信息的方式,对吗?

第三个问题:trainControltrain中是否还有其他参数我应该经常用它来获取正在进行的计算信息?

谢谢!

1 个答案:

答案 0 :(得分:4)

由于某些因素,在76k记录和291列之外,这需要时间。

您的设置是重复3次的5倍cv,但由于未指定网格,因此正在使用train中的tunelength选项。这有一个默认的操作3.现在发生的是你有5次cv重复3次,调整3个不同的mtry值。所以总共它将训练5 * 3 * 3 = 45次训练课程+当然还有45次在训练中进行测试。在此之后,它将根据cv之后选择的调整参数在完整训练集上进行1次最终训练集。

进一步回答你的问题:

  1. 估算这个的唯一方法是在另一台机器上运行你的模型,并将evertything设置为1,(重复cv,数字= 1,重复= 1,在列车中,tunelength = 1)这给你一个基本估计。
  2. 正确
  3. verboseIter是要走的路。