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

Extreme long runtime for "rf" using Caret package in R

我正在使用 caret 包中的 rf 使用 R(和 Rstudio)训练模型。训练数据集是一个有 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)

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

我阅读了 caret 文档,我可能应该在 trainControl 中设置 verboseIter = TRUE 以获取有关计算时发生的事情的一些信息。我想没有 "while calculating" 请求进度信息的方法吧?

第三个问题:trainControltrain 中是否还有其他参数,我应该经常使用这些参数来获取计算过程中的信息?

谢谢!

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

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

之后的调整参数选择,对完整训练集进行 1 个最终训练集。

并进一步回答您的问题:

  1. 估计这个的唯一方法是运行你的模型在不同的机器上并将所有东西设置为 1,(repeatedcv,number = 1,repeat = 1,并且在火车中,tunelength = 1)那给你一个基本估计。
  2. 正确
  3. verboseIter 是要走的路。