Przejdź do głównej zawartości

Bagging

czym jest bagging? ⭐

  • Bagging (Bootstrap Aggregating) to metoda ensemble, która łączy wyniki wielu modeli trenowanych na różnych podzbiorach danych.
  • Każdy model jest trenowany na bootstrap sample (losowanie z powtórzeniami z oryginalnego zbioru danych).
  • Końcowe przewidywanie to głosowanie większościowe (klasyfikacja) lub średnia (regresja).
  • Redukuje wariancję modelu i poprawia stabilność predykcji.
  • Random Forest to szczególny przypadek bagging z drzewami decyzyjnymi.

jak działa bagging? ⭐

  1. Bootstrap sampling: Tworzenie wielu podzbiorów danych przez losowanie z powtórzeniami.
  2. Trenowanie modeli: Każdy model jest trenowany na swoim bootstrap sample.
  3. Agregacja wyników: Głosowanie większościowe lub średnia z wszystkich modeli.
  4. Redukcja wariancji: Różne modele mogą popełniać różne błędy, ale ich średnia jest bardziej stabilna.

przykładowy kod (scikit-learn)

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
from sklearn.metrics import accuracy_score
import numpy as np

# Generowanie danych
X, y = make_classification(n_samples=1000, n_features=10, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Tworzenie modelu bazowego
base_model = DecisionTreeClassifier(max_depth=5, random_state=42)

# Tworzenie bagging ensemble
bagging_model = BaggingClassifier(
base_estimator=base_model,
n_estimators=100, # liczba modeli
max_samples=0.8, # rozmiar każdego bootstrap sample
random_state=42
)

# Trenowanie
bagging_model.fit(X_train, y_train)

# Przewidywanie
y_pred = bagging_model.predict(X_test)
print(f"Dokładność bagging: {accuracy_score(y_test, y_pred):.3f}")

# Porównanie z pojedynczym modelem
single_model = DecisionTreeClassifier(max_depth=5, random_state=42)
single_model.fit(X_train, y_train)
y_pred_single = single_model.predict(X_test)
print(f"Dokładność pojedynczego modelu: {accuracy_score(y_test, y_pred_single):.3f}")

praktyczne ćwiczenia

  • Porównaj wyniki bagging z różnymi modelami bazowymi (drzewa, SVM, regresja logistyczna).
  • Eksperymentuj z różnymi parametrami: n_estimators, max_samples.
  • Analizuj stabilność predykcji między różnymi modelami w ensemble.
  • Użyj bagging do regresji (BaggingRegressor).
  • Zaimplementuj prosty bagging od podstaw.

dobre praktyki

  • Liczba modeli: Zazwyczaj 50-200 modeli wystarcza.
  • Rozmiar bootstrap sample: Zazwyczaj 60-80% oryginalnych danych.
  • Model bazowy: Wybierz model, który ma niską wariancję.
  • Walidacja: Używaj cross-validation do oceny ensemble.

wady i zalety

Zalety:

  • Redukuje wariancję i overfitting
  • Poprawia stabilność predykcji
  • Może być stosowany z różnymi modelami bazowymi
  • Łatwy do zrozumienia i implementacji

Wady:

  • Nie redukuje bias
  • Może być wolniejszy w trenowaniu i przewidywaniu
  • Wymaga więcej pamięci
  • Może być mniej interpretowalny

różnice między bagging a boosting

Bagging:

  • Modele są trenowane niezależnie
  • Każdy model ma równą wagę
  • Redukuje wariancję
  • Przykłady: Random Forest, BaggingClassifier

Boosting:

  • Modele są trenowane sekwencyjnie
  • Każdy model koryguje błędy poprzednich
  • Redukuje bias
  • Przykłady: AdaBoost, Gradient Boosting

zastosowania

  • Klasyfikacja obrazów
  • Przewidywanie cen
  • Wykrywanie anomalii
  • Analiza medyczna
  • Systemy rekomendacji

polecane źródła