插入符交叉验证

Caret cross validation

我想了解插入符号控件设置的工作原理。我正在 运行 通过 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}。我的问题是,如果我重新运行实验使用相同的种子数,我的折叠仍然与之前的完全相同运行?

我知道设置种子数有助于重现性,但我只需要一个确认答案,即确实发生了什么。

非常感谢,

有两种方法可以设置可重复性种子。

  1. 在训练函数之前调用 set.seed。
  2. 在 trainControl(或 rfeControl)中设置种子

有关选项 2 的更多信息,请查看帮助,还有此 SO question

更多详细信息可在 caret website 的培训页面上找到,第 重现性注释

部分