在 R 中使用 Caret 包为“rf”提供极长的运行时间

Yam*_*mar 2 r random-forest r-caret

我正在使用 R(和 Rstudio)rfcaret包中训练模型。训练数据集是一个包含 76k 行和 291 列的数据框。我的代码如下:

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)
Run Code Online (Sandbox Code Playgroud)

它已经运行了 24 小时。有什么方法可以估计需要多长时间?

我读的caret文件,我应该可能已经设置verboseIter = TRUEtrainControl拿到发生了什么事情,而其计算的一些信息。我想没有“同时计算”的方式来请求进度信息,对吗?

而第三个问题:是否有内的任何其他参数trainControltrain我应该经常使用来获取计算的信息,而这是在进步吗?

谢谢!

phi*_*ver 5

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

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

并进一步回答您的问题:

  1. 估计这一点的唯一方法是在不同的机器上运行您的模型并将所有内容设置为 1,(repeatedcv,number = 1,repeat = 1,在训练中,tunelength = 1)这为您提供了一个基本估计。
  2. 正确的
  3. verboseIter 是要走的路。