花了很多时间尝试阅读{caret}
文档(here,here和here)以及{randomForest}
文档。只是不明白这里发生了什么。
当我在index = createFolds()
中使用参数trainControl
运行以下代码时,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)
但是,当我不在index = createFolds()
中指定参数trainControl()
时,mtry
尝试的值 2 , 12 , 22 :
# 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)
我默认知道train(tuneLength = 3)
,所以我明白为什么只使用了三个值。只是不了解导致mtry
的值不同的幕后情况。我确定这是用户错误,我在文档中遗漏了一些明显的内容。
最后一个问题:使用参数trainControl(index = createFolds())
代码,模型可以更快地运行很多。有原因吗?似乎trainControl(method = "cv", number = 10)
的默认值与默认值createFolds(k = 10)
?