R{caret}trainControl(index=createFolds())更改默认调优参数?

R{caret}trainControl(index=createFolds())更改默认调优参数?,r,random-forest,r-caret,R,Random Forest,R Caret,花了很多时间试图阅读{caret}文档(,和)以及{randomForest}文档。只是不明白这里发生了什么 当我在trainControl中使用参数index=createFolds()运行以下代码时,mtry的尝试值为2、28和54: # Specify fit parameters set.seed(55555) fc = trainControl(method = "cv", returnResamp = "all", verboseIter = T,

花了很多时间试图阅读
{caret}
文档(,和)以及
{randomForest}
文档。只是不明白这里发生了什么

当我在
trainControl
中使用参数
index=createFolds()
运行以下代码时,
mtry
的尝试值为22854

# Specify fit parameters
set.seed(55555)
fc = trainControl(method = "cv", returnResamp = "all", verboseIter = T, 
                  index = createFolds(fct.og$cover[trn.idx]))

# randomForest Model 1
set.seed(55555)
rf.M1 = train(x = fct.og[trn.idx, -55], 
              y = fct.og[trn.idx, 55], 
              method = "rf", trControl = fc, 
              preProcess = c("nzv", "center", "scale"), 
              verbose = T)
# Specify fit parameters
set.seed(55555)
fc = trainControl(method = "cv", returnResamp = "all", verboseIter = T)

# randomForest Model 1
set.seed(55555)
rf.M1 = train(x = fct.og[trn.idx, -55], 
              y = fct.og[trn.idx, 55], 
              method = "rf", trControl = fc, 
              preProcess = c("nzv", "center", "scale"), 
              verbose = T)
但是,当我在
trainControl()
中未指定参数
index=createFolds()
时,
mtry
的尝试值为21222

# Specify fit parameters
set.seed(55555)
fc = trainControl(method = "cv", returnResamp = "all", verboseIter = T, 
                  index = createFolds(fct.og$cover[trn.idx]))

# randomForest Model 1
set.seed(55555)
rf.M1 = train(x = fct.og[trn.idx, -55], 
              y = fct.og[trn.idx, 55], 
              method = "rf", trControl = fc, 
              preProcess = c("nzv", "center", "scale"), 
              verbose = T)
# Specify fit parameters
set.seed(55555)
fc = trainControl(method = "cv", returnResamp = "all", verboseIter = T)

# randomForest Model 1
set.seed(55555)
rf.M1 = train(x = fct.og[trn.idx, -55], 
              y = fct.og[trn.idx, 55], 
              method = "rf", trControl = fc, 
              preProcess = c("nzv", "center", "scale"), 
              verbose = T)
默认情况下,我知道
序列(tuneLength=3)
,因此我知道为什么只使用三个值。只是不了解幕后发生了什么导致
mtry
的值不同。我确信这是用户错误,我在文档中遗漏了一些明显的东西


最后一个问题:使用参数
trainControl(index=createFolds())
code,模型运行速度要快得多。有什么原因吗?似乎
trainControl(method=“cv”,number=10)
的默认值与
createFolds(k=10)
的默认值相同?

提供了一个可复制的示例,
sessionInfo
的结果将有助于回答您的问题。预测因素中有哪些因素?等等。不过还有一些辅助说明。首先,您需要将
returnTrain=TRUE
createfold
一起使用。它运行得非常快,因为您正在使用10%的数据进行培训。其次,
train
randomForest
@topepo Max没有
verbose
选项,非常感谢您的回复。在查看两个
train
对象时,唯一不同的是
trainControl(index=)
参数,我看到了
obj$control$index
obj$control$indexOut
的长度差异(它们看起来是转置的)。还感谢您提供有关
verbose
的提示,尽管我在
train()
期间会将输出打印到控制台,就好像它是打开的一样。我将处理一个易于运行的可复制示例,当前的示例具有约580000个元组和55个属性。再次感谢您,Michael提供了一个可复制的示例和
sessionInfo
的结果将有助于回答您的问题。预测因素中有哪些因素?等等。不过还有一些辅助说明。首先,您需要将
returnTrain=TRUE
createfold
一起使用。它运行得非常快,因为您正在使用10%的数据进行培训。其次,
train
randomForest
@topepo Max没有
verbose
选项,非常感谢您的回复。在查看两个
train
对象时,唯一不同的是
trainControl(index=)
参数,我看到了
obj$control$index
obj$control$indexOut
的长度差异(它们看起来是转置的)。还感谢您提供有关
verbose
的提示,尽管我在
train()
期间会将输出打印到控制台,就好像它是打开的一样。我将处理一个易于运行的可复制示例,当前的示例具有约580000个元组和55个属性。再次感谢你,迈克尔