gpt4 book ai didi

R:使用带插入符号的 Ranger、tuneGrid 参数

转载 作者:行者123 更新时间:2023-11-30 08:24:23 25 4
gpt4 key购买 nike

我正在使用caret用于分析使用 ranger 构建的随机森林模型的包。我不知道如何使用tuneGrid参数调用train函数来调整模型参数。

我认为我调用的tuneGrid参数是错误的,但不明白为什么它是错误的。任何帮助将不胜感激。

data(iris)

library(ranger)
model_ranger <- ranger(Species ~ ., data = iris, num.trees = 500, mtry = 4,
importance = 'impurity')


library(caret)

# my tuneGrid object:
tgrid <- expand.grid(
num.trees = c(200, 500, 1000),
mtry = 2:4
)

model_caret <- train(Species ~ ., data = iris,
method = "ranger",
trControl = trainControl(method="cv", number = 5, verboseIter = T, classProbs = T),
tuneGrid = tgrid,
importance = 'impurity'
)

最佳答案

以下是插入符号中 Ranger 的语法:

library(caret)

在调整参数之前添加.:

tgrid <- expand.grid(
.mtry = 2:4,
.splitrule = "gini",
.min.node.size = c(10, 20)
)

只有这三个受插入符号支持,而不是树的数量。在训练中,您可以指定树数和重要性:

model_caret <- train(Species  ~ ., data = iris,
method = "ranger",
trControl = trainControl(method="cv", number = 5, verboseIter = T, classProbs = T),
tuneGrid = tgrid,
num.trees = 100,
importance = "permutation")

获得变量重要性:

varImp(model_caret)

#output
Overall
Petal.Length 100.0000
Petal.Width 84.4298
Sepal.Length 0.9855
Sepal.Width 0.0000

要检查这是否有效,请将树数设置为 1000+ - 拟合速度会慢得多。更改importance = "impurity"后:

#output:

Overall
Petal.Length 100.00
Petal.Width 81.67
Sepal.Length 16.19
Sepal.Width 0.00

如果它不起作用,我建议从 CRAN 安装最新的 ranger 并从 git hub 安装插入符号:

devtools::install_github('topepo/caret/pkg/caret')

要训练树的数量,您可以使用 lapply 以及由 createMultiFoldscreateFolds 创建的固定折叠。

编辑:虽然上面的示例适用于 caret 包版本 6.0-84,但使用不带点的超参数名称也可以。

tgrid <- expand.grid(
mtry = 2:4,
splitrule = "gini",
min.node.size = c(10, 20)
)

关于R:使用带插入符号的 Ranger、tuneGrid 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48334929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com