首页 > 解决方案 > train 函数中未使用的参数

问题描述

祝大家好日子

当我使用 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

标签: rrandom-foresthyperparameters

解决方案


好吧,我不知道你用什么值调用你的函数,所以很难发现错误。

但是,mtry 是一个需要介于 1 和列数之间的值,而在我看来,您可能会将其设置为 10 的幂次方 - 这很可能超出范围:)


推荐阅读