Caret :: groupKFold и проверка / тестирование - PullRequest
0 голосов
/ 18 октября 2018

Это неизвестная территория, поэтому, пожалуйста, дайте мне знать, если вопрос не ясен.

Я пытаюсь подобрать случайный лес с помощью каретки.У меня есть набор данных около 160 наблюдений, где 60/160 - это повторные измерения, поэтому мне нужно убедиться, что одни и те же идентификаторы (пациенты) не используются для обучения и проверки.Из-за этого я использовал groupKFold, чтобы создать 5 сгибов перед тренировкой модели.

Что я не могу понять, так это в какой момент я использую / выбираю данные для фактического тестирования / проверки ПОСЛЕ обучения модели?Другими словами, где находятся "новые данные"?predict(rf_mod, "??")

folds <- groupKFold(rf_data$id, k = 5)

rf_data <- rf_data %>% select(-id)

fitControl <- trainControl(method = "cv",
                           number = 5,
                           index = folds,
                           search = "random")

rf_mod <- train(cancer ~ ., rf_data,
                method = "rf",
                trControl = fitControl)

1 Ответ

0 голосов
/ 21 октября 2018

Прежде всего, хорошей практикой является написание кода, который можно воспроизвести.Мы не сидим на тех же данных, что и вы ...

Однако этот вопрос довольно прост.Я рекомендую вам взглянуть на документацию, ?groupKFold.Где вы можете увидеть: «Серия тестовых / обучающих разделов создается с использованием createDataPartition» и «groupKFold разбивает данные на основе коэффициента группировки».

В представленном вами коде вы разбиваете данныев различные перекрестные проверки, но затем вы используете все ваши данные в обучении.Используя createDataPartition до и groupKFold, вы можете, например, удерживать 70% своих данных:

set.seed(10)
train_ind <- createDataPartition(rf_data$cancer, p=0.7, list=FALSE)
train_dat <- rf_data[train_ind,]
test_dat <- rf_data[!train_ind,]
...