В чем разница между методами ансамблирования бэггингом и бустингом?

Ответ

Бэггинг (Bagging) и Бустинг (Boosting) — это два принципиально разных подхода к построению ансамблей моделей.

Бэггинг (Bootstrap Aggregating)

  • Цель: Уменьшение дисперсии модели.
  • Принцип: Параллельное обучение множества независимых базовых моделей (часто "слабых" и неустойчивых, как деревья решений).
  • Данные: Каждая модель обучается на своей бутстрэп-выборке (случайная выборка с возвращением из исходного набора).
  • Агрегация: Итоговый прогноз — это усреднение (для регрессии) или голосование большинством (для классификации) предсказаний всех моделей.
  • Пример: RandomForest — классический бэггинг над решающими деревьями.
from sklearn.ensemble import RandomForestClassifier
# Создаем ансамбль из 100 деревьев, обученных на бутстрэп-выборках
model = RandomForestClassifier(n_estimators=100, max_features='sqrt')
model.fit(X_train, y_train)
# Прогноз — результат голосования всех деревьев
predictions = model.predict(X_test)

Бустинг

  • Цель: Уменьшение смещения (а впоследствии и дисперсии).
  • Принцип: Последовательное обучение моделей, где каждая следующая фокусируется на ошибках предыдущих.
  • Данные: Веса объектов обновляются на каждом шаге. Неверно предсказанные на предыдущем шаге объекты получают больший вес для следующей модели.
  • Агрегация: Итоговый прогноз — взвешенная сумма предсказаний всех последовательных моделей.
  • Пример: AdaBoost, GradientBoosting, XGBoost, LightGBM.
from sklearn.ensemble import GradientBoostingClassifier
# Модели обучаются последовательно, каждая исправляет ошибки предыдущей
model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
model.fit(X_train, y_train)
# Прогноз — взвешенное голосование
predictions = model.predict(X_test)

Ключевое отличие: Бэггинг строит независимые модели и усредняет их, чтобы подавить шум. Бустинг строет цепочку зависимых моделей, где каждая новая пытается исправить систематическую ошибку (смещение) ансамбля.

Ответ 18+ 🔞

Слушай, ну вот объясняю как для себя, чтобы в голове разложилось. Есть два главных подхода, чтобы из кучи кривых моделей собрать одну офигенную — Бэггинг и Бустинг. И они, блядь, как небо и земля, принцип у них разный просто пиздец.

Бэггинг (Bootstrap Aggregating) — это типа демократия, ебать мои старые костыли

  • Зачем он нужен? Чтобы дисперсию уменьшить, то есть чтобы модель не дергалась как мартышлюшка от каждого шума в данных.
  • Как работает? Берешь кучу независимых туповатых моделек (обычно деревья, которые сами по себе — те ещё распиздяи). Каждую из них обучаешь на своей, ебать, бутстрэп-выборке — это когда из данных тыкаешь пальцем в небо случайно и с возвращением.
  • Что в итоге? Все эти модели голосуют, как депутаты, и итоговый прогноз — это просто усреднение (для чисел) или большинство голосов (для классов). Доверия ебать ноль к каждой по отдельности, но вместе они — сила.
  • Пример: RandomForest — это ж классика жанра, бэггинг в чистом виде.
from sklearn.ensemble import RandomForestClassifier
# Делаем ансамбль из 100 деревьев, каждое обучено на своей рандомной выборке
model = RandomForestClassifier(n_estimators=100, max_features='sqrt')
model.fit(X_train, y_train)
# Прогноз — это как на собрании: кто больше крикнул, тот и прав
predictions = model.predict(X_test)

Бустинг — это уже не демократия, а жёсткая последовательная дрессировка, ёпта

  • Зачем он нужен? Чтобы смещение уменьшить, то есть исправить систематическую тупость модели. А потом заодно и с дисперсией разобраться.
  • Как работает? Тут модели учатся последовательно, одна за другой. И каждая следующая — это такой хитрый засланец, который фокусируется исключительно на тех косяках, которые наделала предыдущая. Объекты, которые не угадали, получают овердохуища веса, чтобы новая модель на них внимания больше обратила.
  • Что в итоге? Финальный прогноз — это взвешенная сумма предсказаний всей этой цепочки исправленцев. Как будто каждый следующий чиновник пытается замазать грехи предыдущего.
  • Пример: AdaBoost, GradientBoosting, XGBoost — вот это всё они.
from sklearn.ensemble import GradientBoostingClassifier
# Модели учатся по цепочке: следующая бьёт предыдущую по затылку за её ошибки
model = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1)
model.fit(X_train, y_train)
# Прогноз — это взвешенное подведение итогов всей этой ебалы
predictions = model.predict(X_test)

А теперь, сука, самое главное отличие, чтобы не путать:
Бэггинг — это когда ты нанимаешь толпу идиотов, даёшь каждому свою выборочную задачку, а потом спрашиваешь у всех и берёшь самый частый ответ. Шум гасится.
Бустинг — это когда ты берёшь одного идиота, учишь его, потом ставишь рядом второго, который учится на косяках первого, потом третьего — на косяках первых двух, и так далее. Цель — не шум подавить, а системную тупость выбить по цепочке. Вот и вся хитрая жопа, чувак.