Gradient Boosting: GBM und XGBoost
Boosting im Vergleich zu Bagging, GradientBoostingClassifier, XGBClassifier und Early Stopping.
Gradient Boosting: GBM und XGBoost ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Boosting vs. Bagging
Bagging trainiert Bäume parallel und mittelt ihre Ergebnisse. Boosting trainiert Bäume sequenziell; jeder neue Baum korrigiert die Fehler der vorherigen.
Boosting reduziert den Bias und erzielt bei strukturierten Daten oft eine höhere Genauigkeit als Bagging.
Sequenzielle schwache Lerner
Gradient Boosting erstellt ein Ensemble aus flachen Bäumen (schwachen Lernern). Jeder Baum modelliert die Residuen (Gradienten der Verlustfunktion), die das aktuelle Ensemble hinterlässt.
Durch das Hinzufügen vieler kleiner Korrekturen entsteht insgesamt ein starkes Modell.
GradientBoostingClassifier
Scikit-learn stellt GradientBoostingClassifier bereit. Zu den wichtigsten Parametern gehören n_estimators (Anzahl der Bäume), learning_rate (Schrumpfung) und max_depth (Baumgröße).
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))Der Zielkonflikt bei der Lernrate
learning_rate skaliert den Beitrag jedes Baums. Eine kleinere Lernrate erfordert mehr Bäume, generalisiert aber normalerweise besser.
Eine gängige Strategie besteht darin, eine niedrige Lernrate (z. B. 0.05) und viele Schätzer festzulegen und anschließend Early Stopping zu verwenden.
from sklearn.ensemble import GradientBoostingClassifier
gbm = GradientBoostingClassifier(
n_estimators=1000,
learning_rate=0.05,
max_depth=3,
)Warum max_depth klein bleibt
Beim Boosting ist jeder Baum ein schwacher Lerner, daher liegt max_depth normalerweise zwischen 3 und 6. Tiefe Bäume würden die Residuen schnell überanpassen. Das Ensemble gewinnt seine Stärke durch viele flache Bäume, nicht durch wenige tiefe.
XGBoost wird vorgestellt
XGBoost ist eine optimierte Bibliothek für Gradient Boosting: schneller, regularisiert und mit integrierter Unterstützung für fehlende Werte. Bei Wettbewerben zum maschinellen Lernen mit Tabellendaten erzielt sie Spitzenleistungen.
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))Wichtige XGBoost-Parameter
Die wichtigsten Stellschrauben entsprechen denen von GBM:
n_estimatorsAnzahl der Boosting-Rundenlearning_rateSchrumpfung pro Rundemax_depthBaumtiefesubsampleundcolsample_bytreefügen zur Regularisierung Zufälligkeit hinzu
from xgboost import XGBClassifier
model = XGBClassifier(
n_estimators=500,
learning_rate=0.05,
max_depth=4,
subsample=0.8,
colsample_bytree=0.8,
)Regularisierung in XGBoost
XGBoost fügt L1-Strafterme (reg_alpha) und L2-Strafterme (reg_lambda) sowie gamma hinzu (minimale Verlustreduktion für eine Aufteilung). Dadurch wird die Komplexität gesteuert und Überanpassung stärker reduziert, als dies mit einfachem GBM möglich ist.
from xgboost import XGBClassifier
model = XGBClassifier(
reg_alpha=0.1,
reg_lambda=1.0,
gamma=0.1,
)Early Stopping
early_stopping_rounds beendet das Training, wenn sich die Validierungsmetrik über N Runden nicht verbessert. Dadurch wird die passende Anzahl an Bäumen automatisch ermittelt und Überanpassung verhindert.
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)Merkmalswichtigkeit auswerten
XGBoost stellt feature_importances_ sowie das detailliertere get_booster().get_score() mit Wichtigkeitstypen wie gain und weight bereit. gain gibt an, wie stark ein Merkmal den Verlust verbessert hat.
model = XGBClassifier(n_estimators=200).fit(Xtr, ytr)
print(model.feature_importances_)
booster = model.get_booster()
print(booster.get_score(importance_type="gain"))Wann Sie Boosting einsetzen sollten
Gradient Boosting übertrifft bei Tabellendaten oft Random Forests, wenn es gut abgestimmt ist. Der Nachteil besteht in der höheren Empfindlichkeit gegenüber Hyperparametern und dem langsameren sequenziellen Training. Beginnen Sie mit den XGBoost-Standardwerten, stimmen Sie anschließend learning_rate und max_depth ab und verwenden Sie Early Stopping.
Kurzer Test
Überprüfen Sie Ihre Kenntnisse zu Boosting.
Zusammenfassung
Zusammenfassung: Boosting trainiert Bäume sequenziell, wobei jeder Baum vorherige Fehler korrigiert. Stimmen Sie n_estimators und learning_rate ab (niedrige Lernrate + viele Bäume) und verwenden Sie ein kleines max_depth. XGBoost ergänzt Regularisierung (reg_alpha, reg_lambda, gamma) sowie early_stopping_rounds, um die optimale Anzahl an Bäumen automatisch zu bestimmen.
Häufig gestellte Fragen
Ist die Lektion „Gradient Boosting: GBM und XGBoost“ kostenlos?
Ja — der vollständige Text von „Gradient Boosting: GBM und XGBoost“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Gradient Boosting: GBM und XGBoost“?
Boosting im Vergleich zu Bagging, GradientBoostingClassifier, XGBClassifier und Early Stopping. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn AI with Python zu starten?
Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Gradient Boosting: GBM und XGBoost“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?
Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Entscheidungsbäume: Theorie und Implementierung
- Random Forests und Bagging
- Gradient Boosting: GBM und XGBoost
- LightGBM und CatBoost