¿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 emplea decision trees potenciados por gradiente, un algoritmo de impulso del aprendizaje supervisado que emplea el descenso de gradiente. Es conocido por su velocidad, eficiencia y capacidad de escalar bien con grandes conjuntos de datos.

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

Árboles de decisión frente a impulso

Decision trees are used for classification or regression tasks in machine learning. Emplean 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.

Debido a que los decision trees son propensos al sobreajuste, los métodos de conjunto, como el impulso, a menudo se pueden usar para crear modelos más robustos. El impulso combina múltiples árboles débiles individuales, es decir, modelos que funcionan ligeramente mejor que el azar, para formar un aprendiz fuerte. A cada alumno débil se le capacita secuencialmente para corregir los errores cometidos por los modelos anteriores. Luego de cientos de iteraciones, los estudiantes débiles se convierten en estudiantes fuertes.

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

Árboles de decisión impulsados por gradientes 

Los árboles de decisión potenciados por gradiente son un tipo de algoritmo de impulso que emplea el descenso por gradiente. Al igual que otras metodologías de impulso, el impulso del gradiente comienza con un alumno débil para hacer predicciones. El primer árbol de decisión en el impulso de gradientes se denomina aprendiz base. A continuación, se crean nuevos árboles de forma aditiva en función de los errores del alumno base. A continuación, el algoritmo calcula los residuos de las predicciones de cada árbol para determinar a qué distancia estaban las predicciones del modelo de la realidad. Los valores residuales 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 machine learning, las funciones de pérdida se emplean 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 emplea para minimizar la pérdida (es decir, para mejorar el rendimiento del modelo) cuando capacitamos nuevos modelos. El descenso de gradiente es un algoritmo de optimización popular que se emplea para minimizar la función de pérdida en problemas de machine learning. Algunos ejemplos de funciones de pérdida incluyen el error cuadrático medio o el error absoluto medio para problemas de regression, la pérdida de entropía cruzada para problemas de clasificación o se pueden desarrollar funciones de pérdida personalizadas para un caso de uso y un conjunto de datos específicos.

Características de XGBoost

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

  • Computación paralela y distribuida: La biblioteca almacena los datos en unidades en memoria llamadas bloques. Se pueden distribuir bloques separados entre máquinas o almacenarlos en una memoria externa mediante computación fuera del núcleo. XGBoost también permite casos de uso más avanzados, como entrenamiento distribuido en un clúster de computadoras para acelerar el cálculo. XGBoost también se puede implementar en su modo distribuido empleando herramientas como Apache Spark, Dask o Kubernetes.
  • Algoritmo de precarga en caché: XGBoost emplea un algoritmo de precarga de caché que ayuda a reducir el tiempo de ejecución para grandes conjuntos de datos. La biblioteca puede funcionar más de 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 empleando menos recursos, lo que lo convierte en un sistema de impulso de árboles escalable.
  • Regularización integrada: XGBoost incluye la regularización como parte del objetivo de aprendizaje, a diferencia del impulso de gradiente regular. Los datos también pueden regularizar mediante el ajuste de hiperparámetros. El uso de la regularización integrada de XGBoost también permite que la biblioteca brinde mejores resultados que el paquete regular de impulso de gradiente de scikit-learn.
  • Manejo de missing values: XGBoost utiliza un algoritmo consciente de la ausencia para datos dispersos. Cuando falta un valor en el conjunto de datos, el punto de datos se clasifica en la dirección predeterminada y el algoritmo aprende la mejor dirección para manejar missing values.
Diseño 3D de pelotas rodando en una pista

Las últimas novedades e insights sobre IA 


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

Cómo funciona XGBoost

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

Dividir los datos y convertirlos a formato DMatrix

Suponiendo que ya realizó un análisis exploratorio de sus datos, continúe separando sus datos entre un conjunto de datos de entrenamiento y un conjunto de datos de prueba. A continuación, convierta sus datos al formato DMatrix que espera XGBoost3. 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, instancie un modelo XGBoost y, en función de su caso de uso, seleccione qué función objetivo desea emplear mediante el hiperparámetro "objeto". Por ejemplo, si tiene una tarea de clasificación multiclase, debe establecer el objetivo en "multi:softmax"5. Alternativamente, si tiene un problema de clasificación binaria, puede emplear el objetivo de regresión "binary:logistic". Ahora puede emplear su conjunto de entrenamiento para capacitar el modelo y predecir clasificaciones para el conjunto de datos que se reservó como conjunto de prueba. Evalúe el rendimiento del modelo comparando los valores previstos con los valores reales del conjunto de pruebas. Puede emplear métricas como la exactitud, la precisión, la recuperación o el puntaje f-1 para evaluar su modelo. También puede visualizar sus verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos empleando 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 para los hiperparámetros de un algoritmo de machine learning. Los mejores hiperparámetros se pueden encontrar utilizando métodos de búsqueda en 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 incluye una explicación de 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 de paso” o “contracción”), es el hiperparámetro de impulso de gradiente más importante. 6En la biblioteca XGBoost, se conoce como “eta”, debe ser un número entre 0 y 1 y el predeterminado es 0.3. La tasa de aprendizaje determina la velocidad a la que el algoritmo de impulso aprende de cada iteración. Un menor valor de eta significa un aprendizaje más lento, ya que reduce la contribución de cada árbol en el conjunto, ayudando así a evitar el sobreajuste. Por el contrario, un valor más alto de eta acelera el aprendizaje, pero puede conducir a 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 impulso agrega 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 aumentar la complejidad del modelo, ya que permite que el modelo capture patrones más complejos en los datos. Sin embargo, agregar demasiados árboles puede provocar un sobreajuste. En términos generales, 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 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. Un valor más bajo significa que XGBoost se detiene antes, pero es posible que no encuentre la mejor solución; mientras que un valor más alto significa que XGBoost continúa capacitando por más tiempo, encontrando potencialmente mejores soluciones, pero con mayor riesgo de sobreajuste. No hay 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 en el proceso de impulso 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 más propenso a sobreajustarse. En XGBoost, el max_depth predeterminado es 6, lo que significa que cada árbol del modelo puede crecer hasta una profundidad máxima de 6 niveles.
Mixture of Experts | Podcast

Decodificación de 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 revuelo de la IA para ofrecerle las últimas noticias e insights al respecto.

Comparación de XGBoost con otros algoritmos de impulso

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

XGBoost frente a AdaBoost

AdaBoost es uno de los primeros algoritmos de impulso inventado por Yoav Freund y Robert Schapire en 19957. En AdaBoost, se hace más énfasis en las predicciones incorrectas a través de un sistema de pesos que afectan a los puntos de datos más difíciles de predecir de manera más significativa. Primero, a cada punto de datos del conjunto de datos se le asigna un peso específico. A medida que los alumnos débiles predicen correctamente un ejemplo, el peso del ejemplo se reduce. Pero si los alumnos se equivocan en un ejemplo, el peso de ese punto de datos aumenta. A medida que se crean nuevos árboles, sus pesos se basan en las clasificaciones erróneas de los árboles aprendidos anteriores. A medida que aumenta el número de alumnos, las muestras que son fáciles de predecir se utilizarán menos para los futuros alumnos, mientras que los puntos de datos que son más difíciles de predecir se ponderarán de manera más prominente. El impulso de gradiente y XGBoost tienden a ser alternativas más fuertes a AdaBoost debido a su precisión y velocidad.

XGBoost frente a CatBoost

CatBoost es otro marco de impulso de gradientes. Desarrollado por Yandex en 2017, se especializa en el manejo de características categóricas sin necesidad de preprocesamiento y, en general, funciona bien de forma inmediata sin necesidad de realizar un ajuste extenso de hiperparámetros8. Al igual que XGBoost, CatBoost tiene soporte incorporado para gestionar datos faltantes. CatBoost es especialmente útil para conjuntos de datos con muchas características categóricas. Según Yandex, el framework se emplea para búsquedas, sistemas de recomendación, asistentes personales, autos autónomos, predicción meteorológica y otras tareas.

XGBoost frente a LightGBM

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

Aplicaciones de XGBoost

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

  • Aprender a clasificar: 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 publicitarios: los investigadores utilizaron un modelo capacitado con XGBoost para determinar la frecuencia con la que se hicieron clic en los anuncios en línea en 10 días de datos de clics a través. El objetivo de la investigación era medir la eficacia de los anuncios en línea e identificar qué anuncios funcionan bien12.
  • Predicción de ventas en tiendas: XGBoost puede utilizarse para el modelado predictivo, como se demuestra en este documento, donde se predijeron las ventas de 45 tiendas Walmart mediante un modelo XGBoost13.
  • Clasificación de malware: Utilizando un clasificador XGBoost, los ingenieros de la Universidad Técnica de Košice pudieron clasificar el malware con precisión, como se muestra en su documento 14.
  • Competencias de Kaggle: XGBoost ha sido un algoritmo ganador popular en las competencias de Kaggle, como se señala en la página DMLC (Comunidad de machine learning distribuido) que presenta una lista de ganadores recientes de la competencia Kaggle que usaron XGBoost para sus participaciones15
Soluciones relacionadas
IBM watsonx.ai

Entrene, valide, ajuste y despliegue IA generativa, modelos fundacionales y capacidades de machine learning con IBM watsonx.ai, un estudio empresarial de próxima generación para creadores de IA. Diseñe aplicaciones de IA en menos tiempo y con menos datos.

Descubra watsonx.ai
Soluciones de inteligencia artificial

Ponga la IA a trabajar en su negocio con la experiencia en IA líder en la industria y la cartera de soluciones de IBM a su lado.

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

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

Conozca los servicios de IA
Dé el siguiente paso

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

Explore watsonx.ai Reserve una demostración en vivo
Notas de pie de página

1 "Scalable and Flexible Gradient Boosting," https://xgboost.ai/.

2 Tianqi Chen and Carlos Guestrin, "XGBoost: A Scalable Tree Boosting System," University of Washington, 10 de junio de 2016, https://arxiv.org/pdf/1603.02754.

3 "XGBoost Python Package Introduction, Data Interface," https://xgboost.readthedocs.io/en/stable/python/python_intro.html#data-interface.

4 "XGBoost API Reference, Core Data Structure," https://xgboost.readthedocs.io/en/stable/python/python_api.html#module-xgboost.core.

5 "XGBoost Parameters, Learning Task Parameters," https://xgboost.readthedocs.io/en/stable/parameter.html#learning-task-parameters.

"XGBoost Parameters for Tree Booster," https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster.

7 Yoav Freund and Robert E. Schapire, "A decision-theoretic generalization of on-line learning and an application to boosting," Journal of Computer and System Sciences, Vol. 55, págs. 119–139, agosto de 1997.

8 "CatBoost is a high-performance open source library for gradient boosting on decision trees," https://catboost.ai/.

9 Qi Meng, Guolin Ke, Taifeng Wang, Wei Chen, Qiwei Ye, Zhi-Ming Ma and Tie-Yan Liu, "A Communication-Efficient Parallel Algorithm for Decision Tree," Peking University, Microsoft Research and Chinese Academy of Mathematics and Systems Science, 4 November 2016, https://arxiv.org/pdf/1611.01276.

10 "LightGBM Features, Leaf-wise (Best-first) Tree Growth," https://lightgbm.readthedocs.io/en/latest/Features.html#leaf-wise-best-first-tree-growth.

11 "XGBoost Tutorials, Learning to Rank Overview," 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 and Irfan Ullah Khan, "Click through Rate Effectiveness Prediction on Mobile Ads Using Extreme Gradient Boosting," 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 and Ranjan Kumar Behera, "Application of Xgboost Algorithm for Sales Forecasting Using Walmart Dataset," Landmark University, Ladoke Akintola University of Technology, Brandan University, Covenant University and XIM University, June 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 and Stanislav Kocan, "MLMD—A Malware-Detecting Antivirus Tool Based on the XGBoost Machine Learning Algorithm," MDPI.com Journal of Applied Sciences, Vol 12, 6672, 1 July 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.