Я внимательно прочитал документацию 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
(который я предполагаю, что делает стратифицированную загрузку), как в приведенном выше примере, и я передаю результат какindex
totrainControl
, мне нужно использовать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)