喜欢用于创建随机森林模型的 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.trees
和 mtry
作为输入,所以你可以尝试在那里调整它。
关于r - 在 R 中使用纯游侠包进行超参数调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37514603/