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
的尝试值为2、28和54:
# 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
的尝试值为2、12和22:
# 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个属性。再次感谢你,迈克尔