r - 在 R 中使用纯游侠包进行超参数调整

标签 r model random-forest hyperparameters

喜欢用于创建随机森林模型的 ranger 包的速度,但看不到如何调整 mtry 或树的数量。我意识到我可以通过 caret 的 train() 语法来做到这一点,但我更喜欢使用纯游侠带来的速度提升。

这是我使用 Ranger 创建基本模型的示例(效果很好):

library(ranger)
data(iris)

fit.rf = ranger(
  Species ~ .,
  training_data = iris,
  num.trees = 200
)

print(fit.rf)

查看调整选项的官方文档,似乎 csrf() 函数可能提供调整超参数的能力,但我无法正确理解语法:
library(ranger)
data(iris)

fit.rf.tune = csrf(
  Species ~ .,
  training_data = iris,
  params1 = list(num.trees = 25, mtry=4),
  params2 = list(num.trees = 50, mtry=4)
)

print(fit.rf.tune)

结果是:
Error in ranger(Species ~ ., training_data = iris, num.trees = 200) : 
  unused argument (training_data = iris)

而且我更喜欢使用 Ranger 提供的常规(阅读:非 csrf)rf 算法进行调整。关于游侠中任一路径的超参数调整解决方案的任何想法?谢谢!

最佳答案

我认为至少有两个错误:

一、函数ranger没有名为 training_data 的参数.您的错误信息 Error in ranger(Species ~ ., training_data = iris, num.trees = 200) : unused argument (training_data = iris)指那个。当您查看 ?ranger 时,您可以看到这一点。或 args(ranger) .

二、功能csrf ,另一方面,有 training_data作为输入,还需要 test_data .最重要的是,这两个参数没有任何默认值,这意味着您必须提供它们。以下工作没有问题:

fit.rf = ranger(
  Species ~ ., data = iris,
  num.trees = 200
)

fit.rf.tune = csrf(
Species ~ .,
training_data = iris,
test_data = iris,
params1 = list(num.trees = 25, mtry=4),
params2 = list(num.trees = 50, mtry=4)
)

在这里,我刚刚提供了iris作为训练和测试数据集。您显然不想在您的实际应用程序中这样做。此外,请注意 ranger还带num.treesmtry作为输入,所以你可以尝试在那里调整它。

关于r - 在 R 中使用纯游侠包进行超参数调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37514603/

相关文章:

r - 在 Ubuntu 上安装软件包需要很长时间

java - 使用JRI在Java中调用R的sqldf包

model - 在编写测试之前设计模型或编写设计模型的测试是正确的 TDD 实践吗?

asp.net-mvc-3 - 自定义 ActionResult 返回 View = 模型是只读的

Python sklearn RandomForestClassifier 不可重现的结果

r - 获取与矩阵(R)中其他列的最大值相对应的一列中的值?

django - 在 save() 中获取新创建对象的 ID

可以处理 NA 的 R 包/模型

python - 如何在 scikit-learn 中使用交叉验证获得预测概率

r - 如何从嵌套列表中正确省略 NA?