Sobes.tech
Middle+
19

В чём отличие бустинга от бэггинга (Random Forest)? Сравните их склонность к переобучению.

Компании, где спрашивали
AvitoAvito

Ответ от нейросети

sobes.tech AI

Бэггинг (Bagging) и бустинг (Boosting) — это методы ансамблевого обучения, которые объединяют несколько моделей для улучшения качества предсказаний, но делают это по-разному.

Бэггинг (например, Random Forest):

  • Создаёт множество независимых моделей (обычно деревьев), каждая обучается на случайной подвыборке данных с возвращением (bootstrap).
  • Итоговое предсказание — усреднение (для регрессии) или голосование (для классификации) результатов всех моделей.
  • Основная цель — уменьшить дисперсию модели, повысить устойчивость к шуму.
  • Склонность к переобучению ниже, так как модели обучаются независимо и усреднение сглаживает ошибки.

Бустинг:

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

Итог:

  • Бэггинг лучше борется с переобучением за счёт независимости моделей и усреднения.
  • Бустинг может переобучаться, но часто даёт более высокую точность при правильной настройке.

Пример Random Forest и AdaBoost (псевдокод):

# Бэггинг
for i in range(N):
    sample = bootstrap_sample(data)
    model_i = train_decision_tree(sample)
models.append(model_i)

# Предсказание
prediction = majority_vote([m.predict(x) for m in models])

# Бустинг
weights = initialize_weights(data)
for i in range(N):
    model_i = train_weak_learner(data, weights)
    error = compute_error(model_i, data, weights)
    update_weights(weights, model_i, error)
models.append(model_i)

# Предсказание
prediction = weighted_sum([m.predict(x) for m in models], model_weights)