Gradient Boosting
Gradient Boosting (pol. wzmacnianie gradientowe) to technika uczenia maszynowego należąca do rodziny metod boostingu. Polega ona na iteracyjnym budowaniu zespołu słabych modeli (najczęściej drzew decyzyjnych), które kolejno korygują błędy poprzedników poprzez minimalizację wybranej funkcji straty przy użyciu metody gradientu.
Historia
Idea boostingu sięga lat 90. XX wieku, kiedy to Yoav Freund i Robert Schapire wprowadzili algorytm AdaBoost. W 1999 roku Jerome Friedman zaproponował Gradient Boosting Machine (GBM), łącząc koncepcję boosting z optymalizacją gradientową, co umożliwiło stosowanie dowolnych funkcji strat i modeli bazowych.
Zasada działania
Podstawowy schemat algorytmu wygląda następująco:
- Inicjalizacja modelu:
F₀(x) = arg min_γ Σ L(y_i, γ), gdzieLjest funkcją straty. - Dla kolejnych iteracji
m = 1 … M:- Obliczenie residuali (negatywnych gradientów)
r_i^{(m)} = -∂L(y_i, F_{m‑1}(x_i))/∂F_{m‑1}(x_i). - Trening słabego modelu
h_m(x)(zazwyczaj drzewo decyzyjne) na danych{(x_i, r_i^{(m)})}. - Wyznaczenie optymalnej wielkości kroku
γ_mpoprzez rozwiązanieγ_m = arg min_γ Σ L(y_i, F_{m‑1}(x_i) + γ·h_m(x_i)). - Aktualizacja modelu:
F_m(x) = F_{m‑1}(x) + ν·γ_m·h_m(x), przy czymν(learning rate) jest parametrem regulującym tempo uczenia.
- Obliczenie residuali (negatywnych gradientów)
- Końcowy model
F_M(x)jest sumą wszystkich słabych modeli.
Kluczowe elementy
- Model bazowy – najczęściej drzewo decyzyjne o ograniczonej głębokości (tzw. stump).
- Funkcja straty – dobór zależy od zadania:
L2dla regresji,logistycznadla klasyfikacji binarnej,multinomialna log-lossdla klasyfikacji wieloklasowej. - Learning rate (η) – mały współczynnik (np. 0,01‑0,1) zmniejsza ryzyko przeuczenia, ale wymaga większej liczby drzew.
- Liczba iteracji (M) – kontroluje złożoność modelu; typowo dobiera się metodą walidacji krzyżowej.
- Subsampling – losowe pobieranie podzbioru danych w każdej iteracji (stochastyczny gradient boosting), co zwiększa różnorodność modeli.
Popularne implementacje
W praktyce najczęściej wykorzystywane są otwarte biblioteki:
- scikit-learn –
GradientBoostingRegressoriGradientBoostingClassifier. - XGBoost – rozszerzona wersja z regularizacją L1/L2, obsługą brakujących danych i paralelizacją.
- LightGBM – oparta na drzewach gradientowych metoda z techniką leaf-wise growth, zoptymalizowana pod kątem dużych zbiorów.
- CatBoost – specjalizuje się w danych kategorycznych, redukując potrzebę ich ręcznego kodowania.
Zastosowania
Gradient Boosting znajduje zastosowanie w wielu dziedzinach:
- Finanse – prognozowanie ryzyka kredytowego, wykrywanie oszustw.
- Marketing – modelowanie churnu, przewidywanie wartości klienta (CLV).
- Medicina – klasyfikacja obrazów medycznych, prognozowanie terapii.
- Systemy rekomendacyjne – ranking produktów i treści.
- Ubezpieczenia – wycena składek i rezerwy techniczne.
Zalety i wady
| Zalety | Wady |
|---|---|
|
|
Porównanie z innymi metodami boostingu
W przeciwieństwie do AdaBoost, który zmienia wagi próbek, gradient boosting optymalizuje funkcję straty bezpośrednio w przestrzeni gradientu, co pozwala na użycie bardziej złożonych funkcji kosztu i lepszą wydajność w zadaniach regresji.
Przykładowy kod w Pythonie (biblioteka scikit-learn)
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
X, y = load_data() # funkcja wymyślona dla przykładu
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = GradientBoostingRegressor(
n_estimators=200,
learning_rate=0.05,
max_depth=3,
subsample=0.8,
random_state=42
)
model.fit(X_train, y_train)
pred = model.predict(X_test)
print('RMSE:', mean_squared_error(y_test, pred, squared=False))
Literatura
- Friedman, J. H. (2001). Greedy Function Approximation: A Gradient Boosting Machine. Annals of Statistics.
- Chen, T., & Guestrin, C. (2016). XGBoost: A Scalable Tree Boosting System. Proceedings of the 22nd ACM SIGKDD.
- Ke, G., Meng, Q., Finley, T., et al. (2017). LightGBM: A Highly Efficient Gradient Boosting Decision Tree. Advances in Neural Information Processing Systems.
- Prokhorenkova, L., Gusev, G., et al. (2018). CatBoost: unbiased boosting with categorical features. arXiv preprint.
Gradient Boosting jest jednym z najpopularniejszych algorytmów uczenia maszynowego, łączącym wysoką dokładność z elastycznością konfiguracji, co czyni go standardowym wyborem w konkursach data‑science oraz w zastosowaniach przemysłowych.