Я борюсь с этой проблемой в течение смущающе долгого времени. Чувствую себя абсолютным кретином, так как ответ наверное до боли очевиден, но не могу найти ни одной ветки объясняющей как это сделать.
Часть документации о создании пользовательских моделей мне кажется этой. Я чувствую, что где-то во время моего обучения я пропустил какой-то очень специфический урок, который теперь помнят все, кроме меня, потому что все, что я нахожу, это «да, просто создайте пользовательскую модель и готово».
Актуальные вопросы здесь:
Я хочу получать прогнозы для каждой отдельной итерации 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()
, специфичные для алгоритма, потому что тогда зачем мне вообще возиться с кареткой.
Я даже не знаю, что мне поставить в качестве тиражируемого примера. С кодом проблем нет. Я просто понятия не имею, как эта штука должна работать.