Ответ
Бэггинг (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)
А теперь, сука, самое главное отличие, чтобы не путать:
Бэггинг — это когда ты нанимаешь толпу идиотов, даёшь каждому свою выборочную задачку, а потом спрашиваешь у всех и берёшь самый частый ответ. Шум гасится.
Бустинг — это когда ты берёшь одного идиота, учишь его, потом ставишь рядом второго, который учится на косяках первого, потом третьего — на косяках первых двух, и так далее. Цель — не шум подавить, а системную тупость выбить по цепочке. Вот и вся хитрая жопа, чувак.