Gradient boosting: GBM i XGBoost
Boosting a bagging, GradientBoostingClassifier, XGBClassifier i early stopping.
Gradient boosting: GBM i XGBoost to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Boosting a baggingiem
Bagging trenuje drzewa równolegle i uśrednia ich wyniki. Boosting trenuje drzewa sekwencyjnie, przy czym każde nowe drzewo koryguje błędy poprzednich.
Boosting zmniejsza obciążenie modelu, często zapewniając większą dokładność niż bagging w przypadku danych tabelarycznych.
Sekwencyjne słabe modele
Gradient boosting buduje zespół płytkich drzew (słabych modeli). Każde drzewo dopasowuje się do reszt (gradientów funkcji straty) pozostawionych przez bieżący zespół.
Dodawanie wielu niewielkich korekt pozwala zbudować silny model całościowy.
GradientBoostingClassifier
Scikit-learn udostępnia klasę GradientBoostingClassifier. Najważniejsze parametry to n_estimators (liczba drzew), learning_rate (współczynnik pomniejszenia wpływu) oraz max_depth (rozmiar drzewa).
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=200,
learning_rate=0.1,
max_depth=3,
random_state=0,
)
gbm.fit(Xtr, ytr)
print(gbm.score(Xte, yte))Kompromis związany z learning_rate
learning_rate skaluje wkład każdego drzewa. Mniejszy współczynnik uczenia wymaga większej liczby drzew, ale zwykle zapewnia lepszą generalizację.
Popularna strategia polega na ustawieniu niskiego współczynnika uczenia (np. 0.05) i dużej liczby estymatorów, a następnie zastosowaniu wczesnego zatrzymywania.
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=1000,
learning_rate=0.05,
max_depth=3,
)Dlaczego max_depth pozostaje małe
W boosting każde drzewo jest słabym modelem, dlatego max_depth zwykle wynosi od 3 do 6. Głębokie drzewa szybko dopasowywałyby się nadmiernie do reszt. Zespół zyskuje siłę dzięki wielu płytkim drzewom, a nie kilku głębokim.
Wprowadzenie do XGBoost
XGBoost to zoptymalizowana biblioteka do gradient boostingu: szybsza, wyposażona w regularyzację i wbudowaną obsługę brakujących wartości. Jest jednym z najlepszych narzędzi w konkursach uczenia maszynowego na danych tabelarycznych.
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=300,
learning_rate=0.1,
max_depth=4,
random_state=0,
)
model.fit(Xtr, ytr)
print(model.score(Xte, yte))Najważniejsze parametry XGBoost
Najważniejsze parametry są podobne jak w GBM:
n_estimatorsliczba rund boostingulearning_ratepomniejszenie wpływu w każdej rundziemax_depthgłębokość drzewasubsampleicolsample_bytreewprowadzają losowość w celu regularyzacji
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=500,
learning_rate=0.05,
max_depth=4,
subsample=0.8,
colsample_bytree=0.8,
)Regularyzacja w XGBoost
XGBoost dodaje kary L1 (reg_alpha) i L2 (reg_lambda) oraz parametr gamma (minimalne zmniejszenie straty wymagane do podziału). Ograniczają one złożoność i zmniejszają przeuczenie w większym stopniu niż zwykły GBM.
from xgboost import XGBClassifier
model = XGBClassifier(
reg_alpha=0.1,
reg_lambda=1.0,
gamma=0.1,
)Wczesne zatrzymywanie
early_stopping_rounds zatrzymuje trenowanie, gdy metryka walidacyjna przestaje się poprawiać przez N rund. Pozwala to automatycznie znaleźć właściwą liczbę drzew i zapobiega przeuczeniu.
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=2000,
learning_rate=0.05,
early_stopping_rounds=50,
eval_metric="logloss",
)
model.fit(Xtr, ytr, eval_set=[(Xte, yte)], verbose=False)
print("Best iteration:", model.best_iteration)Odczytywanie ważności cech
XGBoost udostępnia feature_importances_ oraz bardziej rozbudowaną metodę get_booster().get_score() z typami ważności takimi jak gain i weight. Gain odzwierciedla to, jak bardzo dana cecha poprawiła wartość funkcji straty.
model = XGBClassifier(n_estimators=200).fit(Xtr, ytr)
print(model.feature_importances_)
booster = model.get_booster()
print(booster.get_score(importance_type="gain"))Kiedy warto zastosować boosting
Gradient boosting często przewyższa lasy losowe na danych tabelarycznych, jeśli zostanie dobrze dostrojony. Wadą jest większa wrażliwość na hiperparametry i wolniejsze, sekwencyjne trenowanie. Najpierw warto użyć wartości domyślnych XGBoost, a następnie dostroić learning_rate, max_depth i zastosować wczesne zatrzymywanie.
Szybki test
Sprawdź swoją wiedzę na temat boostingu.
Podsumowanie
Podsumowanie: Boosting trenuje drzewa sekwencyjnie, a każde z nich koryguje wcześniejsze błędy. Należy dostroić n_estimators, learning_rate (niski współczynnik i wiele drzew) oraz niewielkie max_depth. XGBoost dodaje regularyzację (reg_alpha, reg_lambda, gamma) i early_stopping_rounds, aby automatycznie wybrać optymalną liczbę drzew.
Często zadawane pytania
Czy lekcja „Gradient boosting: GBM i XGBoost” jest bezpłatna?
Tak — pełny tekst „Gradient boosting: GBM i XGBoost” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Gradient boosting: GBM i XGBoost”?
Boosting a bagging, GradientBoostingClassifier, XGBClassifier i early stopping. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Gradient boosting: GBM i XGBoost”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Drzewa decyzyjne: teoria i implementacja
- Lasy losowe i bagging
- Gradient boosting: GBM i XGBoost
- LightGBM i CatBoost