使用caret设置并行种子随机森林以获得可重复的结果

3
我希望使用caret包并行运行随机森林,并像Fully reproducible parallel models using caret中设置种子以获取可再现的结果。但是,我不理解从caret帮助文档中提取的以下代码第9行的作用:为什么我们要采样22个整数(加上第12行和23行的最后一个模型),来评估12个参数k的12个值? 请注意,我希望运行5倍交叉验证来评估RF参数“mtry”的584个值。非常感谢您的帮助。谢谢。
## Not run:

## Do 5 repeats of 10-Fold CV for the iris data. We will fit
## a KNN model that evaluates 12 values of k and set the seed
## at each iteration.

set.seed(123)
seeds <- vector(mode = "list", length = 51)
for(i in 1:50) seeds[[i]] <- sample.int(1000, 22) # Why 22?

## For the last model:
seeds[[51]] <- sample.int(1000, 1)

ctrl <- trainControl(method = "repeatedcv", 
                 repeats = 5,
                 seeds = seeds)

是的,看起来像是一个错误,你会期望对其进行50次采样。即使他们想在折叠之间重复使用种子,你也会期望是10的倍数。我认为这是一个错误。 - smci
1个回答

2

我认为这是一个错误,应该是12而不是22。

据我所知,您将运行模型10*5=50次,对于每个k的值都要运行。因此,对于1到50中的每个i,您需要12个种子(每个k一个)。在获得最佳k值之后,您将运行最终模型。这一次,您只需要一个种子(不再重复采样)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接