Gradient boosting: GBM og XGBoost
Boosting kontra bagging, GradientBoostingClassifier, XGBClassifier og tidlig stopp.
Gradient boosting: GBM og XGBoost er en gratis leksjon i Lær AI med Python på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lær AI med Python, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Boosting versus bagging
Bagging trener trær parallelt og beregner gjennomsnittet av dem. Boosting trener trær sekvensielt, der hvert nye tre korrigerer feilene fra de foregående.
Boosting reduserer skjevheten og gir ofte høyere nøyaktighet enn bagging på strukturerte data.
Sekvensielle svake lærere
Gradient boosting bygger et ensemble av grunne trær (svake lærere). Hvert tre tilpasser seg residualene (gradientene til tapsfunksjonen) som det gjeldende ensemblet har etterlatt.
Ved å legge til mange små korrigeringer bygges en sterk modell som helhet.
GradientBoostingClassifier
Scikit-learn tilbyr GradientBoostingClassifier. Viktige parametere er n_estimators (antall trær), learning_rate (krymping) og max_depth (trestørrelse).
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))Avveiningen ved læringsraten
learning_rate skalerer bidraget fra hvert tre. En lavere læringsrate krever flere trær, men generaliserer vanligvis bedre.
En vanlig strategi er å angi en lav læringsrate (f.eks. 0.05) og mange estimatorer, og deretter bruke tidlig stopp.
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=1000,
learning_rate=0.05,
max_depth=3,
)Hvorfor max_depth forblir liten
I boosting er hvert tre en svak lærer, så max_depth er vanligvis 3 til 6. Dype trær ville raskt overtilpasse residualene. Ensemblet blir sterkere av mange grunne trær, ikke av noen få dype trær.
Introduksjon til XGBoost
XGBoost er et optimalisert bibliotek for gradient boosting: raskere, regularisert og med innebygd støtte for manglende verdier. Det er blant de beste modellene i konkurranser innen tabulær maskinlæring.
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))Viktige XGBoost-parametere
De viktigste parameterne tilsvarer GBM:
n_estimatorsantall boosting-runderlearning_ratekrymping per rundemax_depthtreets dybdesubsampleogcolsample_bytreetilfører tilfeldighet for regularisering
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=500,
learning_rate=0.05,
max_depth=4,
subsample=0.8,
colsample_bytree=0.8,
)Regularisering i XGBoost
XGBoost legger til L1- (reg_alpha) og L2- (reg_lambda) straffeledd, samt gamma (minste tapsreduksjon for å splitte). Disse begrenser kompleksiteten og reduserer overtilpasning utover det vanlig GBM tilbyr.
from xgboost import XGBClassifier
model = XGBClassifier(
reg_alpha=0.1,
reg_lambda=1.0,
gamma=0.1,
)Tidlig stopp
early_stopping_rounds stopper treningen når valideringsmetrikken ikke lenger forbedres på N runder. Dette finner automatisk riktig antall trær og forhindrer overtilpasning.
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)Tolke egenskapsviktighet
XGBoost tilbyr feature_importances_ og en mer detaljert get_booster().get_score() med viktighetstyper som gain og weight. Gain gjenspeiler hvor mye en egenskap forbedret tapet.
model = XGBClassifier(n_estimators=200).fit(Xtr, ytr)
print(model.feature_importances_)
booster = model.get_booster()
print(booster.get_score(importance_type="gain"))Når bør boosting brukes
Gradient boosting slår ofte tilfeldige skoger på tabulære data når modellen er godt justert. Ulempen er større følsomhet for hyperparametere og langsommere sekvensiell trening. Start med standardinnstillingene i XGBoost, juster deretter learning_rate og max_depth, og bruk tidlig stopp.
Hurtigsjekk
Kontroller kunnskapen om boosting.
Oppsummering
Oppsummering: Boosting trener trær sekvensielt, og hvert tre korrigerer tidligere feil. Juster n_estimators, learning_rate (lav rate + mange trær) og en liten max_depth. XGBoost legger til regularisering (reg_alpha, reg_lambda, gamma) og early_stopping_rounds for automatisk å velge det optimale antallet trær.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 225
Ofte stilte spørsmål
Er leksjonen «Gradient boosting: GBM og XGBoost» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lær AI med Python, inkludert «Gradient boosting: GBM og XGBoost», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lær AI med Python inneholder totalt 4 leksjoner.
Hva lærer jeg i «Gradient boosting: GBM og XGBoost»?
Boosting kontra bagging, GradientBoostingClassifier, XGBClassifier og tidlig stopp. Du øver på Lær AI med Python med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lær AI med Python?
Ingen tidligere erfaring er nødvendig. Lær AI med Python på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Gradient boosting: GBM og XGBoost»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lær AI med Python-leksjonen?
Ja. Alle Lær AI med Python-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Beslutningstrær: teori og implementasjon
- Tilfeldige skoger og bagging
- Gradient boosting: GBM og XGBoost
- LightGBM og CatBoost