Czym są metody zespołowe?

Metody zespołowe (ang. ensemble methods) to techniki uczenia maszynowego łączące predykcje wielu modeli bazowych w jedną, silniejszą predykcję. Zasada jest prosta: grupa modeli jest mądrzejsza niż pojedynczy model, pod warunkiem że modele bazowe są wystarczająco różnorodne i lepsze niż losowe zgadywanie.

Matematycznie uzasadnia to twierdzenie Condorceta o ławie przysięgłych: jeśli każdy juror ma prawdopodobieństwo poprawnej decyzji > 0.5, to prawdopodobieństwo poprawnej decyzji większości rośnie z liczbą jurorów, dążąc do 1.

Dwa główne paradygmaty to bagging (modele równoległe, redukcja wariancji) i boosting (modele sekwencyjne, redukcja biasu). Oba najczęściej używają drzew decyzyjnych jako modeli bazowych.

Bagging i Random Forest

Bagging (Bootstrap Aggregating)

Bagging, zaproponowany przez Leo Breimana (1996), trenuje wiele modeli na losowych podzbiorach danych (z powtórzeniami — bootstrap) i agreguje ich predykcje:

  • Klasyfikacja: głosowanie większościowe
  • Regresja: średnia predykcji

Bootstrap sampling: z N próbek losujemy N próbek ze zwracaniem. Statystycznie ~63.2% unikalnych próbek trafia do każdego podzbioru (reszta to out-of-bag, OOB, używana do walidacji).

Bagging redukuje wariancję — pojedyncze drzewo jest niestabilne (małe zmiany danych → inne drzewo), ale średnia wielu drzew jest stabilna. Nie redukuje biasu — jeśli model bazowy jest systematycznie błędny, bagging tego nie naprawi.

Random Forest

Random Forest (Breiman, 2001) to bagging drzew decyzyjnych z dodatkową losowością: przy każdym podziale węzła rozpatrywany jest losowy podzbiór cech (nie wszystkie cechy).

Hiperparametry Random Forest:

  • n_estimators — liczba drzew (więcej = lepiej, ale z malejącym zwrotem; typowo 100-500)
  • max_features — liczba cech rozpatrywanych przy podziale (√p dla klasyfikacji, p/3 dla regresji)
  • max_depth — maksymalna głębokość drzew (domyślnie: bez ograniczeń)
  • min_samples_split / min_samples_leaf — warunki stopu podziału

Dlaczego losowe cechy pomagają? Bez tego triku, jeśli jedna cecha jest silnie predyktywna, wszystkie drzewa użyją jej w korzeniu — będą skorelowane, a uśrednianie nie pomoże. Losowość cech dekoreluje drzewa, maksymalizując korzyść z uśredniania.

Feature Importance w Random Forest

Random Forest naturalnie dostarcza ranking ważności cech:

  • Impurity-based — suma redukcji Gini/entropii we wszystkich drzewach, ważona liczbą próbek
  • Permutation importance — spadek trafności po losowym permutowaniu wartości cechy (bardziej wiarygodna, ale wolniejsza)

Out-of-Bag (OOB) Score

Próbki niewylosowane do danego bootstrapu (~36.8%) służą jako walidacja bez walidacji krzyżowej. OOB score to trafność modelu na tych „niewidzianych" próbkach — dobra aproksymacja błędu generalizacji.

Boosting

Koncepcja Boostingu

Boosting trenuje modele sekwencyjnie, z każdym kolejnym modelem skupiając się na błędach poprzedniego. To podejście redukuje bias — nawet słabe modele (np. drzewa o głębokości 1 — „stumps") w sekwencji tworzą silny model.

AdaBoost (Adaptive Boosting)

AdaBoost (Freund & Schapire, 1997) przypisuje wagi próbkom:

  1. Wszystkie próbki mają równe wagi
  2. Trenuj słaby model (np. drzewo głębokości 1)
  3. Zwiększ wagi źle sklasyfikowanych próbek
  4. Trenuj kolejny model na przeważonym zbiorze
  5. Powtarzaj T razy
  6. Finalna predykcja: ważona suma predykcji (waga modelu proporcjonalna do jego trafności)

Gradient Boosting

Gradient Boosting (Friedman, 2001) to ogólna rama optymalizacji funkcji kosztu za pomocą sekwencji modeli. Każdy kolejny model (zazwyczaj drzewo) dopasowuje się do reszt (negatywnych gradientów) poprzedniego modelu.

Algorytm Gradient Boosting:

  1. Inicjalizuj model: F₀(x) = argmin_γ Σ L(yᵢ, γ) (np. średnia)
  2. Dla m = 1 do M:
  3. a. Oblicz pseudo-reszty: rᵢ = -∂L(yᵢ, F_{m-1}(xᵢ)) / ∂F_{m-1}(xᵢ) b. Dopasuj drzewo hₘ(x) do pseudo-reszt c. Aktualizuj: Fₘ(x) = F_{m-1}(x) + η · hₘ(x)

  4. Finalna predykcja: F_M(x)

Kluczowe hiperparametry:

  • n_estimators (M) — liczba drzew/iteracji
  • learning_rate (η) — szybkość uczenia; mniejsza = lepsza generalizacja, ale potrzeba więcej drzew
  • max_depth — głębokość drzew (typowo 3-8; głębsze = silniejsze, ale ryzyko overfittingu)
  • subsample — frakcja próbek na drzewo (< 1.0 = stochastic gradient boosting, redukuje overfitting)

XGBoost, LightGBM, CatBoost

XGBoost (eXtreme Gradient Boosting)

XGBoost (Chen & Guestrin, 2016) to zoptymalizowana implementacja gradient boostingu, dominująca w konkursach Kaggle. Kluczowe usprawnienia:

  • Regularyzacja — L1 i L2 kara w funkcji celu, kontrolująca złożoność drzew
  • Column subsampling — losowy podzbiór cech na drzewo/poziom (jak Random Forest)
  • Weighted quantile sketch — efektywny algorytm podziału dla danych ważonych
  • Sparsity-aware — natywna obsługa brakujących wartości
  • Równoległość — budowa drzewa zrównoleglonego na poziomie węzłów

LightGBM

LightGBM (Microsoft, 2017) oferuje szybsze trenowanie dzięki dwóm innowacjom:

  • GOSS (Gradient-based One-Side Sampling) — próbkowanie skupione na instancjach z dużymi gradientami
  • EFB (Exclusive Feature Bundling) — łączenie wzajemnie wykluczających się cech, redukujące wymiarowość

LightGBM rośnie leaf-wise (rozwija liść z największym zyskiem), w odróżnieniu od level-wise XGBoost. Daje głębsze, asymetryczne drzewa — szybsza zbieżność, ale wyższe ryzyko overfittingu na małych zbiorach.

CatBoost

CatBoost (Yandex, 2018) specjalizuje się w danych z cechami kategorycznymi:

  • Ordered Target Encoding — kodowanie kategorii oparte na wartości docelowej, z mechanizmem zapobiegającym target leakage
  • Ordered Boosting — modyfikacja gradient boostingu redukująca bias w estymacji gradientów
  • Symmetric trees — symetryczne drzewa (ten sam podział na każdym poziomie) — szybsza predykcja

Random Forest vs. Gradient Boosting

Cecha Random Forest Gradient Boosting
Paradygmat Bagging (równolegle) Boosting (sekwencyjnie)
Redukcja Wariancja Bias
Overfitting Odporny Podatny (wymaga tuning)
Tuning Mało hiperparametrów Wiele hiperparametrów
Szybkość trenowania Szybsza (równoległa) Wolniejsza (sekwencyjna)
Trafność Dobra Zazwyczaj wyższa

Praktyczna zasada: Random Forest to doskonały baseline — łatwy w użyciu, odporny na overfitting. Gradient Boosting (XGBoost/LightGBM) daje zwykle lepsze wyniki, ale wymaga starannego tuningu hiperparametrów.

Stacking i blending

Stacking (Wolpert, 1992) to metoda zespołowa wyższego poziomu: predykcje modeli bazowych (np. Random Forest, XGBoost, SVM) służą jako cechy wejściowe dla meta-modelu (np. regresji logistycznej), który uczy się optymalnie łączyć bazowe predykcje.

Aby uniknąć overfittingu, predykcje bazowe generowane są w procedurze out-of-fold (podobnej do cross-validation).

Hiperparametry — praktyczny przewodnik

  1. Start z domyślnymi — Random Forest i XGBoost mają rozsądne domyślne
  2. Learning rate + n_estimators — zacznij od η=0.1 i 100-300 drzew; zmniejszaj η, zwiększaj drzewa
  3. max_depth — 3-6 dla boostingu, bez ograniczeń dla RF
  4. Regularyzacja — min_child_weight, reg_alpha/reg_lambda w XGBoost
  5. Cross-validation — zawsze k-fold CV (k=5); metryki dobrane do problemu
  6. Early stopping — zatrzymaj trening, gdy wynik na zbiorze walidacyjnym przestaje się poprawiać

Podsumowanie

Metody zespołowe to najpotężniejsze narzędzia w arsenale ML. Random Forest oferuje prostotę i odporność, Gradient Boosting — wyższą precyzję kosztem złożoności tuningu. XGBoost, LightGBM i CatBoost to trzy filary współczesnego ML tabelarycznego — w konkursach Kaggle i systemach produkcyjnych.