XGBoost
XGBoost ist eine Gradient-Boosting-Bibliothek, die nacheinander regularisierte Entscheidungsbäume hinzufügt und sich besonders für Tabellendaten eignet. So funktioniert sie – mit Code.
XGBoost (extreme Gradientverstärkung) ist eine quelloffene Bibliothek für Gradient-Boosting-Entscheidungsbäume und eines der meistgenutzten Werkzeuge für tabellarische Daten. Tianqi Chen begann das Projekt als Forschungsarbeit an der University of Washington und veröffentlichte es 2014. Der KDD-Beitrag von 2016, XGBoost: Ein skalierbares Tree-Boosting-System, den er gemeinsam mit Carlos Guestrin verfasste, beschrieb das regularisierte Optimierungsziel und den Systementwurf. Die von der DMLC-Community gepflegte Bibliothek unterstützt Klassifizierung, Regression und Ranking mit Python, R, der JVM und C, läuft auf CPUs und GPUs und lässt sich mit Dask und Spark horizontal skalieren. Im Beitrag wird berichtet, dass 17 der 29 2015 im Kaggle-Blog veröffentlichten, wettbewerbsgewinnenden Lösungen XGBoost verwendeten.
So funktioniert XGBoost#
XGBoost erstellt sequenziell ein Ensemble: Es beginnt mit einer konstanten Vorhersage und fügt pro Boosting-Runde einen Baum hinzu, der jeweils darauf trainiert wird, den Verlust der vorherigen Bäume zu verringern. Die endgültige Vorhersage summiert die Ausgaben der Bäume. Jeder davon wird mit der Lernrate (eta, standardmäßig 0.3) skaliert, damit kein einzelner Baum dominiert. Zwei Ideen aus dem Beitrag bestimmen, wie jeder Baum erstellt wird:
- Optimierungsziel zweiter Ordnung: Für jede Zeile berechnet XGBoost die erste und zweite Ableitung des Verlusts in Bezug auf die aktuelle Vorhersage: den Gradienten
gund die Hesse-Matrixh. Ein Blatt, dessen Zeilen eine Gradientensumme vonGund eine Hesse-Summe vonHhaben, erhält das Gewicht-G / (H + λ)– denselben Newton-Schritt, den Optimierer zweiter Ordnung ausführen. - Regularisierte Bäume: Das Optimierungsziel enthält eine Strafe
γpro Blatt und eine L2-Strafeλauf die Blattgewichte sowie optional eine L1-Strafeα. Eine Aufteilung wird nur beibehalten, wenn ihr Gewinn,½ [G_L²/(H_L + λ) + G_R²/(H_R + λ) − (G_L + G_R)²/(H_L + H_R + λ)] − γ, positiv ist. So wird die Regularisierung direkt in die Baumerstellung integriert und Überanpassung begrenzt.
Die Baumtiefe ist begrenzt (max_depth, standardmäßig 6), und die Bäume wachsen Ebene für Ebene, sofern grow_policy="lossguide" nicht das blattweise Wachstum aktiviert. Das Training wird üblicherweise mit vorzeitigem Abbruch anhand eines Validierungssatzes durchgeführt:
Fehlende Werte, Geschwindigkeit und Skalierung#
Die sparsitätsbewusste Aufteilungssuche von XGBoost trainiert mit Tabellen, die Lücken aufweisen, ohne dass eine Imputation erforderlich ist. Bei jeder Aufteilung versucht das Verfahren, die Zeilen mit fehlendem Wert nach links und anschließend nach rechts zu schicken. Es behält die Richtung mit dem höheren Gewinn als Standardzweig des Knotens bei. Derselbe Mechanismus ermöglicht es, nur die gespeicherten Einträge spärlich besetzter Matrizen wie One-Hot-Kodierungen zu durchsuchen. In diesem Beispiel werden 30 % aller Merkmalswerte im Brustkrebsdatensatz von scikit-learn ausgeblendet und das Modell direkt mit den Lücken trainiert:
import numpy as np
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Hide 30% of all values; each split learns a default branch for missing ones
rng = np.random.default_rng(0)
X_train_nan = np.where(rng.random(X_train.shape) < 0.3, np.nan, X_train)
X_test_nan = np.where(rng.random(X_test.shape) < 0.3, np.nan, X_test)
for name, train, test in [("complete", X_train, X_test), ("30% missing", X_train_nan, X_test_nan)]:
model = xgb.XGBClassifier(n_estimators=200, max_depth=4, learning_rate=0.1)
model.fit(train, y_train)
print(f"{name}: accuracy {model.score(test, y_test):.3f}")Das Beispiel gibt eine Test-Genauigkeit von 0.972 mit vollständigen Daten und 0.951 aus, wenn in Trainings- und Testsätzen jeweils 30 % der Werte fehlen.
Für eine höhere Geschwindigkeit teilt die standardmäßige Baummethode hist jedes Merkmal in höchstens 256 Bins (max_bin) ein und sucht Aufteilungen an den Bin-Grenzen – wie bei LightGBM. exact prüft dagegen jeden sortierten Wert. Mit device="cuda" wird das Training auf eine NVIDIA GPU verlagert, enable_categorical=True teilt kategoriale Spalten direkt auf, und der Modus für externen Speicher ermöglicht das Training mit Datensätzen, die größer als der Arbeitsspeicher sind. Seit Version 2.1 werden Modelle standardmäßig im binären UBJSON-Format gespeichert.
XGBoost im Vergleich zu verwandten Verfahren#
- LightGBM: Das 2016 von Microsoft entwickelte Boosting-Framework lässt Bäume standardmäßig blattweise wachsen und ergänzt zeilenbasiertes Sampling mit gradientenbasierter Auswahl sowie die Bündelung spärlich besetzter Merkmale. Beide Bibliotheken verwenden inzwischen standardmäßig Histogramme und teilen die meisten Verfahren.
- CatBoost: Die Boosting-Bibliothek von Yandex erstellt symmetrische Bäume und kodiert kategoriale Merkmale anhand geordneter Zielstatistiken.
- Random Forest: Bei diesem Bagging-Verfahren werden tiefe Bäume unabhängig voneinander mit Bootstrap-Stichproben trainiert und anschließend gemittelt. Dadurch sinkt die Varianz, und es ist nur wenig Abstimmung erforderlich.
- Deep Learning: Für unstrukturierte Eingaben wie Bilder, Audio und Text ist Deep Learning der Standard, da neuronale Netze Merkmale aus Rohdaten erlernen. Bei Tabellen mit konstruierten Merkmalen sind Boosting-Bäume weiterhin der übliche Maßstab, den es zu übertreffen gilt. Grundlagenmodelle für tabellarische Daten wie TabPFN konkurrieren inzwischen bei kleinen Datensätzen mit ihnen.
Anwendungen in der Praxis#
- Betrugserkennung und Kreditrisiko: Zahlungsdienstleister bewerten jede Transaktion anhand von Betrag, Händler, Standort, Gerät und Kontoverlauf – eine zentrale Aufgabe der prädiktiven Modellierung, bei der die schnelle Inferenz von XGBoost Echtzeitentscheidungen ermöglicht.
- Sichtprüfung: Qualitätssicherungssysteme in der Fertigung kombinieren Kamera- und Sensordaten. Die Vorhersagen von Ultralytics YOLO26 liefern die Kameradaten:
result.summary()gibt für jeden erkannten Fehler Klasse, Konfidenz und Boxkoordinaten zurück. Ein Werk kann diese Werte pro Bauteil zusammenfassen und mit Temperatur- und Druckmessungen als Merkmale für ein XGBoost-Modell verbinden, das Ausfälle vorhersagt. - Ranking und Klickvorhersage:
XGBRankerwird standardmäßig mit dem Zielrank:ndcgtrainiert, um Suchergebnisse zu sortieren. Binäre Klassifikatoren sagen die Klickrate von Anzeigen voraus. - Wettbewerbsgewinnende Aufgaben: Der KDD-Beitrag führt die Aufgaben auf, die den 2015 siegreichen Lösungen zugrunde lagen. Dazu gehören die Vorhersage von Ladenumsätzen, die Klassifizierung von Ereignissen in der Hochenergiephysik, die Klassifizierung von Schadsoftware und die Vorhersage von Kursabbrüchen bei großen Onlinekursen.










