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? ⭐
- Bootstrap sampling: Tworzenie wielu podzbiorów danych przez losowanie z powtórzeniami.
- Trenowanie modeli: Każdy model jest trenowany na swoim bootstrap sample.
- Agregacja wyników: Głosowanie większościowe lub średnia z wszystkich modeli.
- 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
- Bagging – scikit-learn
- Bagging vs Boosting – Towards Data Science
- Bootstrap Aggregating – Wikipedia
- Ensemble Methods Tutorial – Machine Learning Mastery