Saltar al contenido

Cómo desarrollar modelos de regresión de cresta en Python

9 de octubre de 2020

La regresión es una tarea de modelización que implica la predicción de un valor numérico dado una entrada.

La regresión lineal es el algoritmo estándar para la regresión que asume una relación lineal entre las entradas y la variable objetivo. Una extensión de la regresión lineal invoca la adición de penalizaciones a la función de pérdida durante el entrenamiento que fomenta modelos más simples que tienen valores de coeficientes más pequeños. Estas extensiones se denominan regresión lineal regularizada o regresión lineal penalizada.

Regresión de la cresta es un tipo popular de regresión lineal regularizada que incluye una penalización de L2. Esto tiene el efecto de reducir los coeficientes para aquellas variables de entrada que no contribuyen mucho a la tarea de predicción.

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

Después de completar este tutorial, lo sabrás:

  • La regresión de cresta es una extensión de la regresión lineal que añade una penalización de regularización a la función de pérdida durante el entrenamiento.
  • Cómo evaluar un modelo de regresión de la cresta y usar un modelo final para hacer predicciones para nuevos datos.
  • Cómo configurar el modelo de regresión de la cresta para un nuevo conjunto de datos a través de la búsqueda de la cuadrícula y de forma automática.

Empecemos.

Cómo desarrollar modelos de regresión de cresta en Python

Cómo desarrollar modelos de regresión de cresta en Python
Foto de Susanne Nilsson, algunos derechos reservados.

Resumen del Tutorial

Este tutorial está dividido en tres partes; son:

  1. Regresión de la cresta
  2. Ejemplo de regresión de la cresta
  3. Hiperparámetros de Tuning Ridge

Regresión de la cresta

La regresión lineal se refiere a un modelo que asume una relación lineal entre las variables de entrada y la variable objetivo.

Con una sola variable de entrada, esta relación es una línea, y con dimensiones más altas, esta relación puede ser pensada como un hiperplano que conecta las variables de entrada con la variable objetivo. Los coeficientes del modelo se encuentran a través de un proceso de optimización que busca minimizar el error de suma al cuadrado entre las predicciones (yhat) y los valores objetivo esperados (y).

  • pérdida = suma i=0 a n (y_i – yhat_i)^2

Un problema con la regresión lineal es que los coeficientes estimados del modelo pueden llegar a ser grandes, lo que hace que el modelo sea sensible a las entradas y posiblemente inestable. Esto es particularmente cierto para los problemas con pocas observaciones (muestras) o más muestras (n) que los predictores de entrada (p) o variables (las llamadas p >> n problemas).

Un enfoque para abordar la estabilidad de los modelos de regresión es cambiar la función de pérdida para incluir los costos adicionales de un modelo que tiene grandes coeficientes. Los modelos de regresión lineal que utilizan estas funciones de pérdida modificadas durante la formación se denominan colectivamente regresión lineal penalizada.

Una penalización popular es penalizar un modelo basado en la suma de los valores de los coeficientes cuadrados (beta). Esto se llama una penalización L2.

  • l2_penalty = suma j=0 a p beta_j^2

Una penalización de L2 minimiza el tamaño de todos los coeficientes, aunque impide que se eliminen del modelo los coeficientes al permitir que su valor sea cero.

El efecto de esta penalización es que sólo se permite que las estimaciones de los parámetros se vuelvan grandes si hay una reducción proporcional en la ESS. En efecto, este método encoge las estimaciones hacia 0 a medida que la penalización lambda se hace grande (estas técnicas se denominan a veces «métodos de encogimiento»).

– Página 123, Applied Predictive Modeling, 2013.

Esta penalización puede añadirse a la función de costo de la regresión lineal y se denomina regularización de Tikhonov (según el autor) o regresión de cresta en general.

Se utiliza un hiperparámetro llamado «lambda«que controla la ponderación de la pena a la función de pérdida. Un valor por defecto de 1.0 ponderará completamente la penalización; un valor de 0 excluye la penalización. Los valores muy pequeños de lambda, como 1e-3 o más pequeños son comunes.

  • ridge_loss = pérdida + (lambda * l2_penalty)

Ahora que estamos familiarizados con la regresión penalizada de Ridge, veamos un ejemplo trabajado.

Ejemplo de regresión de la cresta

En esta sección, demostraremos cómo usar el algoritmo de Regresión de la Cresta.

Primero, introduzcamos un conjunto de datos de regresión estándar. Usaremos el conjunto de datos de la vivienda.

El conjunto de datos de la carcasa es un conjunto de datos estándar de aprendizaje de la máquina que comprende 506 filas de datos con 13 variables numéricas de entrada y una variable numérica de destino.

Recomendado:  Por qué el GPT-3 anuncia una revolución democrática en la tecnología

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

El conjunto de datos implica la predicción del precio de la casa, dados los detalles del suburbio de la casa en la ciudad americana de Boston.

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

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

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

La biblioteca de aprendizaje de la máquina Python de scikit-learn proporciona una implementación del algoritmo de Regresión Ridge a través de la clase Ridge.

Confusamente, el término lambda puede ser configurado a través de la «alfa«argumento» al definir la clase. El valor por defecto es 1.0 o una penalización completa.

Podemos evaluar el modelo de Regresión de la Cresta en el conjunto de datos de la vivienda utilizando una validación cruzada repetida 10 veces e informar del error medio absoluto (MAE) en el conjunto de datos.

Recomendado:  Libros sobre programación genética

La ejecución del ejemplo evalúa el algoritmo de regresión de la cresta en el conjunto de datos de la vivienda y reporta el promedio de MAE a través de las tres repeticiones de validación cruzada de 10 veces.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje. Considere ejecutar el ejemplo unas cuantas veces.

En este caso, podemos ver que el modelo alcanzó un MAE de alrededor de 3.382.

Podemos decidir usar la Regresión de la Cresta como nuestro modelo final y hacer predicciones sobre nuevos datos.

Esto puede lograrse ajustando el modelo a todos los datos disponibles y llamando al predecir() pasando en una nueva fila de datos.

Podemos demostrarlo con un ejemplo completo que se enumera a continuación.

Ejecutando el ejemplo se ajusta al modelo y hace una predicción para las nuevas filas de datos.

A continuación, podemos ver la configuración de los hiperparámetros del modelo.

Hiperparámetros de Tuning Ridge

¿Cómo sabemos que los hiperparámetros por defecto de alfa=1.0 es apropiado para nuestro conjunto de datos?

No lo hacemos.

En su lugar, es una buena práctica probar un conjunto de diferentes configuraciones y descubrir qué es lo que mejor funciona para nuestro conjunto de datos.

Un enfoque sería la búsqueda en cuadrícula alfa valores de quizás 1e-5 a 100 en una escala de logaritmo y descubrir qué es lo que mejor funciona para un conjunto de datos. Otro enfoque sería probar valores entre 0,0 y 1,0 con una separación de cuadrícula de 0,01. Intentaremos lo último en este caso.

El siguiente ejemplo lo demuestra utilizando la clase GridSearchCV con una cuadrícula de valores que hemos definido.

Recomendado:  La IA puede cambiar el guión para el periodismo de investigación/Servicio público de noticias

Al ejecutar el ejemplo se evaluará cada combinación de configuraciones utilizando una validación cruzada repetida.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje. Intente ejecutar el ejemplo unas cuantas veces.

En este caso, podemos ver que obtuvimos resultados ligeramente mejores que los 3.379 contra 3.382 del predeterminado. Ignore el signo; la biblioteca hace que el MAE sea negativo para fines de optimización.

Podemos ver que el modelo asignó un alfa peso de 0,51 a la pena.

La biblioteca scikit-learn también proporciona una versión incorporada del algoritmo que encuentra automáticamente buenos hiperparámetros a través de la clase RidgeCV.

Para usar esta clase, se ajusta al conjunto de datos de entrenamiento y se usa para hacer una predicción. Durante el proceso de entrenamiento, automáticamente ajusta los valores de los hiperparámetros.

Por defecto, el modelo sólo probará el alfa valores (0,1, 1,0, 10,0). Podemos cambiar esto a una cuadrícula de valores entre 0 y 1 con una separación de 0,01 como hicimos en el ejemplo anterior, estableciendo el «alphas«argumento».

El siguiente ejemplo lo demuestra.

Ejecutando el ejemplo se ajusta al modelo y descubre los hiperparámetros que dan los mejores resultados usando la validación cruzada.

Sus resultados específicos pueden variar dada la naturaleza estocástica del algoritmo de aprendizaje. Intente ejecutar el ejemplo unas cuantas veces.

En este caso, podemos ver que el modelo eligió el hiperparámetro idéntico de alfa=0,51 que encontramos a través de nuestra búsqueda manual en la red.

Más lecturas

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

Libros

APIs

Artículos

Resumen

En este tutorial, descubriste cómo desarrollar y evaluar los modelos de Regresión de Cumbrera en Python.

Específicamente, aprendiste:

  • La regresión de cresta es una extensión de la regresión lineal que añade una penalización de regularización a la función de pérdida durante el entrenamiento.
  • Cómo evaluar un modelo de regresión de la cresta y usar un modelo final para hacer predicciones para nuevos datos.
  • Cómo configurar el modelo de regresión de la cresta para un nuevo conjunto de datos a través de la búsqueda de la cuadrícula y de forma automática.

¿Tiene alguna pregunta?
Haga sus preguntas en los comentarios de abajo y haré lo posible por responder.

Descubre el aprendizaje rápido de la máquina en Python!

Aprendizaje de la máquina maestra con Python

Desarrolle sus propios modelos en minutos

…con sólo unas pocas líneas de código de aprendizaje científico…

Aprende cómo en mi nuevo Ebook:
Dominio de la máquina de aprendizaje con la pitón

Cubre Tutoriales de auto-estudio y proyectos integrales como:
Cargando datos, visualización, modelado, tuningy mucho más…

Finalmente traer el aprendizaje automático a
Sus propios proyectos

Sáltese los académicos. Sólo los resultados.

Ver lo que hay dentro