Ответ
Применение бэггинга (Bootstrap Aggregating) к линейным моделям, таким как линейная или логистическая регрессия, обычно дает очень незначительный прирост качества или не дает его вовсе. Основная причина в природе этих моделей.
Теоретическое обоснование: Бэггинг эффективно снижает дисперсию модели. Однако линейные модели имеют высокое смещение (bias) и низкую дисперсию. Ансамблирование множества смещенных, но похожих моделей (обученных на бутстрап-выборках из одного распределения) не исправляет это смещение. Итоговый ансамбль будет давать предсказания, очень близкие к одной модели, обученной на всех данных.
Практическая демонстрация на sklearn:
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import BaggingRegressor
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
X, y = make_regression(n_samples=1000, n_features=20, noise=0.1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# Базовая линейная регрессия
lr = LinearRegression()
lr.fit(X_train, y_train)
base_score = lr.score(X_test, y_test)
# Бэггинг над линейной регрессией
bagged_lr = BaggingRegressor(estimator=LinearRegression(), n_estimators=50, random_state=42)
bagged_lr.fit(X_train, y_train)
bagged_score = bagged_lr.score(X_test, y_test)
print(f"R² линейной регрессии: {base_score:.4f}")
print(f"R² бэггинга над LR: {bagged_score:.4f}")
# Разница будет минимальна, часто в пределах погрешности
Вывод: Для линейных моделей более эффективны методы, направленные на снижение смещения (добавление полиномиальных признаков, использование ядер) или контроль переобучения (регуляризация L1/L2). Бэггинг лучше применять к нестабильным моделям с высокой дисперсией, таким как глубокие деревья решений.