首页 文章

Caret交叉验证

提问于
浏览
2

我试图了解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 回答

  • 3

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

    • 在火车功能之前调用set.seed .

    • 在trainControl(或rfeControl)中设置种子

    有关选项2的更多信息,请查看帮助,但这也是SO question

    更多详细信息,请参见培训页面caret websiteNotes on Reproducibility

  • 0

    而不是这样做你可以重复10倍CV 100次而不是10次来稳定答案 . 我认为这是一个更诚实的做法 .

相关问题