Mínimos cuadrados parciales en Python (paso a paso)

Uno de los problemas más comunes que encontrará en el aprendizaje automático es la multicolinealidad . Esto ocurre cuando dos o más variables predictoras en un conjunto de datos están altamente correlacionadas.

Cuando esto ocurre, un modelo puede ajustarse bien a un conjunto de datos de entrenamiento, pero puede funcionar mal en un nuevo conjunto de datos que nunca ha visto porque se sobreajusta al conjunto de entrenamiento.

Una forma de solucionar este problema es utilizar un método conocido como mínimos cuadrados parciales , que funciona de la siguiente manera:

  • Estandarice tanto las variables predictoras como las de respuesta.
  • Calcule M combinaciones lineales (llamadas “componentes PLS”) de las p variables predictoras originales que explican una cantidad significativa de variación tanto en la variable de respuesta como en las variables predictoras.
  • Utilice el método de mínimos cuadrados para ajustar un modelo de regresión lineal utilizando los componentes PLS como predictores.
  • Utilice la validación cruzada de k-fold para encontrar el número óptimo de componentes PLS para mantener en el modelo.

Este tutorial proporciona un ejemplo paso a paso de cómo realizar mínimos cuadrados parciales en Python.

Paso 1: importar los paquetes necesarios

Primero, importaremos los paquetes necesarios para realizar mínimos cuadrados parciales en Python:

import numpy as np
 import pandas as pd
 import matplotlib. pyplot  como plt
 de sklearn. preprocesamiento de la  escala de 
 importación de sklearn import model_selection
 de sklearn. model_selection  importar RepeatedKFold
 desde sklearn. model_selection  importar train_test_split
 desde sklearn. cross_decomposition  importar PLSRegression 
desde  sklearn . métrica importar  mean_squared_error

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
  • disp
  • maldita sea
  • peso
  • 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", "disp", "drat", "wt", "qsec", "hp"]]

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


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

Paso 3: Ajuste el modelo de mínimos cuadrados parciales

El siguiente código muestra cómo ajustar el modelo PLS a estos datos.

Tenga en cuenta que cv = RepeatedKFold () le dice a Python que use la validación cruzada de k-fold para evaluar el rendimiento del modelo. Para este ejemplo, elegimos k = 10 pliegues, repetido 3 veces.

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

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

mse = []
n = len (X)

# Calcular MSE con solo la intersección
puntuación = -1 * selección_modelo. cross_val_score (PLSRegression (n_components = 1), 
           np. ones ((n, 1)), y, cv = cv, scoring = ' neg_mean_squared_error '). significa ()    
mse. añadir (puntuación)

# Calcule MSE usando validación cruzada, agregando un componente a la vez
para i en np. arange (1, 6):
    pls = PLSRegresión (n_componentes = i)
    puntuación = -1 * selección_modelo. cross_val_score (pls, escala (X), y, cv = cv,
               puntuación = ' neg_mean_squared_error '). significa ()
    mse. añadir (puntuación)

#plot test MSE vs. número de componentes
plt. trama (mse)
plt. xlabel (' Número de componentes PLS ')
plt. ylabel (' MSE ')
plt. título (' hp ')

Mínimos cuadrados parciales en la gráfica de validación cruzada de Python

El gráfico muestra el número de componentes PLS a lo largo del eje xy el MSE de prueba (error cuadrático medio) a lo largo del eje y.

En el gráfico podemos ver que la prueba MSE disminuye al agregar dos componentes PLS, pero comienza a aumentar a medida que agregamos más de dos componentes PLS.

Por lo tanto, el modelo óptimo incluye solo los dos primeros componentes PLS.

Paso 4: use el modelo final para hacer predicciones

Podemos usar el modelo PLS final con dos componentes PLS para hacer predicciones sobre nuevas observaciones.

El siguiente código muestra cómo dividir el conjunto de datos original en un conjunto de entrenamiento y prueba y usar el modelo PLS con dos componentes PLS para hacer predicciones en el conjunto de prueba.

#dividir el conjunto de datos en entrenamiento (70%) y pruebas (30%) conjuntos
 X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.3 , random_state = 0 )

#calcular RMSE
pls = PLSRegresión (n_components = 2)
pls. fit (escala (X_train), y_train)

notario público. sqrt (mean_squared_error (y_test, pls. predict (scale (X_test))))
 
29.9094

Podemos ver que el RMSE de prueba resulta ser 29.9094 . Ésta es la desviación promedio entre el valor predicho de hp y el valor observado de hp para las observaciones en el conjunto de prueba.

El uso completo del código Python en este ejemplo se puede encontrar aquí .

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

Deja un comentario

Este tutorial explica cómo leer e interpretar la tabla de distribución de chi-cuadrado . ¿Qué es la tabla de distribución…
statologos comunidad-2

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

You have Successfully Subscribed!