我试图了解Caret控制设置的工作原理 . 我通过Caret控制功能使用交叉验证运行一些实验,例如
fitControl <- trainControl(## 10-fold CV
method = "repeatedcv",
number = 10,
## repeated ten times
repeats = 10)
要么
control <- rfeControl(functions=rfFuncs, method="repeatedcv", number=5, repeats = 5)
我的问题是,如果我在运行实验之前设置一些种子数,即
set.seed(5432)
control <- trainControl(...)
results <- train(..., control)
...
每次运行实验时,它是否保证每个折叠包含完全相同的样品?例如,假设我有id = {1:100}的样本并且使用Caret 10倍交叉验证,我的折叠是:fold1 = {1:10},fold2 = {11:20},...,fold10 = {91:100} . 我的问题是,如果我使用相同的种子数重新运行实验,我的折叠仍然与之前的运行完全相同?
我知道设置种子数有助于重现性,但我只需要一个确认的答案,这就是究竟会发生什么 .
非常感谢,
2 回答
有两种方法可以将种子设置为可重复性 .
在火车功能之前调用set.seed .
在trainControl(或rfeControl)中设置种子
有关选项2的更多信息,请查看帮助,但这也是SO question
更多详细信息,请参见培训页面caret website, Notes on Reproducibility
而不是这样做你可以重复10倍CV 100次而不是10次来稳定答案 . 我认为这是一个更诚实的做法 .