Caret交叉验证

时间:2016-08-02 11:00:05

标签: r r-caret cross-validation

我想了解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}。我的问题是,如果我使用相同的种子数重新运行实验,我的折叠仍然与之前的运行完全相同?

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

非常感谢,

1 个答案:

答案 0 :(得分:3)

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

  1. 在火车功能开始前调用set.seed。
  2. 在trainControl(或rfeControl)中设置种子
  3. 有关选项2的详细信息,请查看帮助,以及此SO question

    有关详细信息,请参阅培训页面caret website再现性说明

    部分