¿Qué es XGBoost?

9 de mayo de 2024

Autores

Eda Kavlakoglu

Program Manager

Erika Russi

Data Scientist, IBM

¿Qué es XGBoost?

XGBoost (eXtreme Gradient Boosting) es una biblioteca de machine learning distribuida y de código abierto que utiliza árboles de decisión potenciados por gradiente, un algoritmo de boosting del aprendizaje supervisado que hace uso del descenso por gradiente. Es conocido por su velocidad, eficacia y capacidad para escalar bien con grandes conjuntos de datos.

Desarrollado por Tianqi Chen, de la Universidad de Washington, XGBoost es una aplicación avanzada de la potenciación del gradiente con el mismo marco general; es decir, combina árboles de aprendizaje débiles en fuertes mediante la suma de residuos. La biblioteca está disponible para C++, Python, R, Java, Scala y Julia1.

Árboles de decisión vs. boosting

Los árboles de decisión se utilizan para tareas de clasificación o regresión en el machine learning. Utilizan una estructura de árbol jerárquico en la que un nodo interno representa una característica, la rama representa una regla de decisión­ y cada nodo hoja representa el resultado del conjunto de datos.

Dado que los árboles de decisión tienden al sobreajuste, a menudo se pueden utilizar métodos conjuntos, como el boosting, para crear modelos más robustos. El boosting combina varios árboles débiles individuales, es decir, modelos que funcionan ligeramente mejor que el azar, para formar un aprendiz fuerte. Cada aprendiz débil se entrena secuencialmente para corregir los errores cometidos por los modelos anteriores. Después de cientos de iteraciones, los aprendices débiles se convierten en fuertes.

Los bosques aleatorios y los algoritmos de boosting son dos técnicas populares de aprendizaje por conjuntos que utilizan árboles de aprendices individuales para mejorar el rendimiento predictivo. Los bosques aleatorios se basan en el concepto de bagging (agregación de bootstrap) y entrenan cada árbol de forma independiente para combinar sus predicciones, mientras que los algoritmos de boosting utilizan un enfoque aditivo en el que los aprendices débiles se entrenan secuencialmente para corregir los errores de los modelos anteriores.

Árboles de decisión potenciados por gradientes 

Los árboles de decisión potenciados por gradientes son un tipo de algoritmo de boosting que utiliza el descenso del gradiente. Al igual que otras metodologías de boosting, la potenciación del gradiente comienza con un aprendiz débil para hacer predicciones. El primer árbol de decisión en la potenciación del gradiente se denomina aprendiz base. A continuación, se crean nuevos árboles de forma aditiva a partir de los errores del aprendiz base. Entonces, el algoritmo calcula los residuos de las predicciones de cada árbol para determinar lo alejadas que estaban las predicciones del modelo de la realidad. Los residuos son la diferencia entre los valores previstos y reales del modelo. A continuación, los residuos se agregan para puntuar el modelo con una función de pérdida.

En el machine learning, las funciones de pérdida se utilizan para medir el rendimiento de un modelo. El gradiente en los árboles de decisión potenciados por gradiente se refiere al descenso del gradiente. El descenso de gradiente se utiliza para minimizar la pérdida (es decir, para mejorar el rendimiento del modelo) cuando entrenamos nuevos modelos. El descenso de gradiente es un algoritmo de optimización popular que se utiliza para minimizar la función de pérdida en problemas de machine learning. Algunos ejemplos de funciones de pérdida son el error cuadrático medio o el error absoluto medio para problemas de regresión, la pérdida de entropía cruzada para problemas de clasificación o funciones de pérdida personalizadas que pueden desarrollarse para un caso de uso y un conjunto de datos específicos.

Características de XGBoost

A continuación se analizan algunas de las características de XGBoost en Python que lo hacen destacar en comparación con el paquete normal de potenciación del gradiente en scikit-learn2:

  • Computación paralela y distribuida: la biblioteca almacena los datos en unidades de memoria llamadas bloques. Los bloques separados pueden distribuirse entre máquinas o almacenarse en una memoria externa mediante computación fuera del núcleo. XGBoost también permite casos de uso más avanzados, como el entrenamiento distribuido en un clúster de ordenadores para acelerar el cálculo. XGBoost también se puede implementar en su modo distribuido utilizando herramientas como Apache Spark, Dask o Kubernetes.
  • Algoritmo de precarga con reconocimiento de caché: XGBoost utiliza un algoritmo de precarga con reconocimiento de caché que ayuda a reducir el tiempo de ejecución para conjuntos de datos grandes. La biblioteca puede ejecutarse diez veces más rápido que otros marcos existentes en una sola máquina. Gracias a su impresionante velocidad, XGBoost puede procesar miles de millones de ejemplos utilizando menos recursos, lo que lo convierte en un sistema de boosting de árboles escalable.
  • Regularización integrada: XGBoost incluye la regularización como parte del objetivo de aprendizaje, a diferencia de la potenciación del gradiente regular. Los datos también pueden regularizarse mediante el ajuste de hiperparámetros. El uso de la regularización incorporada de XGBoost también permite a la biblioteca ofrecer mejores resultados que el paquete normal de potenciación del gradiente de scikit-learn.
  • Gestión de valores omitidos: XGBoost utiliza un algoritmo consciente de la dispersión para datos dispersos. Cuando falta un valor en el conjunto de datos, el punto de datos se clasifica en la dirección por defecto y el algoritmo aprende la mejor dirección para tratar los valores que faltan.
Diseño 3D de bolas rodando por un circuito

Las últimas noticias + conocimientos de IA 


Descubra ideas y noticias de expertos sobre IA, nube y mucho más en el boletín semanal Think. 

Cómo funciona XGBoost

En esta sección, repasaremos cómo utilizar el paquete XGBoost, cómo seleccionar los hiperparámetros para el reforzador de árbol XGBoost, cómo se compara XGBoost con otras implementaciones de boosting y algunos de sus casos de uso.

Dividir sus datos y convertirlos al formato DMatrix

Supongamos que ya ha realizado un análisis exploratorio de los datos. Continúe dividiéndolos en un conjunto de datos de entrenamiento y un conjunto de prueba. A continuación, convierta sus datos al formato DMatrix que XGBoost espera3. DMatrix es la estructura de datos interna de XGBoost optimizada para la eficiencia de la memoria y la velocidad de entrenamiento4.

Generar y evaluar el modelo

A continuación, cree una instancia de un modelo XGBoost y, dependiendo de su caso de uso, seleccione qué función objetivo desea utilizar mediante el hiperparámetro "objeto". Por ejemplo, si tiene una tarea de clasificación multiclase, debe establecer el objetivo en "multi:softmax"5. Como alternativa, si tiene un problema de clasificación binaria, puede utilizar el objetivo de regresión logística "binary:logistic". Ahora puede utilizar su conjunto de entrenamiento para entrenar el modelo y predecir clasificaciones para el conjunto de datos que se ha reservado como conjunto de prueba. Evalúe el rendimiento del modelo mediante la comparación de los valores previstos y los valores reales del conjunto de prueba. Puede utilizar métricas como la exactitud, la precisión, la recuperación o el valor f para evaluar su modelo. También puede visualizar sus verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos con una matriz de confusión.

Ajuste de hiperparámetros

A continuación, es posible que desee iterar a través de una combinación de hiperparámetros para ayudar a mejorar el rendimiento de su modelo. El ajuste de hiperparámetros es el proceso de optimización de los hiperparámetros de un algoritmo de machine learning. Los mejores hiperparámetros se pueden encontrar utilizando métodos de búsqueda de cuadrícula y validación cruzada, que iterarán a través de un diccionario de posibles combinaciones de hiperparámetros.

Hiperparámetros seleccionados para árboles potenciados por gradiente en XGBoost

A continuación se explica algunos de los hiperparámetros disponibles para ajustar los árboles potenciados por gradiente en XGBoost:

  • La tasa de aprendizaje (también conocida como "tamaño del escalón" o "reducción") es el hiperparámetro más importante de la potenciación del gradiente. En la biblioteca XGBoost, se conoce como "eta", debe ser un número entre 0 y 1 y el valor predeterminado es 0,36. La tasa de aprendizaje determina la velocidad a la que el algoritmo de boosting aprende de cada iteración. Un valor más bajo de eta significa un aprendizaje más lento, ya que reduce la contribución de cada árbol del conjunto y, por lo tanto, ayuda a evitar el sobreajuste. Por el contrario, un valor más alto de eta acelera el aprendizaje, pero puede provocar un sobreajuste si no se ajusta cuidadosamente.
  • El hiperparámetro n_estimators especifica el número de árboles que se construirán en el conjunto. Cada ronda de boosting añade un nuevo árbol al conjunto y el modelo aprende lentamente a corregir los errores cometidos por los árboles anteriores. N_estimators dirige la complejidad del modelo e influye tanto en el tiempo de entrenamiento como en la capacidad del modelo para generalizar a datos no vistos. Aumentar el valor de n_estimators suele incrementar la complejidad del modelo, ya que permite que este capture patrones más intrincados en los datos. Sin embargo, añadir demasiados árboles puede provocar un sobreajuste. En general, a medida que aumenta n_estimators, la tasa de aprendizaje debería disminuir.
  • Gamma (también conocido como multiplicador de Lagrange o parámetro de reducción mínima de pérdidas) controla la cantidad mínima de reducción de pérdidas necesaria para realizar una nueva división en un nodo hoja del árbol. Un valor más bajo significa que XGBoost se detiene antes pero puede no encontrar la mejor solución; mientras que un valor más alto significa que XGBoost continúa entrenando durante más tiempo, encontrando potencialmente mejores soluciones, pero con mayor riesgo de sobreajuste. No existe límite superior para la gamma. El valor predeterminado en XGBoost es 0 y cualquier valor superior a 10 se considera alto.
  • Max_depth representa la profundidad a la que puede crecer cada árbol del proceso de boosting durante el entrenamiento. La profundidad de un árbol se refiere al número de niveles o divisiones que tiene desde el nodo raíz hasta los nodos hoja. Aumentar este valor hará que el modelo sea más complejo y tenga más probabilidades de sobreajustarse. En XGBoost, el max_depth por defecto es 6, lo que significa que a cada árbol del modelo se le permite crecer hasta una profundidad máxima de 6 niveles.
Mixture of Experts | Pódcast

Descifrar la IA: resumen semanal de noticias

Únase a nuestro panel de ingenieros, investigadores, responsables de producto y otros profesionales de talla mundial que se abren paso entre el bullicio de la IA para ofrecerle las últimas noticias y conocimientos al respecto.

Comparación de XGBoost con otros algoritmos de boosting

XGBoost es uno de los muchos algoritmos de boosting de código abierto disponibles. En esta sección, compararemos XGBoost con otros tres marcos de impulso.

XGBoost vs. AdaBoost

AdaBoost es uno de los primeros algoritmos de boosting inventados por Yoav Freund y Robert Schapire en 19957. En AdaBoost, se hace más hincapié en las predicciones incorrectas mediante un sistema de ponderaciones que afecta de forma más significativa a aquellos puntos de datos más difíciles de predecir. En primer lugar, a cada punto de datos del conjunto se le asigna una ponderación específica. A medida que los aprendices débiles predicen correctamente un ejemplo, la ponderación del mismo se reduce. Pero si los aprendices se equivocan en un ejemplo, la ponderación de ese punto de datos aumenta. A medida que se crean nuevos árboles, sus ponderaciones se basan en las clasificaciones erróneas de los árboles de aprendizaje anteriores. A medida que aumente el número de aprendices, las muestras que son fáciles de predecir se utilizarán menos para los futuros aprendices, mientras que los puntos de datos que son más difíciles de predecir se ponderarán de forma más destacada. La potenciación del gradiente y XGBoost tienden a ser alternativas más sólidas a AdaBoost debido a su precisión y velocidad.

Comparación entre XGBoost y CatBoost

CatBoost es otro marco de potenciación del gradiente. Desarrollado por Yandex en 2017, está especializado en el manejo de características categóricas sin necesidad de preprocesamiento y, por lo general, ofrece un buen rendimiento inmediato sin necesidad de realizar un ajuste exhaustivo de los hiperparámetros8. Al igual que XGBoost, CatBoost ha incorporado soporte para gestionar los datos que faltan. CatBoost es especialmente útil para conjuntos de datos con muchas características categóricas. Según Yandex, el marco se utiliza para búsquedas, sistemas de recomendación, asistentes personales, coches autónomos, predicción meteorológica y otras tareas.

XGBoost vs. LightGBM

LightGBM (Light Gradient Boosting Machine) es el último algoritmo de potenciación del gradiente que analizaremos. LightGBM fue desarrollado por Microsoft y lanzado por primera vez en 20169. Mientras que la mayoría de los algoritmos de aprendizaje de árboles de decisión hacen crecer los árboles en profundidad, LightGBM utiliza una estrategia de crecimiento de árboles en hojas10. Al igual que XGBoost, LightGBM presenta una velocidad de entrenamiento de modelos y una precisión rápidas, y funciona bien con grandes conjuntos de datos.

Aplicaciones de XGBoost

Los árboles de decisión impulsados por XGBoost y el gradiente se utilizan en una variedad de aplicaciones de ciencia de datos, que incluyen:

  • Aprendizaje de clasificación: uno de los casos de uso más populares del algoritmo XGBoost es como clasificador. En la recuperación de información, el objetivo de aprender a clasificar es ofrecer a los usuarios contenido ordenado por relevancia. En XGBoost, XGBRanker se basa en el algoritmo LambdaMART11.
  • Predicción de la tasa de clics en anuncios: los investigadores utilizaron un modelo entrenado con XGBoost para determinar la frecuencia con la que se había hecho clic en los anuncios por internet en 10 días de datos de clics. El objetivo de la investigación era medir la efectividad de los anuncios por internet y determinar cuáles funcionan bien12.
  • Predicción de ventas en tienda: XGBoost puede utilizarse para el modelado predictivo, como se demuestra en este artículo, en el que se predijeron las ventas de 45 tiendas Walmart con un modelo XGBoost13.
  • Clasificación de malware: gracias a un clasificador XGBoost, los ingenieros de la Universidad Técnica de Košice fueron capaces de clasificar el malware de forma precisa, como se muestra en su artículo14.
  • Competiciones de Kaggle: XGBoost ha sido un algoritmo ganador muy popular en las competiciones de Kaggle, como se señala en la página de la DMLC (Distributed [Deep] Machine Learning Community), en la que aparece una lista de los ganadores recientes de las competiciones de Kaggle que utilizaron XGBoost para sus participaciones15
Soluciones relacionadas
IBM watsonx.ai

Entrene, valide, ajuste e implemente IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de nueva generación para desarrolladores de IA. Cree aplicaciones de IA en menos tiempo y con menos datos.

Descubra watsonx.ai
Soluciones de inteligencia artificial

Ponga la IA al servicio de su negocio con la experiencia líder del sector y la cartera de soluciones de IA de IBM.

Explore las soluciones de IA
Consultoría y servicios de IA

Reinvente las operaciones y flujos de trabajo críticos añadiendo IA para maximizar las experiencias, la toma de decisiones en tiempo real y el valor empresarial.

Explore los servicios de IA
Dé el siguiente paso

Obtenga acceso único a capacidades que abarcan el ciclo de vida de desarrollo de la IA. Produzca potentes soluciones de IA con interfaces intuitivas, flujos de trabajo y acceso a API y SDK estándar del sector.

Explore watsonx.ai Solicite una demostración en directo
Notas a pie de página

1 "Scalable and Flexible Gradient Boosting" [Potenciación del gradiente escalable y flexible]. https://xgboost.ai/.

2 Tianqi Chen y Carlos Guestrin. "XGBoost: A Scalable Tree Boosting System" [XGBoost: un sistema de boosting de árbol escalable]. University of Washington. 10 de junio de 2016. https://arxiv.org/pdf/1603.02754.

3 "XGBoost Python Package Introduction, Data Interface" [Introducción al paquete Python XGBoost, interfaz de datos]. https://xgboost.readthedocs.io/en/stable/python/python_intro.html#data-interface.

4 "XGBoost API Reference, Core Data Structure" [Referencia de la API de XGBoost, estructura de datos principal]. https://xgboost.readthedocs.io/en/stable/python/python_api.html#module-xgboost.core.

5 "XGBoost Parameters, Learning Task Parameters" [Parámetros de XGBoost, parámetros de la tarea de aprendizaje]. https://xgboost.readthedocs.io/en/stable/parameter.html#learning-task-parameters.

"XGBoost Parameters for Tree Booster" [Parámetros de XGBoost para la optimización de árboles]. https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster.

7 Yoav Freund y Robert E. Schapire. "A decision-theoretic generalization of on-line learning and an application to boosting" [Una generalización de la teoría de la decisión del aprendizaje en línea y una aplicación para el boosting]. Journal of Computer and System Sciences. Vol. 55. Pp. 119–139. Agosto de 1997.

8 "CatBoost is a high-performance open source library for gradient boosting on decision trees" [CatBoost es una biblioteca de código abierto de alto rendimiento para la potenciación del gradiente en árboles de decisión]. https://catboost.ai/.

9 Qi Meng, Guolin Ke, Taifeng Wang, Wei Chen, Qiwei Ye, Zhi-Ming Ma y Tie-Yan Liu. "A Communication-Efficient Parallel Algorithm for Decision Tree" [Un algoritmo paralelo de comunicación eficiente para árboles de decisión]. Peking University. Microsoft Research y Academia China de Matemáticas y Ciencias de Sistemas. 4 de noviembre de 2016. https://arxiv.org/pdf/1611.01276.

10 "LightGBM Features, Leaf-wise (Best-first) Tree Growth" [Características de LightGBM, crecimiento de árboles por hojas (mejor primero)]. https://lightgbm.readthedocs.io/en/latest/Features.html#leaf-wise-best-first-tree-growth.

11 "XGBoost Tutorials, Learning to Rank Overview" [Tutoriales de XGBoost, resumen del aprendizaje de clasificación]. https://xgboost.readthedocs.io/en/latest/tutorials/learning_to_rank.html#overview.

12 AlAli Moneera, AlQahtani Maram, AlJuried Azizah, Taghareed AlOnizan, Dalia Alboqaytah, Nida Aslam e Irfan Ullah Khan. "Click through Rate Effectiveness Prediction on Mobile Ads Using Extreme Gradient Boosting" [Predicción de la eficacia de la tasa de clics en anuncios para móviles mediante la potenciación extrema del gradiente]. College of Computer Science and Information Technology. Imam Abdulrahman bin Faisal University. 12 de septiembre de 2020. https://www.techscience.com/cmc/v66n2/40673/html.

13 Yetunde Faith Akande, Joyce Idowu, Abhavya Gautam, Sanjay Misra, Oluwatobi Noah Akande y Ranjan Kumar Behera. "Application of Xgboost Algorithm for Sales Forecasting Using Walmart Dataset" [Aplicación del algoritmo Xgboost para la previsión de ventas mediante el conjunto de datos de Walmart]. Landmark University, Ladoke Akintola University of Technology, Brandan University, Covenant University y XIM University. Junio de 2022. https://www.researchgate.net/publication/361549465_Application_of_XGBoost_Algorithm_for_Sales_Forecasting_Using_Walmart_Dataset.

14 Jakub Palša, Norbert Ádám, Ján Hurtuk, Eva Chovancová, Branislav Madoš, Martin Chovanec y Stanislav Kocan. "MLMD—A Malware-Detecting Antivirus Tool Based on the XGBoost Machine Learning Algorithm" [MLMD: una herramienta antivirus de detección de malware basada en el algoritmo de machine learning XGBoost]. MDPI.com Journal of Applied Sciences. Vol. 12. 6672. 1 de julio de 2022. https://www.mdpi.com/2076-3417/12/13/6672.

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.