Startseite
Themen
XGboost
Veröffentlicht: 9. Mai 2024
Mitwirkende: Eda Kavlakoglu, Erika Russi
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 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 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.
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.
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:
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.
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.
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.
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.
Nachfolgend finden Sie eine Erläuterung einiger der Hyperparameter, die Sie für gradientenverstärkte Trees in XGBoost optimieren können:
Tauchen Sie in dieses Tutorial ein, das den XGBoost-Algorithmus verwendet, um eine Klassifizierungsaufgabe durchzuführen.
XGBoost ist einer von vielen verfügbaren Open-Source-Boosting-Algorithmen. In diesem Abschnitt vergleichen wir XGBoost mit drei anderen Boosting-Frameworks.
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.
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.
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.
XGBoost- und gradientenverstärkte Decision Trees werden in einer Vielzahl von Data-Science-Anwendungen eingesetzt, darunter:
Erfahren Sie mehr über diesen nichtparametrischen überwachten Lernalgorithmus, der sowohl für Klassifizierungs- als auch für Regressionsaufgaben verwendet wird.
Erfahren Sie mehr über diese Ensemble-Lernmethode, bei der eine Gruppe von schwachen Learnern zu einem starken Learner kombiniert wird.
Tauchen Sie in dieses Tutorial ein, das den XGBoost-Algorithmus verwendet, um eine Klassifizierungsaufgabe durchzuführen.
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).