Я борюсь с этим вопросом смущающе долгое время.Я чувствую себя абсолютным кретином, поскольку ответ, вероятно, до боли очевиден, но я не могу найти ни одной темы, объясняющей, как это сделать.
Часть документации о создании пользовательских моделей выглядит для меня как this .Я чувствую, что где-то во время обучения я пропустил какой-то очень специфический урок, который сейчас все помнят, кроме меня, потому что все, что я нахожу, это «да, просто создайте пользовательскую модель и все готово».
Я хочу получить прогнозы для каждой отдельной итерации gbm
в caret
.В gbm
я могу просто использовать, например, n.trees
в predict(..., n.trees = 1:100)
, и это сделано.
В caret
очевидно, потому что мне нужно использовать что-то под названием трюк подмоделей, что означает - если яправильно понимаю - что мне нужно создать свою собственную модель.
Но в getModelInfo('gbm')
я вижу, что есть какая-то функция цикла!
$gbm$loop
function (grid)
{
loop <- plyr::ddply(grid, c("shrinkage", "interaction.depth",
"n.minobsinnode"), function(x) c(n.trees = max(x$n.trees)))
submodels <- vector(mode = "list", length = nrow(loop))
for (i in seq(along = loop$n.trees)) {
index <- which(grid$interaction.depth == loop$interaction.depth[i] &
grid$shrinkage == loop$shrinkage[i] & grid$n.minobsinnode ==
loop$n.minobsinnode[i])
trees <- grid[index, "n.trees"]
submodels[[i]] <- data.frame(n.trees = trees[trees !=
loop$n.trees[i]])
}
list(loop = loop, submodels = submodels)
Как использоватьтот?Почему он не работает по умолчанию?Нужно ли мне создавать собственную модель - или, может быть, нет?
Отказ от ответственности 1: Я не хочу использовать перекрестную проверку.Я просто хочу выводить прогнозы для каждой итерации одного прогона gbm.
Отказ от ответственности 2: Я не хочу использовать predict.gbm()
на $finalModel
, так как я хочу также протестировать некоторые другие алгоритмы, который также использует этот трюк подмодели.Я не хочу использовать все различные специфичные для алгоритма функции predict()
, потому что тогда зачем мне вообще беспокоиться о каретке.
Я даже не знаю, что мне поставить в качестве воспроизводимого примера.Там нет проблем с кодом.Я просто понятия не имею, как эта штука должна работать.