【问题标题】:Extreme long runtime for "rf" using Caret package in R在 R 中使用 Caret 包的“rf”运行时间极长
【发布时间】:2016-07-04 02:32:19
【问题描述】:

我正在使用 R(和 Rstudio)使用 caret 包中的 rf 训练模型。训练数据集是一个有 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 以获取一些关于它计算时发生了什么的信息。我想没有“同时计算”的方式来请求进度信息,对吧?

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

谢谢!

【问题讨论】:

  • Sessioninfo() 对区分问题更有帮助。您的功能集非常大,您可能想做一些feature selection。如果您准备使用所有这些功能,可以在随机森林中尝试rfcv function。虽然,我仍然相信如果没有功能选择,这将需要一段时间。干杯,科迪
  • 谢谢科迪。我进行了特征选择以降低到这个数字,但确实如此,我仍然可以从randomForest 包中应用rfcv 来进行特征选择。

标签: r random-forest r-caret


【解决方案1】:

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

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

并进一步回答您的问题:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-02
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 2018-05-21
    相关资源
    最近更新 更多