Publicado: 9 de mayo de 2024
Colaboradores: Eda Kavlakoglu, Erika Russi
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 del boosting de gradiente con el mismo marco general; es decir, combina árboles de aprendices débiles en aprendices fuertes mediante la suma de residuos. La biblioteca está disponible para C++, Python, R, Java, Scala y Julia1.
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 reglade decisión y cada nodo hoja representa el resultado del conjunto de datos.
Dado que los árboles de decisión tienden a sobreajustarse, 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 alumno débil se entrena secuencialmente para corregir los errores cometidos por los modelos anteriores. Después de cientos de iteraciones, los alumnos débiles se convierten en alumnos fuertes.
Los bosques aleatorios y los algoritmos 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 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.
Los árboles de decisión potenciados por gradientes son un tipo de algoritmo de boosting que utiliza el descenso de gradientes. Al igual que otras metodologías de impulso, el boosting de gradiente comienza con un alumno débil para hacer predicciones. El primer árbol de decisión en el boosting de gradiente se denomina aprendiz base. A continuación, se crean nuevos árboles de forma aditiva a partir de los errores del alumno base. A continuación, 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.
Conozca los obstáculos para la adopción de la IA, en particular la falta de soluciones de gestión de riesgos y gobierno de la IA.
Regístrese para recibir el libro electrónico sobre flujos de trabajo responsables de IA
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 boosting de gradiente en scikit-learn2:
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.
Suponiendo que ya haya realizado un análisis exploratorio de sus datos, continúe con el reparto de 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 XGBoost espera3. DMatrix es la estructura de datos interna de XGBoost optimizada para la eficiencia de la memoria y la velocidad de entrenamiento4.
A continuación, instancie un modelo XGBoost y, en función 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 comparando los valores previstos con los valores reales del conjunto de pruebas. Puede utilizar métricas como la exactitud, la precisión, la recuperación o la puntuación f-1 para evaluar su modelo. También puede visualizar sus verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos utilizando una matriz de confusión.
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.
A continuación se explican algunos de los hiperparámetros disponibles para ajustar árboles potenciados por gradiente en XGBoost:
Sumérjase en este tutorial, que utiliza el algoritmo XGBoost para realizar una tarea de clasificación.
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.
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 de datos se le asigna una ponderación específica. A medida que los aprendices débiles predicen correctamente un ejemplo, el peso del ejemplo se reduce. Pero si los aprendices 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 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. El aumento de gradiente y XGBoost tienden a ser alternativas más sólidas a AdaBoost debido a su precisión y velocidad.
CatBoost es otro marco de aumento de gradiente. Desarrollado por Yandex en 2017, se especializa 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 autoconducidos, predicción meteorológica y otras tareas.
LightGBM (Light Gradient Boosting Machine) es el último algoritmo de boosting 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 á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.
Los árboles de decisión impulsados por XGBoost y el gradiente se utilizan en una variedad de aplicaciones de ciencia de datos, que incluyen:
Aprenda sobre este algoritmo de aprendizaje supervisado no paramétrico, que se utiliza tanto para tareas de clasificación como de regresión.
Conozca este método de aprendizaje por conjuntos, que combina un conjunto de alumnos débiles en un alumno fuerte.
Sumérjase en este tutorial, que utiliza el algoritmo XGBoost para realizar una tarea de clasificación.
1 "Scalable and Flexible Gradient Boosting". https://xgboost.ai/ (enlace externo a ibm.com).
2 Tianqi Chen y Carlos Guestrin. "XGBoost: A Scalable Tree Boosting System". University of Washington. 10 de junio de 2016. https://arxiv.org/pdf/1603.02754 (enlace externo a ibm.com).
3 "XGBoost Python Package Introduction, Data Interface". https://xgboost.readthedocs.io/en/stable/python/python_intro.html#data-interface (enlace externo a ibm.com).
4 "XGBoost API Reference, Core Data Structure". https://xgboost.readthedocs.io/en/stable/python/python_api.html#module-xgboost.core (enlace externo a ibm.com).
5 "XGBoost Parameters, Learning Task Parameters". https://xgboost.readthedocs.io/en/stable/parameter.html#learning-task-parameters (enlace externo a ibm.com).
6 "XGBoost Parameters for Tree Booster". https://xgboost.readthedocs.io/en/stable/parameter.html#parameters-for-tree-booster (enlace externo a ibm.com).
7 Yoav Freund y 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/ (enlace externo a ibm.com).
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". Universidad de Pekín. Microsoft Research y Chinese Academy of Mathematics and Systems Science. 4 de noviembre de 2016. https://arxiv.org/pdf/1611.01276 (enlace externo a ibm.com).
10 "LightGBM Features, Leaf-wise (Best-first) Tree Growth". https://lightgbm.readthedocs.io/en/latest/Features.html#leaf-wise-best-first-tree-growth (enlace externo a ibm.com).
11 "XGBoost Tutorials, Learning to Rank Overview". https://xgboost.readthedocs.io/en/latest/tutorials/learning_to_rank.html#overview (enlace externo a ibm.com).
12 AlAli Moneera, AlQahtani Maram, AlJuried Azizah, Taghareed AlOnizan, Dalia Alboqaytah, Nida Aslam y 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 (enlace externo a ibm.com).
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". 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 (enlace externo a ibm.com).
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". MDPI.com Journal of Applied Sciences. Vol. 12. 6672. 1 de julio de 2022. https://www.mdpi.com/2076-3417/12/13/6672 (enlace externo a ibm.com).
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 (enlace externo a ibm.com).