XGBoost

De Wikipedia, la enciclopedia libre
XGBoost
Información general
Tipo de programa biblioteca de software
Desarrollador Colaboradores de XGBoost
Lanzamiento inicial 27 de marzo del 2014
Licencia Apache License 2.0
Información técnica
Programado en
Versiones
Última versión estable 2.0.3 / 19 de diciembre del 2023 ()
Enlaces

XGBoost [1]​ (eXtreme Gradient Boosting) es una biblioteca de software de código abierto que proporciona un marco de regularización de potenciación de gradiente para C++, Java, Python,[2]R,[3]Julia,[4]Perl,[5]​ y Scala. . Funciona en Linux, Microsoft Windows,[6]​ y macOS.[7]​ El propósito del proyecto es ofrecer una biblioteca distribuida, portátil y escalable para potenciación de gradiente. Esta biblioteca puede operar tanto en una única máquina como en entornos de procesamiento distribuido Apache Hadoop, Apache Spark, Apache Flink y Dask.[8][9]

A mediados de la década de 2010, XGBoost ganó mucha popularidad y atención al ser el algoritmo elegido por una gran cantidad de equipos ganadores de competiciones de aprendizaje automático.[10]

Historia[editar]

XGBoost comenzó inicialmente como un proyecto de investigación de Tianqi Chen [11]​ como parte del grupo Distributed (Deep) Machine Learning Community (DMLC). Se hizo muy conocido en los círculos de competencia de ML después de su uso en la solución ganadora del Higgs Machine Learning Challenge . Poco después, se crearon los paquetes Python y R, y XGBoost ahora tiene implementaciones de paquetes para Java, Scala, Julia, Perl y otros lenguajes. Esto permitió un mayor alcance de la biblioteca, atrayendo a más usuarios y contribuyendo a su creciente popularidad en la comunidad de Kaggle, donde ha sido empleada en numerosas competiciones.[10]

Rápidamente se integró con otros paquetes, lo que facilitó su uso en sus respectivas comunidades. Ahora se ha integrado con scikit-learn para usuarios de Python y con el paquete caret para usuarios de R. También se puede integrar en marcos de Data Flow como Apache Spark, Apache Hadoop y Apache Flink utilizando Rabit [12]​ y XGBoost4J resumidos.[13]​ XGBoost también está disponible en OpenCL para FPGA.[14]

Aunque el modelo XGBoost suele alcanzar una precisión superior a la de un solo árbol de decisión, esto se logra a expensas de la capacidad de interpretación intrínseca de los árboles individuales. Mientras que seguir el camino de un árbol de decisión para comprender su decisión es relativamente sencillo y autoexplicativo, hacer lo mismo para cientos o miles de árboles resulta considerablemente más complejo.

Características[editar]

Características destacadas de XGBoost que lo diferencian de otros algoritmos de potenciación de gradiente incluyen:[15][16][17]

  • Penalización inteligente de árboles
  • Reducción proporcional de nodos hoja
  • Potenciación de Newton
  • Parámetro adicional de aleatorización
  • Implementación en sistemas individuales y distribuidos, y cálculo fuera de línea
  • Selección automática de características
  • Esbozo ponderado de cuantiles justificado teóricamente para cálculos eficientes
  • Impulso de estructura de árbol paralelo con esparsidad
  • Estructura de bloques caché eficiente para el entrenamiento de árboles de decisión

El algoritmo[editar]

XGBoost funciona mediante una aproximación de Taylor de segundo orden en la función de pérdida para establecer la conexión con el método de Newton Raphson.

Un algoritmo XGBoost genérico no regularizado es:

Entradas: conjunto de entrenamiento , una función de pérdida diferenciable , un número de modelos de aprendizaje débiles y una tasa de aprendizaje .

Algoritmo:

  1. Inicializar modelo con un valor constante:
  2. Para m = 1 hasta M:
    1. Calcular los 'gradientes' y los 'hessianos':
    2. Ajustar un modelo base (o un modelo de aprendizaje débil, como un árbol) utilizando el conjunto de entrenamiento resolviendo el problema de optimización a continuación:
    3. Actualizar el modelo:
  3. Salida

Aplicaciones de XGBoost[editar]

XGBoost es apto para el manejo de relaciones no lineales y su poder predictivo es bueno. Esto lo vuelve un algoritmo eficaz para aplicar a los datos del mercado financiero.[18]

Referencias[editar]

  1. «GitHub project webpage». GitHub. June 2022. Archivado desde el original el 1 de abril de 2021. Consultado el 5 de abril de 2016. 
  2. «Python Package Index PYPI: xgboost». Archivado desde el original el 23 de agosto de 2017. Consultado el 1 de agosto de 2016. 
  3. «CRAN package xgboost». Archivado desde el original el 26 de octubre de 2018. Consultado el 1 de agosto de 2016. 
  4. «Julia package listing xgboost». Archivado desde el original el 18 de agosto de 2016. Consultado el 1 de agosto de 2016. 
  5. «CPAN module AI::XGBoost». Archivado desde el original el 28 de marzo de 2020. Consultado el 9 de febrero de 2020. 
  6. «Installing XGBoost for Anaconda in Windows». IBM. Archivado desde el original el 8 de mayo de 2018. Consultado el 1 de agosto de 2016. 
  7. «Installing XGBoost on Mac OSX». IBM. Archivado desde el original el 8 de mayo de 2018. Consultado el 1 de agosto de 2016. 
  8. «Dask Homepage». Archivado desde el original el 14 de septiembre de 2022. Consultado el 15 de julio de 2021. 
  9. «Distributed XGBoost with Dask — xgboost 1.5.0-dev documentation». xgboost.readthedocs.io. Archivado desde el original el 4 de junio de 2022. Consultado el 15 de julio de 2021. 
  10. a b «XGBoost - ML winning solutions (incomplete list)». GitHub. Archivado desde el original el 24 de agosto de 2017. Consultado el 1 de agosto de 2016. 
  11. «Story and Lessons behind the evolution of XGBoost». Archivado desde el original el 7 de agosto de 2016. Consultado el 1 de agosto de 2016. 
  12. «Rabit - Reliable Allreduce and Broadcast Interface». GitHub. Archivado desde el original el 11 de junio de 2018. Consultado el 1 de agosto de 2016. 
  13. «XGBoost4J». Archivado desde el original el 8 de mayo de 2018. Consultado el 1 de agosto de 2016. 
  14. «XGBoost on FPGAs». GitHub. Archivado desde el original el 13 de septiembre de 2020. Consultado el 1 de agosto de 2019. 
  15. Gandhi, Rohith (24 de mayo de 2019). «Gradient Boosting and XGBoost». Medium (en inglés). Archivado desde el original el 28 de marzo de 2020. Consultado el 4 de enero de 2020. 
  16. «Boosting algorithm: XGBoost». Towards Data Science (en inglés). 14 de mayo de 2017. Archivado desde el original el 6 de abril de 2022. Consultado el 4 de enero de 2020. 
  17. «Tree Boosting With XGBoost – Why Does XGBoost Win "Every" Machine Learning Competition?». Synced (en inglés estadounidense). 22 de octubre de 2017. Archivado desde el original el 28 de marzo de 2020. Consultado el 4 de enero de 2020. 
  18. «Introduction to XGBoost in Python». Quantitative Finance & Algo Trading Blog by QuantInsti (en inglés). 4 de diciembre de 2023. Consultado el 6 de mayo de 2024.