Я внимательно прочитал документацию CARET: http://caret.r-forge.r-project.org/training.html, виньетки, и все совершенно ясно (примеры на сайте очень помогают!), но я все еще путаюсь в отношении отношения между двумя аргументами к trainControl:
method
index
и взаимодействие между trainControl и функциями разделения данных в карете (например, createDataPartition, createResample, createFolds и createMultiFolds)
Чтобы лучше сформулировать мои вопросы, позвольте мне использовать следующий пример из документации:
data(BloodBrain)
set.seed(1)
tmp <- createDataPartition(logBBB,p = .8, times = 100)
trControl = trainControl(method = "LGOCV", index = tmp)
ctreeFit <- train(bbbDescr, logBBB, "ctree",trControl=trControl)
Мои вопросы:
-
Если я использую
createDataPartition(который я предполагаю, что делает стратифицированную загрузку), как в приведенном выше примере, и я передаю результат какindextotrainControl, мне нужно использоватьLGOCVкак метод в моем вызовеtrainControl? Если я использую другой (например,cv), какая разница? В моей голове, как только вы исправитеindex, вы по сути выбираете тип перекрестной проверки, поэтому я не уверен, какую роль играетmethod, если вы используетеindex. -
В чем разница между
createDataPartitionиcreateResample? Разве чтоcreateDataPartitionделает стратифицированную загрузку, аcreateResampleне работает?
3) Как я могу сделать стратифицированный k-кратный (например, 10-кратный) перекрестный контроль с помощью каретки? Будет ли это делать?
tmp <- createFolds(logBBB, k=10, list=TRUE, times = 100)
trControl = trainControl(method = "cv", index = tmp)
ctreeFit <- train(bbbDescr, logBBB, "ctree",trControl=trControl)