XGBoost [ 2 ] (eXtreme Gradient Boosting) es una biblioteca de software de código abierto que proporciona un marco de trabajo de aumento de gradiente regularizado para C++ , Java , Python , [ 3 ] R , [ 4 ] Julia , [ 5 ] Perl , [ 6 ] y Scala . Funciona en Linux , Microsoft Windows , [ 7 ] y macOS . [ 8 ] Según la descripción del proyecto, su objetivo es proporcionar una "Biblioteca de aumento de gradiente escalable, portátil y distribuida (GBM, GBRT, GBDT)". Se ejecuta en una sola máquina, así como en los marcos de procesamiento distribuido Apache Hadoop , Apache Spark , Apache Flink y Dask . [ 9 ] [ 10 ]
XGBoost ganó mucha popularidad y atención a mediados de la década de 2010 como el algoritmo preferido por muchos equipos ganadores de competiciones de aprendizaje automático . [ 11 ]
Historia
XGBoost comenzó inicialmente como un proyecto de investigación de Tianqi Chen [ 12 ] como parte del grupo Distributed (Deep) Machine Learning Community (DMLC) de la Universidad de Washington . Inicialmente, se desarrolló como una aplicación de terminal que se podía configurar mediante un archivo de configuración de libsvm . Se hizo muy conocido en los círculos de competición de aprendizaje automático tras su uso en la solución ganadora del Higgs Machine Learning Challenge . Poco después, se crearon los paquetes para Python y R, y ahora XGBoost cuenta con implementaciones de paquetes para Java, Scala , Julia, Perl y otros lenguajes. Esto permitió que la biblioteca llegara a más desarrolladores y contribuyó a su popularidad en la comunidad de Kaggle , donde se ha utilizado en un gran número de competiciones. [ 11 ]
Pronto se integró con varios 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 trabajo de flujo de datos como Apache Spark , Apache Hadoop y Apache Flink utilizando la abstracción Rabit [ 13 ] y XGBoost4J. [ 14 ] XGBoost también está disponible en OpenCL para FPGAs . [ 15 ] Tianqi Chen y Carlos Guestrin han publicado una implementación eficiente y escalable de XGBoost . [ 16 ]
Si bien el modelo XGBoost suele lograr mayor precisión que un solo árbol de decisión, sacrifica la interpretabilidad intrínseca de estos. Por ejemplo, seguir la ruta que sigue un árbol de decisión para tomar su decisión es trivial y autoexplicativo, pero seguir las rutas de cientos o miles de árboles es mucho más difícil.
Características
Las características más destacadas de XGBoost que lo diferencian de otros algoritmos de potenciación de gradiente incluyen: [ 17 ] [ 18 ] [ 16 ]
- Penalización inteligente de los árboles
- Una reducción proporcional de los nudos foliares
- Impulso de Newton
- Parámetro de aleatorización adicional
- Implementación en sistemas individuales, distribuidos y computación fuera de la memoria principal.
- Selección automática de funciones
- Esquema de cuantiles ponderados con justificación teórica para un cálculo eficiente.
- Potenciación de la estructura de árbol paralela con escasez
- Estructura de bloques almacenable en caché eficiente para el entrenamiento de árboles de decisión
El algoritmo
XGBoost funciona como el método de Newton-Raphson en el espacio de funciones, a diferencia del gradient boosting , que funciona como el descenso de gradiente en el espacio de funciones; en este caso, se utiliza 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:
Entrada: conjunto de entrenamientouna función de pérdida diferenciable, varios estudiantes con dificultadesy una tasa de aprendizaje.
Algoritmo:
- Inicialice el modelo con un valor constante:
- Tenga en cuenta que esta es la inicialización del modelo y, por lo tanto, establecemos un valor constante para todas las entradas. Así, incluso si en iteraciones posteriores utilizamos optimización para encontrar nuevas funciones, en el paso 0 debemos encontrar el valor, igual para todas las entradas, que minimice las funciones de pérdida.
- Para m = 1 a M :
- Calcula los 'gradientes' y las 'matriz hessiana':
- Ajusta un modelo base (o un modelo débil, por ejemplo, un árbol) utilizando el conjunto de entrenamiento.Resolviendo el siguiente problema de optimización:
- Actualizar el modelo:
- Producción
Parámetros
XGBoost tiene parámetros que se pueden especificar para afectar su funcionamiento y rendimiento. Algunos parámetros incluyen: [ 19 ]
- La tasa de aprendizaje (también conocida como "tamaño de paso" o "reducción") es un número entre 0 y 1 (el valor predeterminado es 0,3) que determina la velocidad a la que el algoritmo aprende en cada iteración.
- n_estimators establece el número de árboles que se construirán en el conjunto, donde un mayor número de árboles generalmente aumenta la complejidad del modelo, pero puede conducir a un sobreajuste con demasiados árboles.
- Gamma (también conocido como multiplicador de Lagrange o parámetro de reducción de pérdida mínima) controla la cantidad mínima de reducción de pérdida necesaria para realizar una división adicional en un nodo hoja del árbol. El valor predeterminado en XGBoost es 0.
- max_depth representa la profundidad a la que puede crecer cada árbol en el proceso de boosting durante el entrenamiento, donde el valor predeterminado es 6.
Premios
- Premio John Chambers (2016) [ 20 ]
- Premio a la Física de Altas Energías combinada con el Aprendizaje Automático (HEP meets ML) (2016) [ 21 ]
Véase también
Referencias
- ↑ "Versión 3.0.0 estable" . 15 de marzo de 2025. Consultado el 4 de mayo de 2025 .
- ↑ "Página web del proyecto de GitHub" . GitHub . Junio de 2022. Archivado del original el 1 de abril de 2021. Consultado el 5 de abril de 2016 .
- ↑ "Python Package Index PYPI: xgboost" . Archivado del original el 23 de agosto de 2017. Consultado el 1 de agosto de 2016 .
- ↑ "Paquete CRAN xgboost" . Archivado del original el 26-10-2018 . Consultado el 01-08-2016 .
- ↑ "Listado de paquetes Julia xgboost" . Archivado del original el 18 de agosto de 2016. Consultado el 1 de agosto de 2016 .
- ↑ "Módulo CPAN AI::XGBoost" . Archivado del original el 28 de marzo de 2020. Consultado el 9 de febrero de 2020 .
- ↑ "Instalación de XGBoost para Anaconda en Windows" . IBM . Archivado del original el 8 de mayo de 2018. Consultado el 1 de agosto de 2016 .
- ↑ "Instalación de XGBoost en Mac OSX" . IBM . Archivado del original el 8 de mayo de 2018. Consultado el 1 de agosto de 2016 .
- ↑ "Página principal de Dask" . Archivado del original el 14 de septiembre de 2022. Consultado el 15 de julio de 2021 .
- ↑ "XGBoost distribuido con Dask — documentación de xgboost 1.5.0-dev" . xgboost.readthedocs.io . Archivado del original el 4 de junio de 2022. Consultado el 15 de julio de 2021 .
- 1 2 "XGBoost - Soluciones ganadoras de ML (lista incompleta)" . GitHub . Archivado del original el 24-08-2017 . Recuperado el 01-08-2016 .
- ↑ "Historia y lecciones detrás de la evolución de XGBoost" . Archivado del original el 7 de agosto de 2016. Consultado el 1 de agosto de 2016 .
- ↑ "Rabit - Interfaz confiable para Allreduce y Broadcast" . GitHub . Archivado del original el 11 de junio de 2018. Consultado el 1 de agosto de 2016 .
- ↑ "XGBoost4J" . Archivado del original el 8 de mayo de 2018. Consultado el 1 de agosto de 2016 .
- ↑ "XGBoost en FPGAs" . GitHub . Archivado del original el 13 de septiembre de 2020. Consultado el 1 de agosto de 2019 .
- 1 2 Chen, Tianqi; Guestrin, Carlos (2016). "XGBoost: Un sistema escalable de potenciación de árboles". En Krishnapuram, Balaji; Shah, Mohak; Smola, Alexander J.; Aggarwal, Charu C.; Shen, Dou; Rastogi, Rajeev (eds.). Actas de la 22.ª Conferencia Internacional ACM SIGKDD sobre Descubrimiento de Conocimiento y Minería de Datos, San Francisco, CA, EE. UU., 13-17 de agosto de 2016. ACM. págs. 785–794 . arXiv : 1603.02754 . doi : 10.1145/2939672.2939785 . ISBN 9781450342322. S2CID 4650265 .
- ↑ Gandhi, Rohith (24 de mayo de 2019). "Gradient Boosting y XGBoost" . Medium . Archivado del original el 28 de marzo de 2020. Consultado el 4 de enero de 2020 .
- ↑ "Tree Boosting With XGBoost – ¿Por qué XGBoost gana "todas" las competiciones de aprendizaje automático?" . Sincronizado . 22/10/2017. Archivado del original el 28/03/2020 . Consultado el 04/01/2020 .
- ↑ "¿Qué es XGBoost? | IBM" . www.ibm.com . 9 de mayo de 2024. Consultado el 10 de marzo de 2026 .
- ↑ "Ganadores anteriores del premio John Chambers" . Archivado del original el 31/07/2017 . Consultado el 01/08/2016 .
- ↑ "HEP se encuentra con el premio ML" . Archivado del original el 8 de mayo de 2018. Consultado el 1 de agosto de 2016 .
- Software de minería de datos y aprendizaje automático
- Software gratuito para análisis de datos
- Software que utiliza la licencia Apache.
- Productos de big data
- Software libre programado en C++
- Software de 2014