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

Можно ли использовать бэггинг над линейными алгоритмами?

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

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

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

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

Бэггинг над линейными алгоритмами: теория и практика

Да, можно использовать бэггинг над линейными алгоритмами, но это малоэффективно. Вот почему.

Почему бэггинг обычно работает на нелинейных алгоритмах

Бэггинг (Bootstrap Aggregating) снижает дисперсию путём:

  1. Создания несколько подвыборок (с повторениями) из тренировочных данных
  2. Обучения отдельного алгоритма на каждой подвыборке
  3. Усреднения предсказаний

Ключевое условие: алгоритм должен быть нестабильным — чувствительным к изменениям в данных. Decision Trees, Neural Networks, KNN — нестабильны. Они улавливают локальные паттерны, и разные подвыборки дают разные модели.

Почему линейные алгоритмы не эффективны с бэггингом

Линейная регрессия, Логистическая регрессия, SVM — очень стабильные алгоритмы. Они ищут глобальную оптимум, определяемый уравнением вроде:

min(||y - Xw||^2 + λ||w||^2)

Это уравнение имеет уникальное решение (или почти уникальное). Разные подвыборки дадут похожие коэффициенты w, а их усреднение не принесёт значительного выигрыша:

from sklearn.ensemble import BaggingClassifier
from sklearn.linear_model import LogisticRegression
import numpy as np

# Бэггинг над логистической регрессией
model = BaggingClassifier(
    estimator=LogisticRegression(),
    n_estimators=100,
    random_state=42
)
# Результат: почти идентичен одной логистической регрессии

Математический взгляд

Дисперсия ошибки бэггинга пропорциональна:

Var_bagging ≈ ρ * σ^2 + (1 - ρ) * σ^2 / n_models

Где ρ — корреляция ошибок между моделями.

  • Для Decision Trees: ρ низко, дисперсия снижается значительно
  • Для Linear Regression: ρ высоко (все модели очень похожи), дисперсия снижается слабо

Когда всё же можно применить бэггинг к линейным моделям

  1. Если добавить шум — Stochastic Gradient Descent (SGD) вместо точного решения делает логистическую регрессию нестабильной
  2. Ridge/Lasso регрессия с разными λ — каждый параметр даст разные коэффициенты
  3. Очень маленькие подвыборки — можно получить заметную дисперсию
  4. Для шума в данных — если есть выбросы, бэггинг может быть полезен за счёт робастности

Практический вывод

# Плохо
BaggingClassifier(LogisticRegression())  # Фактически не помогает

# Хорошо
BaggingClassifier(DecisionTreeClassifier())  # Даёт 10-15% прироста точности
VotingClassifier([LogisticRegression(), SVC(), DecisionTree()])  # Разнообразие моделей помогает

Вывод: для линейных алгоритмов бэггинг — трата вычислительных ресурсов. Лучше использовать Boosting (Gradient Boosting), Stacking или просто Ensemble из разных типов моделей (Voting, Blending).

Можно ли использовать бэггинг над линейными алгоритмами? | PrepBro