【发布时间】:2020-03-29 07:59:00
【问题描述】:
祝大家今天好
我在使用 RF 超参数调优时遇到了代码问题。算法(模拟退火)给我 4000 的 RMSE 值。我不确定它从哪里执行此计算,因为在代码中我没有指定任何网格/值?代码如下,最初是为 SVM 编写的,但我为 RF 编辑过。
svm_obj <- function(param, maximize = FALSE) {
mod <- train(Effort ~ ., data = tr,
method = "rf",
preProc = c("center", "scale", "zv"),
metric = "MAE",
trControl = ctrl,
tuneGrid = data.frame(mtry = 10^(param[1])))
##, sigma = 10^(param[2])))
if(maximize)
-getTrainPerf(mod)[, "TrainRMSE"] else
getTrainPerf(mod)[, "TrainRMSE"]
}
## Simulated annealing from base R
set.seed(45642)
san_res <- optim(par = c(0), fn = svm_obj, method = "SANN",
control = list(maxit = 10))
The answer I get is: $value
[1] 4487.821
$counts
function gradient
10 NA
$convergence
[1] 0
$message
NULL
【问题讨论】:
-
嘿,它对我有用。你得到了什么错误?你的 Mtry 应该在 0 到 1 之间。
-
我在下面发布了类似答案的内容,请告诉我您是否可以使用它
标签: r random-forest hyperparameters