XGBoost steht für eXtreme Gradient Boosting. Wie der Name schon sagt, ist es ein Gradient Boosting-Algorithmus. Er ist in C++ programmiert und in fast allen Programmiersprachen verfügbar, die für Machine Learning nützlich sind, wie Python, R oder Julia.
Was ist Gradient Boosting?
Gradient Boosting ist ein spezieller Algorithmus des Boosting.
Beim Boosting werden mehrere „weak learners“ zu einem „strong learner“ zusammengesetzt, d. h. mehrere Algorithmen mit einer niedrigen Leistung werden zu einem viel effizienteren und zufriedenstellenderen Algorithmus zusammengesetzt. Die Zusammenstellung von „weak learners“ zu „strong learners“ erfolgt, indem man sie nacheinander aufruft, um eine interessierende Variable zu schätzen.
Bei einer Regression ist das Prinzip, unsere Outputs mit Modell 1 zu schätzen, dann die Residuen dieses Modells als Zielvariable für Modell 2 zu verwenden und so weiter:
Um einen Output aufgrund eines Inputs vorhersagen zu können, dessen Zielvariable unbekannt ist, muss man das Residuum jedes Modells vorhersagen und dann die Summe bilden:
Bei einer Klassifizierung hat jedes Individuum ein Gewicht, das anfangs gleich ist und das, wenn ein Modell falsch liegt, erhöht wird, bevor das nächste Modell geschätzt wird (das also diese Gewichte berücksichtigt):
Das Besondere am Gradient Boosting ist, dass bei der Klassifizierung die Aktualisierung der Gewichte auf die gleiche Weise berechnet wird wie beim stochastischen Gradientenabstieg und dass bei der Regression die Gesamtkostenfunktion die gleiche Struktur hat wie der stochastische Gradientenabstieg.
Gradient Boosting wird meistens mit Entscheidungsbaum-Algorithmen verwendet, die in diesem Rahmen als „weak learners“ betrachtet werden.
Besonderheiten von XGBoost
Der Hauptunterschied zwischen XGBoost und anderen Implementierungen der Gradient Boosting-Methode besteht darin, dass XGBoost computertechnisch so optimiert ist, dass die verschiedenen Berechnungen, die für die Anwendung von Gradient Boosting notwendig sind, schnell durchgeführt werden können. Genauer gesagt, verarbeitet XGBoost die Daten in mehreren komprimierten Blöcken, so dass sie viel schneller sortiert und parallel verarbeitet werden können.
Die Vorteile von XGBoost liegen jedoch nicht nur in der Implementierung des Algorithmus und damit in seiner Leistung, sondern auch in den verschiedenen Parametern, die er bietet. XGBoost bietet eine große Auswahl an Hyperparametern, die es ermöglichen, die Implementierung des Gradient Boosting vollständig zu kontrollieren. Es ist auch möglich, verschiedene Regularisierungen in die Verlustfunktion einzufügen, um ein Phänomen zu begrenzen, das bei der Verwendung von Gradient Boosting-Algorithmen häufig auftritt: Overfitting.
Aus diesem Grund ist XGBoost oft der Siegeralgorithmus bei Kaggle-Wettbewerben: Er ist schnell, präzise und effizient und ermöglicht eine Flexibilität, die beim Gradient Boosting noch nie da gewesen ist. Da Gradient Boosting hauptsächlich dazu dient, schwache Modelle zu verbessern, wird XGBoost fast immer bessere Ergebnisse erzielen als das schwache Basismodell.
Wenn du mehr über XGBoost, Gradient Boosting oder unsere Machine-Learning-Module erfahren möchtest, kannst du dich gerne an unser Team wenden.