Startseite

Themen

XGboost

Was ist XGBoost?
XGBoost mit watsonx.ai verwenden Abonnieren Sie KI-Updates
Illustration mit Collage aus Piktogrammen von Wolken, Kreisdiagramm, Diagrammpiktogrammen

Veröffentlicht: 9. Mai 2024
Mitwirkende: Eda Kavlakoglu, Erika Russi

Was ist XGBoost?

XGBoost (eXtreme Gradient Boosting) ist eine verteilte Open-Source-Bibliothek für maschinelles Lernen, die gradientenverstärkte Decision Trees verwendet, einen überwachten Lern-Boosting-Algorithmus, der den Gradientenabstieg nutzt. Es ist für seine Geschwindigkeit, Effizienz und gute Skalierbarkeit bei großen Datensätzen bekannt.

XGBoost wurde von Tianqi Chen von der University of Washington entwickelt und ist eine fortschrittliche Implementierung von Gradient Boosting mit demselben allgemeinen Framework; das heißt, es kombiniert schwache Learner Trees zu starken Learnern, indem Residuen addiert werden. Die Bibliothek ist für C++, Python, R, Java, Scala und Julia1 verfügbar.

 

Decision Trees vs. Boosting

Decision Trees werden für Klassifizierungs- oder Regressionsaufgaben beim maschinellen Lernen verwendet. Sie verwenden eine hierarchische Baumstruktur, in der ein interner Knoten ein Merkmal, der Zweig eine Entscheidungsregel­ und jeder Blattknoten das Ergebnis des Datensatzes darstellt.

Da Decision Trees zu Überanpassung neigen, können oft Ensemble-Methoden wie Boosting verwendet werden, um robustere Modelle zu erstellen. Boosting kombiniert mehrere einzelne schwache Trees – d. h. Modelle, die etwas besser als der Zufall abschneiden – zu einem starken Learner. Jeder schwache Learner wird sequenziell trainiert, um die Fehler der vorherigen Modelle zu korrigieren. Nach Hunderten von Iterationen werden schwache Learner in starke Learner umgewandelt.

Random Forests und Boosting-Algorithmen sind beides beliebte Ensemble-Lerntechniken, die einzelne Learner Trees verwenden, um die Vorhersageleistung zu verbessern. Random Forests basieren auf dem Konzept des Bagging (Bootstrap-Aggregation) und trainieren jeden Tree unabhängig, um ihre Vorhersagen zu kombinieren, während Boosting-Algorithmen einen additiven Ansatz verwenden, bei dem schwache Learner nacheinander trainiert werden, um die Fehler der vorherigen Modelle zu korrigieren.

Gradientenverstärkte Decision Trees 

Gradientenverstärkte Decision Trees sind eine Art von Boosting-Algorithmus, der Gradientenabstieg verwendet. Wie andere Boosting-Methoden beginnt auch das Gradient Boosting mit einem schwachen Learner, der Vorhersagen trifft. Der erste Decision Tree beim Gradient Boosting wird als Base Learner bezeichnet. Als Nächstes werden neue Trees additiv basierend auf den Fehlern des Base Learners erstellt. Der Algorithmus berechnet dann die Residuen der Vorhersagen jedes Trees, um zu bestimmen, wie weit die Vorhersagen des Modells von der Realität entfernt waren. Residuen sind die Differenz zwischen den vorhergesagten und den tatsächlichen Werten des Modells. Die Residuen werden dann aggregiert, um das Modell mit einer Verlustfunktion zu bewerten.

Beim maschinellen Lernen werden Verlustfunktionen verwendet, um die Leistung eines Modells zu messen. Der Begriff „Gradient“ in „gradientenverstärkte Decision Trees“ bezieht sich auf den Gradientenabstieg. Der Gradientenabstieg wird verwendet, um den Verlust zu minimieren (d. h. um die Leistung des Modells zu verbessern), wenn wir neue Modelle trainieren. Der Gradientenabstieg ist ein beliebter Optimierungsalgorithmus, der zur Minimierung der Verlustfunktion bei Problemen des maschinellen Lernens verwendet wird. Einige Beispiele für Verlustfunktionen sind der mittlere quadratische Fehler oder der mittlere absolute Fehler für Regressionsprobleme, der Kreuzentropieverlust für Klassifizierungsprobleme oder benutzerdefinierte Verlustfunktionen, die für einen bestimmten Anwendungsfall und Datensatz entwickelt werden können.

Warum KI-Governance eine geschäftliche Notwendigkeit für die Skalierung von KI in Unternehmen ist

Erfahren Sie mehr über die Hindernisse bei der Einführung von KI, insbesondere über das Fehlen von Lösungen für KI-Governance und -Risikomanagement.

Ähnliche Inhalte Registrieren Sie sich für das E-Book über verantwortungsvolle KI-Workflows
Funktionen von XGBoost

Im Folgenden werden einige der Funktionen von XGBoost in Python erörtert, die es im Vergleich zum normalen Gradient-Boosting-Paket in scikit-learn2 auszeichnen:

  • Paralleles und verteiltes Rechnen: Die Bibliothek speichert Daten in In-Memory-Units, die als Blöcke bezeichnet werden. Einzelne Blöcke können auf verschiedene Maschinen verteilt oder mit Out-of-Core-Computing in einem externen Speicher abgelegt werden. XGBoost ermöglicht zudem fortgeschrittenere Anwendungsfälle, wie z. B. verteiltes Training auf einem Computer-Cluster, um die Berechnung zu beschleunigen. XGBoost kann auch im verteilten Modus mit Tools wie Apache Spark, Dask oder Kubernetes implementiert werden.
  • Cache-fähiger Prefetching-Algorithmus: XGBoost verwendet einen Cache-fähigen Prefetching-Algorithmus, der dazu beiträgt, die Laufzeit für große Datensätze zu reduzieren. Die Bibliothek kann auf einem einzelnen Computer mehr als zehnmal schneller ausgeführt werden als andere bestehende Frameworks. Aufgrund seiner beeindruckenden Geschwindigkeit kann XGBoost Milliarden von Beispielen mit weniger Ressourcen verarbeiten und ist damit ein skalierbares Tree-Boosting-System.
  • Eingebaute Regularisierung: XGBoost beinhaltet im Gegensatz zum regulären Gradient Boosting Regularisierung als Teil des Lernziels. Daten können auch durch Hyperparameter-Optimierung reguliert werden. Durch die Verwendung der in XGBoost integrierten Regularisierung kann die Bibliothek auch bessere Ergebnisse erzielen als das reguläre Gradient-Boosting-Paket von scikit-learn.
  • Umgang mit Missing Values: XGBoost verwendet einen Spartsity-fähigen Algorithmus für spärliche Daten. Wenn ein Wert im Datensatz fehlt, wird der Datenpunkt in die Standardrichtung klassifiziert und der Algorithmus lernt die beste Richtung, um Missing Values zu verarbeiten.
So funktioniert XGBoost

In diesem Abschnitt erfahren Sie, wie Sie das XGBoost-Paket verwenden, wie Sie Hyperparameter für den XGBoost Tree Booster auswählen, wie XGBoost im Vergleich zu anderen Boosting-Implementierungen abschneidet und einige seiner Anwendungsfälle.

Aufteilen Ihrer Daten und Konvertieren ins DMatrix-Format

Angenommen, Sie haben bereits eine explorative Datenanalyse mit Ihren Daten durchgeführt, dann fahren Sie mit der Aufteilung Ihrer Daten in einen Trainingsdatensatz und einen Testdatensatz fort. Konvertieren Sie als Nächstes Ihre Daten in das von XGBoost erwartete DMatrix-Format3. DMatrix ist die interne Datenstruktur von XGBoost, die für Speichereffizienz und Trainingsgeschwindigkeit optimiert ist4.

Erstellen und bewerten Sie das Modell

Instanziieren Sie als Nächstes ein XGBoost-Modell und wählen Sie je nach Anwendungsfall über den Hyperparameter „Objekt“ aus, welche Zielfunktion Sie verwenden möchten. Wenn Sie beispielsweise eine Klassifizierungsaufgabe mit mehreren Klassen haben, sollten Sie das Ziel als „multi:softmax“5 festlegen. Wenn Sie ein Problem mit der binären Klassifizierung haben, können Sie alternativ das logistische Regressionsziel „binary:logistic“ verwenden. Jetzt können Sie Ihren Trainingssatz verwenden, um das Modell zu trainieren und Klassifizierungen für den Datensatz vorherzusagen, der als Testsatz dient. Bewerten Sie die Leistung des Modells, indem Sie die vorhergesagten Werte mit den tatsächlichen Werten des Testsatzes vergleichen. Sie können Metriken wie Genauigkeit, Präzision, Rückruf (Recall) oder f-1-Wert verwenden, um Ihr Modell zu bewerten. Sie können auch Ihre richtig positiven, richtig negativen, falsch positiven und falsch negativen Ergebnisse visualisieren, indem Sie eine Verwirrungsmatrix verwenden.

Hyperparameter-Abstimmung

Als Nächstes können Sie eine Kombination von Hyperparametern durchlaufen, um die Leistung Ihres Modells zu verbessern. Die Hyperparameteroptimierung ist der Optimierungsprozess für die Hyperparameter eines Algorithmus für maschinelles Lernen. Die besten Hyperparameter können mit Hilfe von Gittersuch- und Kreuzvalidierungsmethoden gefunden werden, bei denen ein Wörterbuch möglicher Hyperparameterkombinationen durchlaufen wird.

Ausgewählte Hyperparameter für gradientenverstärkte Trees in XGBoost

Nachfolgend finden Sie eine Erläuterung einiger der Hyperparameter, die Sie für gradientenverstärkte Trees in XGBoost optimieren können:

  • Die Lernrate (auch bekannt als „Schrittgröße“ oder „Schrumpfung“) ist der wichtigste Hyperparameter beim Gradient Boosting. In der XGBoost-Bibliothek ist sie als „eta“ bekannt und sollte eine Zahl zwischen 0 und 1 sein, wobei der Standardwert 0,36 ist. Die Lernrate bestimmt die Geschwindigkeit, mit der der Boosting-Algorithmus aus jeder Iteration lernt. Ein niedrigerer Wert von eta bedeutet langsameres Lernen, da er den Beitrag jedes Trees im Ensemble herunterskaliert und so dazu beiträgt, eine Überanpassung zu verhindern. Umgekehrt beschleunigt ein höherer Wert von eta das Lernen, kann aber zu einer Überanpassung führen, wenn nicht sorgfältig optimiert wird.
  • Der Hyperparameter n_estimators gibt die Anzahl der Trees an, die im Ensemble erstellt werden sollen. Jede Boosting-Runde fügt dem Ensemble einen neuen Tree hinzu, und das Modell lernt langsam, die Fehler der vorherigen Trees zu korrigieren. N_estimators steuert die Komplexität des Modells und beeinflusst sowohl die Trainingszeit als auch die Generalisierbarkeit des Modells auf unbekannte Daten. Eine Erhöhung des Werts von n_estimators erhöht in der Regel die Komplexität des Modells, da das Modell dadurch komplexere Muster in den Daten erfassen kann. Das Hinzufügen zu vieler Trees kann jedoch zu einer Überanpassung führen. Im Allgemeinen gilt: Mit zunehmendem n_estimators sollte die Lernrate sinken.
  • Gamma (auch bekannt als Lagrange-Multiplikator oder Parameter für die minimale Verlustreduzierung) steuert die minimale Verlustreduzierung, die erforderlich ist, um eine weitere Aufteilung an einem Blattknoten des Trees vorzunehmen. Ein niedrigerer Wert bedeutet, dass XGBoost früher stoppt, aber möglicherweise nicht die beste Lösung findet; ein höherer Wert bedeutet hingegen, dass XGBoost länger trainiert und möglicherweise bessere Lösungen findet, aber das Risiko einer Überanpassung steigt. Für das Gamma gibt es keine Obergrenze. Der Standardwert in XGBoost ist 0 und alles über 10 gilt als hoch.
  • Max_depth stellt dar, wie tief jeder Tree im Boosting-Prozess während des Trainings wachsen kann. Die Tiefe eines Trees bezieht sich auf die Anzahl der Ebenen oder Aufteilungen vom Wurzelknoten bis zu den Blattknoten. Eine Erhöhung dieses Wertes macht das Modell komplexer und erhöht die Wahrscheinlichkeit einer Überanpassung. In XGBoost beträgt die standardmäßige max_depth 6, was bedeutet, dass jeder Tree im Modell bis zu einer maximalen Tiefe von 6 Ebenen wachsen darf.
Implementieren von XGBoost in Python

Tauchen Sie in dieses Tutorial ein, das den XGBoost-Algorithmus verwendet, um eine Klassifizierungsaufgabe durchzuführen.

Vergleich von XGBoost mit anderen Boosting-Algorithmen

XGBoost ist einer von vielen verfügbaren Open-Source-Boosting-Algorithmen. In diesem Abschnitt vergleichen wir XGBoost mit drei anderen Boosting-Frameworks.

XGBoost vs. AdaBoost

AdaBoost ist ein früher Boosting-Algorithmus, der 1995 von Yoav Freund und Robert Schapire erfunden wurde7. Bei AdaBoost wird ein stärkerer Schwerpunkt auf falsche Vorhersagen gelegt, und zwar durch ein System von Gewichtungen, die einen stärkeren Einfluss auf die schwerer vorherzusagenden Datenpunkte haben. Zunächst wird jedem Datenpunkt im Datensatz eine bestimmte Gewichtung zugewiesen. Wenn die schwachen Learner ein Beispiel richtig vorhersagen, wird die Gewichtung des Beispiels reduziert. Aber wenn die Learner ein Beispiel falsch vorhersagen, erhöht sich die Gewichtung für diesen Datenpunkt.  Wenn neue Trees erstellt werden, basieren ihre Gewichtungen auf den Fehlklassifizierungen der vorherigen Learner Trees. Mit zunehmender Zahl der Learner werden die Beispiele, die leicht vorherzusagen sind, für zukünftige Learner weniger verwendet, während die Datenpunkte, die schwerer vorherzusagen sind, stärker gewichtet werden. Gradient Boosting und XGBoost sind aufgrund ihrer Genauigkeit und Geschwindigkeit tendenziell stärkere Alternativen zu AdaBoost.

XGBoost vs. CatBoost

CatBoost ist ein weiteres Gradient-Boosting-Framework. Es wurde 2017 von Yandex entwickelt, ist auf die Verarbeitung kategorialer Merkmale ohne Vorverarbeitung spezialisiert und funktioniert im Allgemeinen sofort gut, ohne dass umfangreiche Hyperparameter-Optimierungen durchgeführt werden müssen8. Wie XGBoost verfügt auch CatBoost über integrierte Unterstützung für den Umgang mit fehlenden Daten. CatBoost ist besonders nützlich für Datensätze mit vielen kategorialen Merkmalen. Nach Angaben von Yandex wird das Framework für Suche, Empfehlungssysteme, persönliche Assistenten, selbstfahrende Autos, Wettervorhersagen und andere Aufgaben verwendet.

XGBoost vs. LightGBM

LightGBM (Light Gradient Boosting Machine) ist der letzte Gradient-Boosting-Algorithmus, den wir betrachten werden. LightGBM wurde von Microsoft entwickelt und erstmals 2016 veröffentlicht9. Während die meisten Decision-Tree-Lernalgorithmen Trees in der Tiefe wachsen lassen, verwendet LightGBM eine Strategie, bei der der Tree blattweise wächst10. Wie XGBoost zeichnet sich LightGBM durch eine schnelle Modelltrainingsgeschwindigkeit und -genauigkeit aus und funktioniert gut bei großen Datensätzen.

Anwendungen von XGBoost

XGBoost- und gradientenverstärkte Decision Trees werden in einer Vielzahl von Data-Science-Anwendungen eingesetzt, darunter:

  • Lernen von Ranking-Erstellung: Einer der beliebtesten Anwendungsfälle für den XGBoost-Algorithmus ist der Einsatz als Ranker. Beim Informationsabruf besteht das Ziel des Erlernens der Ranking-Erstellung darin, den Benutzern Inhalte zu liefern, die nach Relevanz sortiert sind. In XGBoost basiert der XGBRanker auf dem LambdaMART-Algorithmus11.
  • Vorhersage der Klickrate von Werbung: Forscher verwendeten ein von XGBoost trainiertes Modell, um zu ermitteln, wie häufig Online-Werbeanzeigen in 10 Tagen an Clickthrough-Daten angeklickt wurden. Ziel der Studie war es, die Effektivität von Online-Anzeigen zu messen und festzustellen, welche Anzeigen gut funktionieren12.
  • Vorhersage von Filialverkäufen: XGBoost kann für die prädiktive Modellierung verwendet werden, wie in diesem Paper demonstriert wird, in den die Umsätze von 45 Walmart-Filialen mithilfe eines XGBoost-Modells prognostiziert wurden13.
  • Malware-Klassifizierung: Mit Hilfe eines XGBoost-Klassifikators konnten Ingenieure der Technischen Universität Košice Malware genau klassifizieren, wie in ihrem Paper14 gezeigt wird.
  • Kaggle-Wettbewerbe: XGBoost ist ein beliebter Gewinneralgorithmus bei Kaggle-Wettbewerben, wie auf der DMLC-Seite (Distributed (Deep) Machine Learning Community) mit einer Liste der jüngsten Gewinner von Kaggle-Wettbewerben zu sehen ist, die XGBoost für ihre Beiträge verwendet haben15
Zugehörige Ressourcen Was ist ein Decision Tree?

Erfahren Sie mehr über diesen nichtparametrischen überwachten Lernalgorithmus, der sowohl für Klassifizierungs- als auch für Regressionsaufgaben verwendet wird.

Was ist Boosting?

Erfahren Sie mehr über diese Ensemble-Lernmethode, bei der eine Gruppe von schwachen Learnern zu einem starken Learner kombiniert wird.

Implementieren Sie XGBoost in R

Tauchen Sie in dieses Tutorial ein, das den XGBoost-Algorithmus verwendet, um eine Klassifizierungsaufgabe durchzuführen.

Machen Sie den nächsten Schritt

Trainieren, validieren, optimieren und implementieren Sie generative KI, Foundation Models und maschinelle Lernfunktionen mit IBM watsonx.ai, einem Studio der nächsten Generation für AI Builder in Unternehmen. Erstellen Sie KI-Anwendungen mit einem Bruchteil der Zeit und Daten.

watsonx.ai erkunden Live-Demo buchen
Fußnoten

1 „Skalierbares und flexibles Gradient Boosting“, https://xgboost.ai/ (Link befindet sich außerhalb von ibm.com).

2 Tianqi Chen und Carlos Guestrin, „XGBoost: A Scalable Tree Boosting System“, University of Washington, 10. Juni 2016, https://arxiv.org/pdf/1603.02754 (Link befindet sich außerhalb von ibm.com).

3 „XGBoost Python Package Introduction, Data Interface“, https://xgboost.readthedocs.io/en/stable/python/python_intro.html#data-interface (Link befindet sich außerhalb von ibm.com).

4 „XGBoost API Reference, Core Data Structure“, https://xgboost.readthedocs.io/en/stable/python/python_api.html#module-xgboost.core (Link befindet sich außerhalb von ibm.com).

5 „XGBoost Parameters, Learning Task Parameters“, https://xgboost.readthedocs.io/en/stable/parameter.html#learning-task-parameters (Link befindet sich außerhalb von ibm.com).

6 „XGBoost Parameters for Tree Booster“, https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster (Link befindet sich außerhalb von ibm.com).

7 Yoav Freund und Robert E. Schapire, „A decision-theoretic generalization of on-line learning and an application to boosting“, Journal of Computer and System Sciences, Bd. 55, S. 119–139, August 1997.

8 „CatBoost is a high-performance open source library for gradient boosting on decision trees“, https://catboost.ai/ (Link befindet sich außerhalb von ibm.com).

9 Qi Meng, Guolin Ke, Taifeng Wang, Wei Chen, Qiwei Ye, Zhi-Ming Ma und Tie-Yan Liu, „A Communication-Efficient Parallel Algorithm for Decision Tree“, Peking University, Microsoft Research und Chinese Academy of Mathematics and Systems Science, 4. November 2016, https://arxiv.org/pdf/1611.01276 (Link befindet sich außerhalb von ibm.com).

10 „LightGBM Features, Leaf-wise (Best-first) Tree Growth“, https://lightgbm.readthedocs.io/en/latest/Features.html#leaf-wise-best-first-tree-growth (Link befindet sich außerhalb von ibm.com).

11 „XGBoost Tutorials, Learning to Rank Overview“, https://xgboost.readthedocs.io/en/latest/tutorials/learning_to_rank.html#overview (Link befindet sich außerhalb von ibm.com).

12 AlAli Moneera, AlQahtani Maram, AlJuried Azizah, Taghareed AlOnizan, Dalia Alboqaytah, Nida Aslam und Irfan Ullah Khan, „Click through Rate Effectiveness Prediction on Mobile Ads Using Extreme Gradient Boosting“, College of Computer Science and Information Technology, Imam Abdulrahman bin Faisal University, 12. September 2020, https://www.techscience.com/cmc/v66n2/40673/html (Link befindet sich außerhalb von ibm.com).

13 Yetunde Faith Akande, Joyce Idowu, Abhavya Gautam, Sanjay Misra, Oluwatobi Noah Akande und Ranjan Kumar Behera, „Application of Xgboost Algorithm for Sales Forecasting Using Walmart Dataset“, Landmark University, Ladoke Akintola University of Technology, Brandan University, Covenant University und XIM University, Juni 2022, https://www.researchgate.net/publication/361549465_Application_of_XGBoost_Algorithm_for_Sales_Forecasting_Using_Walmart_Dataset (Link befindet sich außerhalb von ibm.com).

14 Jakub Palša, Norbert Ádám, Ján Hurtuk, Eva Chovancová, Branislav Madoš, Martin Chovanec und Stanislav Kocan, „MLMD—A Malware-Detecting Antivirus Tool Based on the XGBoost Machine Learning Algorithm“, MDPI.com Journal of Applied Sciences, Bd. 12, 6672, 1. Juli 2022, https://www.mdpi.com/2076-3417/12/13/6672 (Link befindet sich außerhalb von ibm.com).

15 „Distributed (Deep) Machine Learning Community XGBoost Machine Learning Challenge Winning Solutions“, https://github.com/dmlc/xgboost/tree/master/demo#machine-learning-challenge-winning-solutions (Link befindet sich außerhalb von ibm.com).