使用插入符号在随机森林中显式设置 ntree 和 mtry

Setting ntree and mtry explicitly in Random Forest with caret

我正在尝试将树的数量和 mtry 显式传递到带有插入符的随机森林算法中:

library(caret)
library(randomForest)
repGrid<-expand.grid(.mtry=c(4),.ntree=c(350))
controlRep <- trainControl(method="cv",number = 5)

rfClassifierRep <- train(label~ .,
                      data=overallDataset,
                      method="rf",
                      metric="Accuracy",
                      trControl=controlRep,
                      tuneGrid = repGrid,)

我收到这个错误:

Error: The tuning parameter grid should have columns mtry

我先尝试了更明智的方法:

rfClassifierRep <- train(label~ .,
                      data=overallDataset,
                      method="rf",
                      metric="Accuracy",
                      trControl=controlRep,
                      ntree=350,
                      mtry=4,
                      tuneGrid = repGrid,)

但这导致了一个错误,指出我的超参数太多了。这就是我尝试制作 1x1 网格的原因。

ntree 不能是随机森林 tuneGrid 的一部分,只能是 mtry (参见每个模型的调整参数的详细目录 here);你只能通过 train 传递它。反之,既然你调 mtry,后者就不能成为 train.

的一部分

总而言之,这里的正确组合是:

repGrid <- expand.grid(.mtry=c(4))  # no ntree

rfClassifierRep <- train(label~ .,
                      data=overallDataset,
                      method="rf",
                      metric="Accuracy",
                      trControl=controlRep,
                      ntree=350, 
                      # no mtry
                      tuneGrid = repGrid,)