Saltar al contenido

XGBoost para regresión

13 de marzo de 2021

Extreme Gradient Boosting (XGBoost) es una biblioteca de código abierto que proporciona una implementación eficiente y efectiva del algoritmo de aumento de gradiente.

Poco después de su desarrollo y lanzamiento inicial, XGBoost se convirtió en el método de referencia y, a menudo, en el componente clave para obtener soluciones para una variedad de problemas en las competencias de aprendizaje automático.

Los problemas de modelos predictivos de regresión implican la predicción de un valor numérico, como una cantidad en dólares o una altura. XGBoost se puede utilizar directamente para modelado predictivo de regresión.

En este tutorial, descubrirá cómo desarrollar y evaluar modelos de regresión XGBoost en Python.

Después de completar este tutorial, sabrá:

  • XGBoost es una implementación eficiente de aumento de gradiente que se puede utilizar para el modelado predictivo de regresión.
  • Cómo evaluar un modelo de regresión XGBoost utilizando la técnica de mejores prácticas de validación cruzada repetida de k veces.
  • Cómo ajustar un modelo final y usarlo para hacer una predicción sobre nuevos datos.

Empecemos.

XGBoost para regresión

XGBoost para regresión
Foto de chas B, algunos derechos reservados.

Descripción general del tutorial

Este tutorial se divide en tres partes; son:

  1. Aumento de gradiente extremo
  2. API de regresión XGBoost
  3. Ejemplo de regresión XGBoost

Aumento de gradiente extremo

Aumento de gradiente se refiere a una clase de algoritmos conjuntos de aprendizaje automático que se pueden utilizar para problemas de modelado predictivo de clasificación o regresión.

Los conjuntos se construyen a partir de modelos de árboles de decisión. Los árboles se agregan uno a la vez al conjunto y se ajustan para corregir los errores de predicción realizados por modelos anteriores. Este es un tipo de modelo de aprendizaje automático de conjunto denominado impulso.

Los modelos se ajustan utilizando cualquier función de pérdida diferenciable arbitraria y algoritmo de optimización de descenso de gradiente. Esto le da a la técnica su nombre, «aumento de gradiente, ”Ya que el gradiente de pérdida se minimiza a medida que se ajusta el modelo, al igual que una red neuronal.

Para obtener más información sobre el aumento de gradiente, consulte el tutorial:

Extreme Gradient Boosting, o XGBoost para abreviar, es una implementación eficiente de código abierto del algoritmo de aumento de gradiente. Como tal, XGBoost es un algoritmo, un proyecto de código abierto y una biblioteca de Python.

Inicialmente fue desarrollado por Tianqi Chen y fue descrito por Chen y Carlos Guestrin en su artículo de 2016 titulado «XGBoost: A Scalable Tree Boosting System».

Está diseñado para ser computacionalmente eficiente (por ejemplo, rápido de ejecutar) y altamente efectivo, quizás más efectivo que otras implementaciones de código abierto.

Las dos razones principales para utilizar XGBoost son la velocidad de ejecución y el rendimiento del modelo.

XGBoost domina los conjuntos de datos estructurados o tabulares sobre problemas de modelado predictivo de clasificación y regresión. La evidencia es que es el algoritmo de referencia para los ganadores de la competencia en la plataforma de ciencia de datos competitiva de Kaggle.

Entre las 29 soluciones ganadoras de desafíos 3 publicadas en el blog de Kaggle durante 2015, 17 soluciones utilizaron XGBoost. […] El éxito del sistema también se vio en KDDCup 2015, donde XGBoost fue utilizado por todos los equipos ganadores en el top 10.

– XGBoost: un sistema de aumento de árboles escalable, 2016.

Ahora que estamos familiarizados con lo que es XGBoost y por qué es importante, echemos un vistazo más de cerca a cómo podemos usarlo en nuestros proyectos de modelado predictivo de regresión.

API de regresión XGBoost

XGBoost se puede instalar como una biblioteca independiente y se puede desarrollar un modelo XGBoost utilizando la API scikit-learn.

El primer paso es instalar la biblioteca XGBoost si aún no está instalada. Esto se puede lograr usando el administrador de paquetes pip python en la mayoría de las plataformas; por ejemplo:

A continuación, puede confirmar que la biblioteca XGBoost se instaló correctamente y se puede utilizar ejecutando el siguiente script.

La ejecución del script imprimirá su versión de la biblioteca XGBoost que ha instalado.

Tu versión debe ser igual o superior. De lo contrario, debe actualizar su versión de la biblioteca XGBoost.

Es posible que tenga problemas con la última versión de la biblioteca. No es tu culpa.

A veces, la versión más reciente de la biblioteca impone requisitos adicionales o puede ser menos estable.

Recomendado:  Adopción de AutoML: hagamos una revisión de la realidad

Si tiene errores al intentar ejecutar el script anterior, le recomiendo cambiar a la versión 1.0.1 (o inferior). Esto se puede lograr especificando la versión a instalar en el comando pip, de la siguiente manera:

Si necesita instrucciones específicas para su entorno de desarrollo, consulte el tutorial:

La biblioteca XGBoost tiene su propia API personalizada, aunque usaremos el método a través de las clases contenedoras de scikit-learn: XGBRegressor y XGBClassifier. Esto nos permitirá utilizar el conjunto completo de herramientas de la biblioteca de aprendizaje automático scikit-learn para preparar datos y evaluar modelos.

Se puede definir un modelo de regresión XGBoost creando una instancia del XGBRegressor clase; por ejemplo:

Puede especificar valores de hiperparámetros al constructor de clases para configurar el modelo.

Quizás los hiperparámetros configurados con más frecuencia son los siguientes:

  • n_estimators: El número de árboles en el conjunto, a menudo aumenta hasta que no se observan más mejoras.
  • máxima profundidad: La profundidad máxima de cada árbol, a menudo los valores están entre 1 y 10.
  • eta: La tasa de aprendizaje utilizada para ponderar cada modelo, a menudo establecida en valores pequeños como 0.3, 0.1, 0.01 o menores.
  • submuestra: El número de muestras (filas) utilizadas en cada árbol, establecido en un valor entre 0 y 1, a menudo 1,0 para utilizar todas las muestras.
  • colsample_bytree: Número de características (columnas) utilizadas en cada árbol, establecido en un valor entre 0 y 1, a menudo 1.0 para usar todas las características.

Por ejemplo:

Se pueden encontrar buenos valores de hiperparámetros mediante prueba y error para un conjunto de datos determinado, o mediante experimentación sistemática, como el uso de una búsqueda en cuadrícula en un rango de valores.

La aleatoriedad se utiliza en la construcción del modelo. Esto significa que cada vez que el algoritmo se ejecuta con los mismos datos, puede producir un modelo ligeramente diferente.

Cuando se utilizan algoritmos de aprendizaje automático que tienen un algoritmo de aprendizaje estocástico, es una buena práctica evaluarlos promediando su rendimiento en múltiples ejecuciones o repeticiones de validación cruzada. Al ajustar un modelo final, puede ser conveniente aumentar el número de árboles hasta que la varianza del modelo se reduzca en las evaluaciones repetidas, o ajustar varios modelos finales y promediar sus predicciones.

Veamos cómo desarrollar un conjunto XGBoost para regresión.

Ejemplo de regresión XGBoost

En esta sección, veremos cómo podemos desarrollar un modelo XGBoost para un conjunto de datos de modelado predictivo de regresión estándar.

Primero, introduzcamos un conjunto de datos de regresión estándar.

Usaremos el conjunto de datos de vivienda.

El conjunto de datos de vivienda es un conjunto de datos de aprendizaje automático estándar que comprende 506 filas de datos con 13 variables de entrada numéricas y una variable de destino numérica.

Usando un arnés de prueba de validación cruzada estratificada repetida de 10 veces con tres repeticiones, un modelo ingenuo puede lograr un error absoluto medio (MAE) de aproximadamente 6,6. Un modelo de alto rendimiento puede lograr un MAE en este mismo arnés de prueba de aproximadamente 1,9. Esto proporciona los límites del rendimiento esperado en este conjunto de datos.

El conjunto de datos implica predecir el precio de la vivienda dados los detalles del suburbio de la vivienda en la ciudad estadounidense de Boston.

No es necesario descargar el conjunto de datos; lo descargaremos automáticamente como parte de nuestros ejemplos trabajados.

El siguiente ejemplo descarga y carga el conjunto de datos como un Pandas DataFrame y resume la forma del conjunto de datos y las primeras cinco filas de datos.

Recomendado:  5 famosos desastres analíticos y de IA

La ejecución del ejemplo confirma las 506 filas de datos y 13 variables de entrada y una única variable de destino numérica (14 en total). También podemos ver que todas las variables de entrada son numéricas.

A continuación, evaluemos un modelo de regresión XGBoost con hiperparámetros predeterminados sobre el problema.

Primero, podemos dividir el conjunto de datos cargado en columnas de entrada y salida para entrenar y evaluar un modelo predictivo.

A continuación, podemos crear una instancia del modelo con una configuración predeterminada.

Evaluaremos el modelo utilizando la mejor práctica de validación cruzada repetida de k veces con 3 repeticiones y 10 pliegues.

Esto se puede lograr usando la clase RepeatedKFold para configurar el procedimiento de evaluación y llamando al cross_val_score () para evaluar el modelo usando el procedimiento y recolectar las puntuaciones.

El rendimiento del modelo se evaluará utilizando el error cuadrático medio (MAE). Tenga en cuenta que MAE se hace negativo en la biblioteca scikit-learn para que pueda maximizarse. Como tal, podemos ignorar el signo y asumir que todos los errores son positivos.

Una vez evaluado, podemos informar el rendimiento estimado del modelo cuando se utiliza para hacer predicciones sobre nuevos datos para este problema.

En este caso, debido a que las puntuaciones se hicieron negativas, podemos usar la función absoluta () NumPy para que las puntuaciones sean positivas.

Luego informamos un resumen estadístico del desempeño utilizando la media y la desviación estándar de la distribución de puntajes, otra buena práctica.

Al unir esto, el ejemplo completo de evaluación de un modelo XGBoost en el problema de modelado predictivo de regresión de vivienda se enumera a continuación.

Recomendado:  3 preguntas: Combinar la informática con otras disciplinas en el MIT | Noticias del MIT

La ejecución del ejemplo evalúa el algoritmo de regresión XGBoost en el conjunto de datos de vivienda e informa el MAE promedio en las tres repeticiones de la validación cruzada de 10 veces.

Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo varias veces y compare el resultado promedio.

En este caso, podemos ver que el modelo logró un MAE de alrededor de 2,1.

Esta es una buena puntuación, mejor que la línea de base, lo que significa que el modelo tiene habilidad y está cerca de la mejor puntuación de 1,9.

Podemos decidir utilizar el modelo de regresión XGBoost como nuestro modelo final y hacer predicciones sobre nuevos datos.

Esto se puede lograr ajustando el modelo a todos los datos disponibles y llamando al predecir() función, pasando una nueva fila de datos.

Por ejemplo:

Podemos demostrar esto con un ejemplo completo, que se enumera a continuación.

La ejecución del ejemplo se ajusta al modelo y hace una predicción para las nuevas filas de datos.

Nota: Sus resultados pueden variar dada la naturaleza estocástica del algoritmo o procedimiento de evaluación, o las diferencias en la precisión numérica. Considere ejecutar el ejemplo varias veces y compare el resultado promedio.

En este caso, podemos ver que el modelo predijo un valor de alrededor de 24.

Otras lecturas

Esta sección proporciona más recursos sobre el tema si desea profundizar.

Tutoriales

Documentos

API

Resumen

En este tutorial, descubrió cómo desarrollar y evaluar modelos de regresión XGBoost en Python.

Específicamente, aprendiste:

  • XGBoost es una implementación eficiente de aumento de gradiente que se puede utilizar para el modelado predictivo de regresión.
  • Cómo evaluar un modelo de regresión XGBoost utilizando la técnica de mejores prácticas de validación cruzada repetida de k veces.
  • Cómo ajustar un modelo final y usarlo para hacer una predicción sobre nuevos datos.

¿Tiene usted alguna pregunta?
Haga sus preguntas en los comentarios a continuación y haré todo lo posible para responder.

¡Descubra las competiciones ganadoras de algoritmos!

XGBoost con Python

Desarrolle sus propios modelos XGBoost en minutos

… con solo unas pocas líneas de Python

Descubra cómo en mi nuevo libro electrónico:
XGBoost con Python

Cubre tutoriales de autoaprendizaje me gusta:
Fundamentos de algoritmos, Escalada, Hiperparámetros, y mucho más…

Lleve el poder de XGBoost a sus propios proyectos

Sáltese los académicos. Solo resultados.

Mira lo que hay dentro