Regresión de lazo en Python (paso a paso)

La regresión de lazo es un método que podemos utilizar para ajustar un modelo de regresión cuando la multicolinealidad está presente en los datos.

En pocas palabras, la regresión de mínimos cuadrados intenta encontrar estimaciones de coeficientes que minimicen la suma de los residuos al cuadrado (RSS):

RSS = Σ (y i – ŷ i ) 2

dónde:

  • Σ : símbolo griego que significa suma
  • y i : El valor de respuesta real para la i- ésima observación
  • ŷ i : el valor de respuesta predicho basado en el modelo de regresión lineal múltiple

Por el contrario, la regresión de lazo busca minimizar lo siguiente:

RSS + λΣ | β j |

donde j varía de 1 a p variables predictoras y lambda ≥ 0.

Este segundo término de la ecuación se conoce como penalización por contracción . En la regresión de lazo, seleccionamos un valor para λ que produce el MSE de prueba más bajo posible (error cuadrático medio).

Este tutorial proporciona un ejemplo paso a paso de cómo realizar la regresión de lazo en Python.

Paso 1: importar los paquetes necesarios

Primero, importaremos los paquetes necesarios para realizar la regresión de lazo en Python:

importación pandas como pd
 de numpy importación arange
 de sklearn. linear_model  importa LassoCV
 desde sklearn. model_selection  importar RepeatedKFold

Paso 2: cargue los datos

Para este ejemplo, usaremos un conjunto de datos llamado mtcars , que contiene información sobre 33 autos diferentes. Usaremos hp como variable de respuesta y las siguientes variables como predictores:

  • mpg
  • peso
  • maldita sea
  • qsec

El siguiente código muestra cómo cargar y ver este conjunto de datos:

#define la URL donde se encuentran los datos
url = "https://raw.githubusercontent.com/Statology/Python-Guides/main/mtcars.csv"

#leer en los datos 
data_full = pd. read_csv (url)

#select subconjunto de datos
 data = data_full [["mpg", "wt", "drat", "qsec", "hp"]]

#ver las primeras seis filas de datos
datos [0: 6]

	mpg wt drat qsec hp
0 21,0 2,620 3,90 16,46 110
1 21,0 2,875 3,90 17,02 110
2 22,8 2,320 3,85 18,61 93
3 21,4 3,215 3,08 19,44 110
4 18,7 3,440 3,15 17,02 175
5 18,1 3,460 2,76 20,22 105

Paso 3: ajuste el modelo de regresión de lazo

A continuación, usaremos la función LassoCV () de sklearn para ajustar el modelo de regresión de lazo y usaremos la función RepeatedKFold () para realizar k-veces la validación cruzada para encontrar el valor alfa óptimo para usar para el término de penalización.

Nota: El término «alfa» se usa en lugar de «lambda» en Python.

Para este ejemplo, elegiremos k = 10 pliegues y repetiremos el proceso de validación cruzada 3 veces.

También tenga en cuenta que LassoCV () solo prueba los valores alfa 0.1, 1 y 10 de forma predeterminada. Sin embargo, podemos definir nuestro propio rango alfa de 0 a 1 en incrementos de 0.01:

#definir variables de predicción y respuesta
 X = datos [["mpg", "wt", "drat", "qsec"]]
y = datos ["hp"]

#define el método de validación cruzada para evaluar el modelo
 cv = RepeatedKFold (n_splits = 10 , n_repeats = 3 , random_state = 1 )

#define modelo
 modelo = LassoCV (alfas = arange (0, 1, 0,01), cv = cv, n_jobs = -1 )

modelo #fit
 model. encajar (X, y)

#display lambda que produjo la impresión MSE de prueba más baja
 (modelo. alpha_ )

0,99

El valor lambda que minimiza la prueba MSE resulta ser 0,99 .

Paso 4: use el modelo para hacer predicciones

Por último, podemos utilizar el modelo de regresión de lazo final para hacer predicciones sobre nuevas observaciones. Por ejemplo, el siguiente código muestra cómo definir un automóvil nuevo con los siguientes atributos:

  • millas por galón: 24
  • peso: 2.5
  • maldita sea: 3.5
  • qsec: 18,5

El siguiente código muestra cómo utilizar el modelo de regresión de lazo ajustado para predecir el valor de hp de esta nueva observación:

#define new observación
 new = [24, 2.5, 3.5, 18.5]

#predict hp value usando el modelo de regresión de lazo
modelo. predecir ([nuevo])
 
matriz ([105.63442071])

Según los valores de entrada, el modelo predice que este automóvil tendrá un valor de hp de 105,63442071 .

Puede encontrar el código Python completo utilizado en este ejemplo aquí .

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

El error cuadrático medio (RMSE) es una métrica que nos dice qué tan lejos están nuestros valores predichos de nuestros…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!