R:在随机森林中调整 mtry 时出错(回归)

R: Error tuning mtry in random forest (regression)

我有以下代码来调整随机森林回归模型的 mtry 超参数:

set.seed(42)

mtry <- 1:10

# Define train control
trControl <- trainControl(method = "cv",
                          number = 10,
                          search = "grid")

for (i in mtry) {
  rf_random <- train(Price.Gas~., data=data_train,
                 method = "rf",
                 mtry = i,
                 metric = "RMSE",
                 trControl = trControl)
}

但是,我收到错误 (实际上会针对不同的 mtry 值重复自身):

model fit failed for Fold01: mtry= 2 Error in randomForest.default(x, y, mtry = param$mtry, ...) : 
  formal argument "mtry" matched by multiple actual arguments

我怎样才能让这项工作测试不同的 mtry 值?

默认情况下,插入符号会在网格上调整 mtry,请参阅 manual 因此您不需要使用循环,而是在 tuneGrid= 中定义它:

library(caret)
set.seed(42)

data_train = data.frame(Price.Gas = rnorm(100),matrix(rnorm(1000),ncol=10))

trControl <- trainControl(method = "cv",number = 10)

rf_random <- train(Price.Gas~., data=data_train,
                   method = "rf",
                   tuneGrid = data.frame(mtry = 1:10),
                   metric = "RMSE",
                   trControl = trControl)

Random Forest 

100 samples
 10 predictor

No pre-processing
Resampling: Cross-Validated (10 fold) 
Summary of sample sizes: 89, 90, 91, 89, 91, 90, ... 
Resampling results across tuning parameters:

  mtry  RMSE       Rsquared   MAE      
   1    0.8556649  0.2122988  0.6921878
   2    0.8458829  0.2102749  0.6808978
   3    0.8518204  0.1975061  0.6909111
   4    0.8451160  0.1918390  0.6871511
   5    0.8386129  0.2037676  0.6808157
   6    0.8476718  0.1949056  0.6889514
   7    0.8434816  0.2082844  0.6833892
   8    0.8447137  0.1979602  0.6860908
   9    0.8419739  0.1960369  0.6825207
  10    0.8533284  0.1876459  0.6892574

RMSE was used to select the optimal model using the smallest value.
The final value used for the model was mtry = 5.