Применение k-кратной модели перекрестной проверки с использованием пакета каретки

Позвольте мне начать с того, что я прочитал много сообщений о перекрестной проверке, и, похоже, там много путаницы. Насколько я понимаю, это просто так:

  1. Выполните k-кратную перекрестную проверку, т.е. 10-кратную перекрестную проверку, чтобы понять среднюю ошибку для 10-кратной проверки.
  2. Если возможно, обучите модель на полном наборе данных.

Я пытаюсь построить дерево решений, используя rpart в R и используя пакет caret. Ниже приведен код, который я использую.

# load libraries
library(caret)
library(rpart)

# define training control
train_control<- trainControl(method="cv", number=10)

# train the model 
model<- train(resp~., data=mydat, trControl=train_control, method="rpart")

# make predictions
predictions<- predict(model,mydat)

# append predictions
mydat<- cbind(mydat,predictions)

# summarize results
confusionMatrix<- confusionMatrix(mydat$predictions,mydat$resp)

У меня есть один вопрос по приложению "поезд каретки". Я прочитал раздел поезда Краткое введение в пакет каретки который гласит, что во время процесса передискретизации определяется «оптимальный набор параметров».

В моем примере я правильно его закодировал? Нужно ли мне определять rpart параметры в моем коде или моего кода достаточно?


person pmanDS    schedule 02.11.2015    source источник


Ответы (3)


когда вы выполняете k-кратную перекрестную проверку, вы уже делаете прогноз для каждой выборки, чуть более 10 различных моделей (предполагая, что k = 10). Нет необходимости делать прогнозы на основе полных данных, поскольку у вас уже есть их прогнозы по k различным моделям.

Вы можете сделать следующее:

train_control<- trainControl(method="cv", number=10, savePredictions = TRUE)

потом

model<- train(resp~., data=mydat, trControl=train_control, method="rpart")

если вы хотите увидеть наблюдаемые и прогнозы в удобном формате, просто введите:

model$pred

Также для второй части вашего вопроса каретка должна обрабатывать все параметры. При желании вы можете попробовать настроить параметры вручную.

person zacdav    schedule 02.11.2015

Здесь важно отметить, что не следует путать выбор модели и оценку ошибки модели.

Вы можете использовать перекрестную проверку для оценки гиперпараметров модели (например, параметра регуляризации).

Обычно это делается с 10-кратной перекрестной проверкой, потому что это хороший выбор для компромисса смещения-дисперсии (2-кратное может вызвать модели с высоким смещением, исключение одного cv может привести к моделям с высокой дисперсией / чрезмерной подгонкой) .

После этого, если у вас нет независимого набора тестов, вы можете оценить эмпирическое распределение некоторой метрики производительности с помощью перекрестной проверки: как только вы найдете лучшие гиперпараметры, вы можете использовать их для оценки ошибки de cv.

Обратите внимание, что на этом этапе гиперпараметры фиксированы, но, возможно, параметры модели отличаются в моделях перекрестной проверки.

person jorjasso    schedule 01.12.2016

На первой странице краткого вводного документа для пакета каретки , упоминается, что оптимальная модель выбирается по параметрам. В качестве отправной точки необходимо понимать, что перекрестная проверка - это процедура выбора наилучшего подхода к моделированию, а не сама модель CV - окончательный выбор модели. Caret предоставляет возможность поиска по сетке с использованием tuneGrid, где вы можете предоставить список значений параметров для тестирования. Окончательная модель будет иметь оптимизированный параметр после завершения обучения.

person KarthikS    schedule 30.06.2016