Was ist XGBoost?

Was ist XGBoost?

XGBoost (eXtreme Gradient Boosting) ist eine Open-Source-Bibliothek für maschinelles Lernen, die gradientenverstärkte Decision Trees verwendet, einen überwachten Lernalgorithmus, 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 Julia 1 verfügbar.1

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.

Boosting – sequenzielles Ensemble-Lernen

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 werdenVerlustfunktionen 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.

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.

  • Integrierte 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.

Die neuesten KI-Trends, präsentiert von Experten

Erhalten Sie kuratierte Einblicke in die wichtigsten – und faszinierendsten – KI-Neuheiten. Abonnieren Sie unseren wöchentlichen Think-Newsletter. Weitere Informationen in der IBM Datenschutzerklärung.

Vielen Dank! Sie haben ein Abonnement abgeschlossen.

Ihr Abonnement wird auf Englisch geliefert. In jedem Newsletter finden Sie einen Abmeldelink. Hier können Sie Ihre Abonnements verwalten oder sich abmelden. Weitere Informationen finden Sie in unserer IBM Datenschutzerklärung.

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-Tuning

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 als „Schrittgröße“ oder „Schrumpfung“ bekannt) 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.
Mixture of Experts | 12. Dezember, Folge 85

KI entschlüsseln: Wöchentlicher Nachrichtenüberblick

Schließen Sie sich unserer erstklassigen Expertenrunde aus Ingenieuren, Forschern, Produktführern und anderen an, die sich durch das KI-Rauschen kämpfen, um Ihnen die neuesten KI-Nachrichten und Erkenntnisse zu liefern.

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: Mithilfe 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
Weitere Lösungen
IBM watsonx.ai

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.

Entdecken sie watsonx.ai
Lösungen im Bereich künstlicher Intelligenz

Setzen Sie KI in Ihrem Unternehmen ein – mit branchenführendem Fachwissen im Bereich KI und dem Lösungsportfolio von IBM an Ihrer Seite.

Erkunden Sie KI-Lösungen
KI-Beratung und -Services

Erfinden Sie kritische Workflows und Abläufe neu, indem Sie KI einsetzen, um Erfahrungen, Entscheidungsfindung in Echtzeit und den geschäftlichen Nutzen zu maximieren.

KI-Services entdecken
Machen Sie den nächsten Schritt

Profitieren Sie von einem einheitlichen Zugriff auf Funktionen, die den gesamten Lebenszyklus der KI-Entwicklung abdecken. Erstellen Sie leistungsstarke KI-Lösungen mit benutzerfreundlichen Oberflächen, Workflows und Zugriff auf branchenübliche APIs und SDKs.

watsonx.ai erkunden Live-Demo buchen