Укладка моделей, алгоритм Super Learner

Aug 29 2020

Недавно я начал изучать ансамбли в ML, в частности алгоритм Super Learner. Если честно, хотя я прочитал несколько статей по этой теме, я немного запутался. Я хочу идти шаг за шагом и делать все вручную, чтобы по-настоящему понять процесс.

Алгоритм обычно описывается как последовательность следующих шагов:

  1. Обучите каждый из L базовых алгоритмов на обучающем наборе.
  2. Выполните k-кратную перекрестную проверку для каждого из этих учеников и соберите перекрестно проверенные предсказанные значения из каждого из L алгоритмов.
  3. N предсказанных значений с перекрестной проверкой из каждого из L алгоритмов можно объединить для формирования новой матрицы N x L. Эта матрица вместе с исходным вектором отклика называется данными «первого уровня». (N = количество строк в обучающем наборе)
  4. Обучите алгоритм метаобучения на данных первого уровня.
  5. «Модель ансамбля» состоит из L базовых моделей обучения и модели метаобучения, которые затем можно использовать для создания прогнозов на тестовом наборе.

У меня несколько вопросов:

  1. Почему разделены первый и второй этапы? Для простоты предположим, что мне не нужно настраивать какие-либо параметры. Означает ли это, что мне просто нужно обучить модель, например 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взяты из обучающего набора.

  1. Следующим шагом является сбор прогнозируемых значений с перекрестной проверкой . Следует ли мне использовать fit_XGB $predи извлекать все прогнозы с перекрестной проверкой и повторять это действие L раз (L - количество алгоритмов)?

Я бы сказал, что все дальнейшие шаги мне более-менее понятны. У меня есть некоторые сомнения, но я действительно не могу понять, что не так с моим подходом.

Ответы

1 BenReiniger Aug 31 2020 at 02:01

Вопрос 1

Я думаю, что путаница возникает из-за обычной практики, когда разделение становится неясным: «обучить модель ... используя k-кратное резюме» на самом деле не имеет смысла. А$k$-кратная перекрестная проверка не дает обученной модели. Однако в большинстве caretвключенных пакетов настройки гиперпараметров окончательная модель автоматически обучается на всем обучающем наборе после того, как перекрестная проверка выбирает лучший набор гиперпараметров; из документов :

Комбинация с оптимальной статистикой повторной выборки выбирается в качестве окончательной модели, и весь обучающий набор используется для соответствия окончательной модели.

Итак, caretоба шага 1 и 2 выполняются за вас.

вопрос 2

Да, это сработает. См., Например, Как точно работает перекрестная проверка в train (каретка)? .

Вы сказали, что хотите сделать это вручную, чтобы понять, и это хорошо; но я упомяну , что есть пакет расширения caretдля выполнения всех этого автоматически: caretEnsemble.