# XGBoost

XGBoost (eXtreme Gradient Boosting) és una biblioteca de programari de codi obert que proporciona un marc de reforç de gradient regularitzador per a C++, Java, Python, R, Julia, Perl, i Scala. Funciona a Linux, Windows, i macOS. A partir de la descripció del projecte, pretén proporcionar una "Biblioteca d'augment del gradient escalable, portàtil i distribuït (GBM, GBRT, GBDT)". S'executa en una única màquina, així com en els marcs de processament distribuïts Apache Hadoop, Apache Spark, Apache Flink i Dask.
Ha guanyat molta popularitat i atenció recentment com a algorisme triat per molts equips guanyadors de competicions d'aprenentatge automàtic.
XGBoost va començar inicialment com un projecte de recerca de Tianqi Chen com a part del grup Distributed (Deep) Machine Learning Community (DMLC). Inicialment, va començar com una aplicació de terminal que es podia configurar mitjançant un fitxer de configuració libsvm. Es va fer molt conegut als cercles de la competició ML després del seu ús en la solució guanyadora del Higgs Machine Learning Challenge. Poc després, es van construir els paquets Python i R, i XGBoost ara té implementacions de paquets per a Java, Scala, Julia, Perl i altres llenguatges. Això va portar la biblioteca a més desenvolupadors i va contribuir a la seva popularitat entre la comunitat Kaggle, on s'ha utilitzat per a un gran nombre de competicions.
Aviat es va integrar amb una sèrie d'altres paquets, facilitant l'ús a les seves respectives comunitats. Ara s'ha integrat amb scikit-learn per a usuaris de Python i amb el paquet caret per a usuaris R. També es pot integrar en marcs de flux de dades com Apache Spark, Apache Hadoop i Apache Flink mitjançant el Rabit i XGBoost4J abstractes. XGBoost també està disponible a OpenCL per a FPGA. Tianqi Chen i Carlos Guestrin han publicat una implementació eficient i escalable de XGBoost.
Les característiques destacades de XGBoost que el fan diferent d'altres algorismes d'augment del gradient inclouen:
* Penalització intel·ligent dels arbres.
* Una contracció proporcional dels nodes de les fulles.
* Augment de Newton.
* Paràmetre d'aleatorització addicional.
* Implementació en sistemes únics distribuïts i càlcul fora del nucli.
* Selecció automàtica de funcions.
XGBoost funciona com a Newton-Raphson a l'espai funcional a diferència de l'augment del gradient que funciona com a descens del gradient a l'espai funcional, s'utilitza una aproximació de Taylor de segon ordre a la funció de pèrdua per fer la connexió amb el mètode de Newton Raphson.

## Referències

* ↑ «GitHub project webpage» (en anglès). GitHub, 01-06-2022.
* ↑ «Python Package Index PYPI: xgboost» (en anglès). [Consulta: 1r agost 2016].
* ↑ «CRAN package xgboost» (en anglès). [Consulta: 1r agost 2016].
* ↑ «Julia package listing xgboost» (en anglès). Arxivat de l'original el 2016-08-18. [Consulta: 1r agost 2016].
* ↑ «CPAN module AI::XGBoost» (en anglès). [Consulta: 9 febrer 2020].
* ↑ «Installing XGBoost for Anaconda in Windows» (en anglès). IBM. [Consulta: 1r agost 2016].
* ↑ «Installing XGBoost on Mac OSX» (en anglès). IBM. [Consulta: 1r agost 2016].
* ↑ «Dask Homepage» (en anglès).
* ↑ «Distributed XGBoost with Dask — xgboost 1.5.0-dev documentation» (en anglès). xgboost.readthedocs.io. [Consulta: 15 juliol 2021].
* ↑ «XGBoost - ML winning solutions (incomplete list)» (en anglès). GitHub. [Consulta: 1r agost 2016].
* ↑ «Story and Lessons behind the evolution of XGBoost» (en anglès). Arxivat de l'original el 2016-08-07. [Consulta: 1r agost 2016].
* ↑ «XGBoost - ML winning solutions (incomplete list)» (en anglès). GitHub. [Consulta: 1r agost 2016].
* ↑ «Rabit - Reliable Allreduce and Broadcast Interface» (en anglès). GitHub. [Consulta: 1r agost 2016].
* ↑ «XGBoost4J» (en anglès). [Consulta: 1r agost 2016].
* ↑ «XGBoost on FPGAs» (en anglès). GitHub. [Consulta: 1r agost 2019].
* ↑ "Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, San Francisco, CA, USA, August 13-17, 2016".
* ↑ Gandhi, Rohith. «Gradient Boosting and XGBoost» (en anglès). Medium, 24-05-2019. [Consulta: 4 gener 2020].
* ↑ «Boosting algorithm: XGBoost» (en anglès). Towards Data Science, 14-05-2017. Arxivat de l'original el 2022-04-06. [Consulta: 4 gener 2020].
* ↑ «Tree Boosting With XGBoost – Why Does XGBoost Win "Every" Machine Learning Competition?» (en anglès). Synced, 22-10-2017. [Consulta: 4 gener 2020].