Недавно я потратил много времени на Kaggle и узнал, что стекинг моделей помогает топ-кагглерам занимать лидирующие позиции. Поэтому я решил разобраться, что такое суммирование и почему оно помогает улучшить счет.

Стекинг - это еще один метод ансамбля, при котором мы комбинируем различные модели для получения более точных прогнозов. Мы знаем, что Boosting и Bagging также являются комплексной техникой, поэтому давайте выясним разницу между Boosting, Bagging и Stacking.

1. Повышение: мы используем подмножество обучающих данных и строим несколько моделей (обычно одного и того же типа), а затем берем среднее значение всех оценок модели, используя функцию стоимости, как при голосовании большинства. Создание подмножества в Boosting не случайно. В каждой создаваемой нами модели мы придаем больший вес ошибочно классифицированным наблюдениям, строим последующие модели и, наконец, берем среднее значение оценок.

2. Бэггинг: он называется загрузочным агрегированием. Чтобы уменьшить дисперсию, мы берем выборку из обучающих данных с заменой. Это фактически увеличивает обучающую выборку. Увеличение обучающей выборки не увеличивает производительность модели, но уменьшает дисперсию. Мы строим несколько моделей на основе выборочных данных и принимаем средние оценки модели в качестве окончательных прогнозов.

3. Укладка: при увеличении и упаковке мы обычно используем одну и ту же модель. Однако при суммировании мы используем разные модели для агрегирования оценок.

Укладка может производиться несколькими способами:

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

2. Определение веса различных моделей. Допустим, у нас есть те же модели, что и выше. Но вместо того, чтобы брать среднее значение моделей, мы запускаем регрессию на этих моделях, чтобы получить оптимальные веса, и используем эти веса, чтобы лучше прогнозировать тестовые данные.

Мы также можем найти веса этих моделей, используя нейронную сеть с одним скрытым слоем.

3. Голосование большинства: продолжим обсуждение с теми же тремя базовыми моделями, что и выше. И просто ради аргументации предположим, что точность всех моделей составляет 0,7.

Имея большинство голосов, мы будем рассматривать прогнозы отдельных моделей и принимать большинство голосов по каждой из моделей. например первое наблюдение в обучении имеет вероятность предсказания 0,8, 0,7, 0,9. Если мы предположим, что оценка ›0,5 классифицируется как 1, тогда все эти модели согласуются, и мы получим окончательную оценку для этого наблюдения как 1. Точно так же для второго наблюдения у нас есть оценка как 0,95, 0,3, 0,8. Здесь 2 из 3 моделей согласны с тем, что результат должен быть 1. Таким образом, окончательная оценка этого наблюдения - 1.

В наборе тестовых данных первое наблюдение имеет 2 из 3 моделей, предсказывающих результат равным нулю, а второе наблюдение в тесте, все модели соглашаются, что наблюдение должно быть классифицировано как 1.

4. Взвешенное большинство голосов. Здесь мы объединяем два вышеуказанных подхода к голосованию и взвешиванию классификаторов.

5. Усреднение на основе корреляции. Следует помнить один важный момент: суммирование работает хорошо, если модели менее коррелированы. Если вы не видите никаких изменений в производительности модели даже после суммирования, это означает, что все базовые модели сильно коррелированы.

В этом методе мы выбираем наиболее некоррелированные модели и берем средневзвешенное значение моделей, чтобы получить окончательные прогнозы.

Есть еще несколько способов сложить модели, например, усреднение рангов и геометрическое усреднение. Я все еще не понимаю, когда будут использоваться эти 2 метода. Подробнее об этом можно прочитать здесь.