Укладка моделей, алгоритм Super Learner
Недавно я начал изучать ансамбли в ML, в частности алгоритм Super Learner. Если честно, хотя я прочитал несколько статей по этой теме, я немного запутался. Я хочу идти шаг за шагом и делать все вручную, чтобы по-настоящему понять процесс.
Алгоритм обычно описывается как последовательность следующих шагов:
- Обучите каждый из L базовых алгоритмов на обучающем наборе.
- Выполните k-кратную перекрестную проверку для каждого из этих учеников и соберите перекрестно проверенные предсказанные значения из каждого из L алгоритмов.
- N предсказанных значений с перекрестной проверкой из каждого из L алгоритмов можно объединить для формирования новой матрицы N x L. Эта матрица вместе с исходным вектором отклика называется данными «первого уровня». (N = количество строк в обучающем наборе)
- Обучите алгоритм метаобучения на данных первого уровня.
- «Модель ансамбля» состоит из L базовых моделей обучения и модели метаобучения, которые затем можно использовать для создания прогнозов на тестовом наборе.
У меня несколько вопросов:
- Почему разделены первый и второй этапы? Для простоты предположим, что мне не нужно настраивать какие-либо параметры. Означает ли это, что мне просто нужно обучить модель, например xgbTree , используя k-кратное резюме? Например:
tc_XGB <- trainControl(method = "cv", number = 5, savePred = TRUE)
fit_XGB <- train(x = input_x, y = input_y, method = "xgbTree",
trControl = train_control_final, tuneGrid = Grid_final)
Примечание : input_xи input_yвзяты из обучающего набора.
- Следующим шагом является сбор прогнозируемых значений с перекрестной проверкой . Следует ли мне использовать
fit_XGB $predи извлекать все прогнозы с перекрестной проверкой и повторять это действие L раз (L - количество алгоритмов)?
Я бы сказал, что все дальнейшие шаги мне более-менее понятны. У меня есть некоторые сомнения, но я действительно не могу понять, что не так с моим подходом.
Ответы
Вопрос 1
Я думаю, что путаница возникает из-за обычной практики, когда разделение становится неясным: «обучить модель ... используя k-кратное резюме» на самом деле не имеет смысла. А$k$-кратная перекрестная проверка не дает обученной модели. Однако в большинстве caretвключенных пакетов настройки гиперпараметров окончательная модель автоматически обучается на всем обучающем наборе после того, как перекрестная проверка выбирает лучший набор гиперпараметров; из документов :
Комбинация с оптимальной статистикой повторной выборки выбирается в качестве окончательной модели, и весь обучающий набор используется для соответствия окончательной модели.
Итак, caretоба шага 1 и 2 выполняются за вас.
вопрос 2
Да, это сработает. См., Например, Как точно работает перекрестная проверка в train (каретка)? .
Вы сказали, что хотите сделать это вручную, чтобы понять, и это хорошо; но я упомяну , что есть пакет расширения caretдля выполнения всех этого автоматически: caretEnsemble.