У меня есть вопрос о предварительной обработке данных, который необходимо уточнить. Насколько я понимаю, когда мы настраиваем гиперпараметры и оцениваем производительность модели с помощью перекрестной проверки, а не предварительной обработки всего набора данных, мы должны делать это в рамках перекрестной проверки. Другими словами, при перекрестной проверке мы предварительно обрабатываем тренировочные сгибы, а затем используем тот же параметр предварительной обработки для обработки тестового сгиба и прогнозирования.
В приведенном ниже примере кода, когда я указываю preProcess в caret :: train, он автоматически это делает? Действительно ценю это, если кто-то может прояснить мне это.
Из некоторых онлайн-источников некоторые люди предварительно обрабатывают весь набор данных (trainset), а затем используют данные предварительной обработки для настройки гиперпараметров с помощью перекрестной проверки, кажется, что это неправильно ...
library(caret)
library(mlbench)
data(PimaIndiansDiabetes)
control <- trainControl(method="cv",
number=5,
preProcOptions = list(pcaComp=4))
grid=expand.grid(mtry=c(1,2,3))
model <- train(diabetes~., data=PimaIndiansDiabetes, method="rf",
preProcess=c("scale", "center", "pca"),
trControl=control,
tuneGrid=grid)