XGBoost[2] (eXtreme Gradient Boosting) ist eine Open-Source-Softwarebibliothek, die ein Gradient-Boosting-Verfahren für die Programmiersprachen C++, Java, Python,[3] R,[4] Julia,[5] Perl[6] und Scala zur Verfügung stellt. Es funktioniert mit den Betriebssystemen Linux, Windows[7] und macOS[8] sowohl auf einer einzelnen Maschine als auch auf verteilten Verarbeitungsframeworks wie Apache Hadoop, Apache Spark, Apache Flink und Dask.[9][10] Das Framework stellt eine „skalierbare, portierbare und verteilte Gradient Boosting (GBM, GBRT oder GBDT) Bibliothek“ bereit.

XGBoost

Basisdaten

Entwickler XGBoost Community
Erscheinungsjahr 2014
Aktuelle Version 2.1.3[1]
(26. November 2024)
Betriebssystem Linux, macOS, Windows
Programmier­sprache C++
Kategorie Maschinelles Lernen
Lizenz Apache License 2.0
https://xgboost.ai/

XGBoost hat im Jahr 2016 viel Popularität und Aufmerksamkeit erlangt, da es der Algorithmus der Wahl für viele Siegerteams von Wettbewerben für maschinelles Lernen ist.[11]

Geschichte

Bearbeiten

XGBoost wurde ursprünglich als Forschungsprojekt von Tianqi Chen im Rahmen der Distributed-(Deep) Machine-Learning-Common (DMLC)-Gruppe gestartet. Anfänglich war es eine Terminalanwendung, die mithilfe einer libsvm-Konfigurationsdatei konfiguriert werden konnte.[12] Es wurde in den Kreisen der ML-Wettbewerbe bekannt, nachdem es in der Siegerlösung der Higgs Machine Learning Challenge verwendet worden war.[13] Bald darauf wurden die Python- und R-Pakete erstellt, und XGBoost hat nun Paketimplementierungen für Java, Scala, Julia, Perl und andere Sprachen. Dies machte die Bibliothek für mehr Entwickler zugänglich und trug zu ihrer Popularität in der Kaggle-Gemeinschaft bei, wo sie bisher für eine große Anzahl von Wettbewerben verwendet wurde.[11]

Es wurde bald in eine Reihe anderer Pakete integriert, um die Nutzung in den jeweiligen Communities zu erleichtern. Für Python-Nutzer wurde es nun in scikit-learn und für R-Nutzer in das caret-Paket integriert.[14] Es kann auch in Datenfluss-Frameworks wie Apache Spark, Apache Hadoop und Apache Flink unter Verwendung der abstrahierten Rabit[15] und XGBoost4J integriert werden.[16] XGBoost ist auch auf OpenCL für FPGAs verfügbar.[17] Eine effiziente, skalierbare Implementierung von XGBoost wurde von Tianqi Chen und Carlos Guestrin veröffentlicht.[18]

Mit dem XGBoost-Modell wird zwar oft eine höhere Genauigkeit als mit einem einzelnen Entscheidungsbaum erreicht, aber die eigentliche Interpretierbarkeit von Entscheidungsbäumen geht dabei verloren. So ist es beispielsweise trivial, den Weg eines Entscheidungsbaums zu verfolgen, aber es ist viel schwieriger, die Wege von Hunderten oder Tausenden von Bäumen zu verfolgen. Um sowohl Leistung als auch Interpretierbarkeit zu erreichen, ermöglichen einige Modellkomprimierungstechniken die Umwandlung eines XGBoost in einen einzigen „wiedergeborenen“ Entscheidungsbaum, der dieselbe Entscheidungsfunktion approximiert.[19]

Merkmale

Bearbeiten

Zu den wichtigsten Merkmalen von XGBoost, die es von anderen Gradient-Boosting-Algorithmen unterscheiden, gehören:[20][21][22]

  • clevere „Bestrafung“ von Bäumen
  • proportionale Schrumpfung der Blattknoten
  • Newton-Boosting
  • zusätzlicher Randomisierungsparameter
  • Implementierung auf einzelnen, verteilten Systemen und Out-of-Core-Berechnungen
  • automatische Auswahl von Merkmalen

Algorithmus

Bearbeiten

XGBoost arbeitet als Newton-Raphson-Verfahren im Funktionsraum, im Gegensatz zum Gradient Boosting, das als Gradientenabstieg im Funktionsraum arbeitet. In der Verlustfunktion wird eine Taylor-Approximation zweiter Ordnung verwendet, um die Verbindung zum Newton-Raphson-Verfahren herzustellen.

Ein allgemeiner unregulierter XGBoost-Algorithmus ist:


Eingabe: Trainingsmenge  , eine differenzierbare Verlustfunktion  , eine Anzahl von schwachen Lernern   und eine Lernrate  .

Algorithmus:

  1. Modell mit einem konstanten Wert initialisieren:
     
  2. Für m = 1 zu M:
    1. Berechnung des Gradienten (1. Ableitung) und der Hesse-Matrix (2. Ableitung):
       
       
    2. Anpassen eines Basis-Learners (oder schwachen Lerners, z. B. Baum) unter Verwendung der Trainingsmenge   durch Lösen des nachstehenden Optimierungsproblems:
       
       
    3. Modell updaten:
       
  3. Ergebnis  

Auszeichnungen

Bearbeiten
  • John Chambers Award (2016)[23]
  • HEP meets ML Award (2016)[24]

Einzelnachweise

Bearbeiten
  1. Release 2.1.3. 26. November 2024 (abgerufen am 29. November 2024).
  2. GitHub project webpage. In: GitHub. Juni 2022;.
  3. Python Package Index PYPI: xgboost. Abgerufen am 1. August 2016.
  4. CRAN package xgboost. Abgerufen am 1. August 2016.
  5. Julia package listing xgboost. Archiviert vom Original am 18. August 2016; abgerufen am 1. August 2016.  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/pkg.julialang.org
  6. CPAN module AI::XGBoost. Abgerufen am 9. Februar 2020.
  7. Installing XGBoost for Anaconda in Windows. In: IBM. Abgerufen am 1. August 2016.
  8. Installing XGBoost on Mac OSX. In: IBM. Abgerufen am 1. August 2016.
  9. Dask Homepage.
  10. Distributed XGBoost with Dask — xgboost 1.5.0-dev documentation. In: xgboost.readthedocs.io. Abgerufen am 15. Juli 2021.
  11. a b XGBoost - ML winning solutions (incomplete list). In: GitHub. Abgerufen am 1. August 2016.
  12. Story and Lessons Behind the Evolution of XGBoost. nttrungmt-wiki, abgerufen am 10. Juni 2022 (englisch).
  13. Higgs Boson Machine Learning Challenge, auf kaggle.com
  14. A Short Introduction to the caret Package, auf cran.rstudio.com/
  15. Rabit - Reliable Allreduce and Broadcast Interface. In: GitHub. Abgerufen am 1. August 2016.
  16. XGBoost4J. Abgerufen am 1. August 2016.
  17. XGBoost on FPGAs. In: GitHub. Abgerufen am 1. August 2019.
  18. Tianqi Chen, Carlos Guestrin: XGBoost: A Scalable Tree Boosting System. 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. Hrsg.: Balaji Krishnapuram, Mohak Shah, Alexander J. Smola, Charu C. Aggarwal, Dou Shen, Rajeev Rastogi. Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, San Francisco, CA, USA, August 13-17, 2016. ACM, 2016, S. 785–794, doi:10.1145/2939672.2939785 (englisch).
  19. Omer Sagi, Lior Rokach: Approximating XGBoost with an interpretable decision tree. In: Information Sciences. 572. Jahrgang, Nr. 2021, 2021, S. 522–542, doi:10.1016/j.ins.2021.05.055.
  20. Rohith Gandhi: Gradient Boosting and XGBoost. In: Medium. 24. Mai 2019, abgerufen am 4. Januar 2020 (englisch).
  21. Boosting algorithm: XGBoost. In: Towards Data Science. 14. Mai 2017, archiviert vom Original am 6. April 2022; abgerufen am 4. Januar 2020 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/towardsdatascience.com
  22. Tree Boosting With XGBoost – Why Does XGBoost Win "Every" Machine Learning Competition? In: Synced. 22. Oktober 2017, abgerufen am 4. Januar 2020 (amerikanisches Englisch).
  23. John Chambers Award Previous Winners. Abgerufen am 10. Juni 2022.
  24. HEP meets ML Award. Abgerufen am 10. Juni 2022.