Я хочу сделать несколько моделей машинного обучения и сравнить результаты, чтобы выбрать лучшую модель.
По данным 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», но он по-прежнему показывает небольшие размеры выборки.
Я не смог найти подходящего руководства по этой проблеме с поиском в Google.
Я думаю, что код, использованный в следующем URL-адресе, не отличается от того, который я использовал.
https://lgatto.github.io/IntroMachineLearningWithR/supervised-learning.html#model-selection-1
Любая помощь будет оценена. :)