我想制作多个机器学习模型并比较结果以选择最佳模型。
根据DataCamp,为了公平比较多个模型,折叠时模型必须使用相同的训练/测试拆分。 因此,建议不要使用以下代码,而应该使用createFolds()来创建用于创建每个模型的自定义索引。
trainControl(method="cv", number = 5, ...)
为了比较交叉验证的过程,我首先尝试了以下代码。
> myGrid <- data.frame(mtry=2)
>
> trc <- trainControl(method="cv", number = 5, verboseIter = TRUE)
> m <- train(cyl~., mtcars, trControl = trc, tuneGrid=myGrid)
+ Fold1: mtry=2
- Fold1: mtry=2
+ Fold2: mtry=2
- Fold2: mtry=2
+ Fold3: mtry=2
- Fold3: mtry=2
+ Fold4: mtry=2
- Fold4: mtry=2
+ Fold5: mtry=2
- Fold5: mtry=2
> m
Random Forest
32 samples
10 predictors
No pre-processing
Resampling: Cross-Validated (5 fold)
Summary of sample sizes: 27, 25, 25, 25, 26
我尝试了与我制作的自定义折叠相同的交叉验证(k = 5)。
> myFolds <- createFolds(mtcars$cyl, k=5)
> trc_index <- trainControl(index=myFolds, verboseIter = TRUE)
> m_index <- train(cyl~., mtcars, trControl = trc_index, tuneGrid=myGrid)
+ Fold1: mtry=2
- Fold1: mtry=2
+ Fold2: mtry=2
- Fold2: mtry=2
+ Fold3: mtry=2
- Fold3: mtry=2
+ Fold4: mtry=2
- Fold4: mtry=2
+ Fold5: mtry=2
- Fold5: mtry=2
> m_index
Random Forest
32 samples
10 predictors
No pre-processing
Resampling: Bootstrapped (5 reps)
Summary of sample sizes: 6, 6, 6, 7, 7
最大的区别是“重新采样”(交叉验证与自举)和“样本大小摘要”(27对6)。
我认为打印的重采样方法可能是错误的,因为我没有明确将重采样方法输入为'cv'。
但是我认为不同的样本量告诉我,我做的不正确。每次迭代的样本量应为25。
我尝试使用“ indexOut”而不是“ index”,但是它仍然显示较小的样本量。
关于谷歌搜索,我找不到任何合适的指南。
我认为以下网址中使用的代码与我使用的代码没有什么不同。 https://lgatto.github.io/IntroMachineLearningWithR/supervised-learning.html#model-selection-1
任何帮助将不胜感激。 :)