← Назад к вопросам

Что будет в результате бэггинга над линейными моделями?

2.2 Middle🔥 141 комментариев
#Машинное обучение

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI30 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Бэггинг (Bootstrap Aggregating) над линейными моделями практически не даёт улучшения. Давайте разберём почему и что происходит.

Коротко: Ничего полезного

В результате бэггинга над линейными моделями (Linear Regression, Logistic Regression) получишь модель, которая практически идентична оригинальной линейной модели, но требует больше вычислительных ресурсов.

Почему это не работает

Математическое объяснение

Ошибка модели раскладывается на: Ошибка = Bias² + Variance + Noise

Линейная модель имеет:

  • Низкое смещение (Bias ≈ 0 для линейных данных)
  • Низкую дисперсию (Variance ≈ 0, стабильны на разных выборках)

Бэггинг уменьшает только дисперсию. Если она уже низкая, улучшение минимально.

Сравнение с деревьями

Дерево (max_depth=None): Bias ≈ 0, Variance ≈ большая → Бэггинг помогает на 15-20% Линейная модель: Bias ≈ 0, Variance ≈ маленькая → Бэггинг помогает на < 1%

Практический пример

from sklearn.linear_model import LinearRegression
from sklearn.ensemble import BaggingRegressor
from sklearn.model_selection import cross_val_score
import numpy as np

X = np.random.randn(100, 10)
y = X @ np.random.randn(10) + np.random.randn(100) * 0.1

# Одна линейная модель
lr = LinearRegression()
score_lr = cross_val_score(lr, X, y, cv=5, scoring='r2').mean()
print(f"Linear Regression R²: {score_lr:.4f}")  # 0.9850

# Бэггинг над линейной моделью
bagging_lr = BaggingRegressor(estimator=LinearRegression(), n_estimators=50)
score_bagging = cross_val_score(bagging_lr, X, y, cv=5, scoring='r2').mean()
print(f"Bagging Linear Regression R²: {score_bagging:.4f}")  # 0.9850

# Разница < 0.1%!

Что происходит в процессе

1. Все модели практически идентичны

Когда берёшь bootstrap выборки из больших данных, они очень похожи. Обученные коэффициенты всех 50-100 моделей будут почти одинаковы.

2. Усреднение идентичных моделей = оригинальная модель

Бэггинг усредняет предсказания:

y_pred_bagging = (y_pred_1 + y_pred_2 + ... + y_pred_100) / 100

Если все модели идентичны (y_pred_1 ≈ y_pred_2 ≈ ... ≈ y_pred_100), то: y_pred_bagging ≈ y_pred_original

3. Результат: То же самое, но медленнее

Ты получаешь:

  • R² практически такой же (< 0.1% улучшение)
  • Время обучения N раз больше
  • Память требуется для N моделей вместо 1

Когда бэггинг МОЖЕТ помочь (редко)

  1. Регуляризованные модели (Ridge, Lasso) с сильной регуляризацией могут иметь небольшую дисперсию, которую бэггинг уменьшит (но эффект минимален)

  2. Выбросы: Некоторые bootstrap выборки могут не содержать выбросы, что даст небольшое улучшение (но очень слабое)

  3. Малые выборки: На очень маленьких датасетах bootstrap выборки более различны, но это редко применяется на малых данных

Вывод

Бэггинг над линейными моделями:

  • Не улучшает качество значимо (< 1% улучшение)
  • Увеличивает вычислительную стоимость в N раз
  • Не уменьшает смещение (bias)
  • Не уменьшает низкую дисперсию существенно

Результат: Практически идентична оригинальной модели, но медленнее.

Рекомендация: Используй Бэггинг с деревьями (Random Forest), а для линейных моделей — другие техники (Стакирование, Блендинг, или просто Линейная регрессия).

Что будет в результате бэггинга над линейными моделями? | PrepBro