Mínimos cuadrados parciales en R (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 R.

Paso 1: cargue los paquetes necesarios

La forma más fácil de realizar mínimos cuadrados parciales en R es utilizando funciones del paquete pls .

# instalar paquete pls (si aún no está instalado) 
install.packages (" pls ")

cargar biblioteca de paquetes de
 pls (pls)

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

Para este ejemplo, usaremos el conjunto de datos R integrado llamado mtcars que contiene datos sobre varios tipos de autos:

#ver las primeras seis filas del conjunto de datos mtcars
cabeza (mtcars)

                   mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21,0 6160110 3,90 2,620 16,46 0 1 4 4
Mazda RX4 Wag 21.0 6160110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22,8 4108 93 3,85 2,320 18,61 1 1 4 1
Hornet 4 Impulso 21,4 6258110 3,08 3,215 19,44 1 0 3 1
Hornet Sportabout 18,7 8360175 3,15 3,440 17,02 0 0 3 2
Valiente 18,1 6225105 2,76 3,460 20,22 1 0 3 1

Para este ejemplo, ajustaremos un modelo de mínimos cuadrados parciales (PLS) usando hp como variable de respuesta y las siguientes variables como variables predictoras:

  • mpg
  • disp
  • maldita sea
  • peso
  • qsec

El siguiente código muestra cómo ajustar el modelo PLS a estos datos. Tenga en cuenta los siguientes argumentos:

  • scale = TRUE : Esto le dice a R que cada una de las variables en el conjunto de datos debe escalarse para tener una media de 0 y una desviación estándar de 1. Esto asegura que ninguna variable predictiva sea demasiado influyente en el modelo si se mide en diferentes unidades.
  • validation = ”CV” : Esto le dice a R que use k-veces la validación cruzada para evaluar el desempeño del modelo. Tenga en cuenta que esto usa k = 10 pliegues por defecto. También tenga en cuenta que puede especificar «LOOCV» en su lugar para realizar una validación cruzada de dejar uno fuera .
#Haga que este ejemplo sea reproducible
 set.seed (1)

#fit PCR model
 model <- plsr (hp ~ mpg + disp + drat + wt + qsec, data = mtcars, scale = TRUE , validation = " CV ")

Paso 3: elija la cantidad de componentes PLS

Una vez que hemos ajustado el modelo, necesitamos determinar la cantidad de componentes PLS que vale la pena conservar.

La forma de hacerlo es mirando el error cuadrático medio de la raíz de prueba (prueba RMSE) calculado por la validación cruzada de k-veces:

#Ver resumen del resumen de ajuste del modelo
 (modelo)

Datos: Dimensión X: 32 5 
	Dimensión Y: 32 1
Método de ajuste: kernelpls
Número de componentes considerados: 5

VALIDACIÓN: RMSEP
Validado de forma cruzada utilizando 10 segmentos aleatorios.
       (Intercepción) 1 comps 2 comps 3 comps 4 comps 5 comps
CV 69,66 40,57 35,48 36,22 36,74 36,67
adjCV 69,66 40,41 35,12 35,80 36,27 36,20

ENTRENAMIENTO:% de varianza explicada
    1 comps 2 comps 3 comps 4 comps 5 comps
X 68,66 89,27 95,82 97,94 100,00
CV 71,84 81,74 82,00 82,02 82,03

Hay dos tablas de interés en la salida:

1. VALIDACIÓN: RMSEP

Esta tabla nos dice el RMSE de prueba calculado por la validación cruzada de k-veces. Podemos ver lo siguiente:

  • Si solamente se utiliza el término de intersección en el modelo, el RMSE prueba es 69.66 .
  • Si agregamos el primer componente PLS, la prueba RMSE cae a 40.57.
  • Si agregamos el segundo componente PLS, la prueba RMSE cae a 35.48.

Podemos ver que agregar componentes PLS adicionales en realidad conduce a un aumento en el RMSE de prueba. Por lo tanto, parece que sería óptimo usar solo dos componentes PLS en el modelo final.

2. ENTRENAMIENTO:% de variación explicada

Esta tabla nos dice el porcentaje de la varianza en la variable de respuesta explicada por los componentes PLS. Podemos ver lo siguiente:

  • Usando solo el primer componente PLS, podemos explicar el 68.66% de la variación en la variable de respuesta.
  • Al agregar el segundo componente PLS, podemos explicar el 89.27% de la variación en la variable de respuesta.

Tenga en cuenta que siempre podremos explicar más varianza utilizando más componentes PLS, pero podemos ver que agregar más de dos componentes PLS en realidad no aumenta mucho el porcentaje de varianza explicada.

También podemos visualizar la prueba RMSE (junto con la prueba MSE y R-squared) en función del número de componentes PLS utilizando la función validationplot () .

#visualize gráficos de validación cruzada
 validationplot (modelo)
validationplot (modelo, val.type = " MSEP ")
validationplot (modelo, val.type = " R2 ")

Mínimos cuadrados parciales en R

MSE de validación cruzada en R

Validación cruzada para mínimos cuadrados parciales en R

En cada gráfico podemos ver que el ajuste del modelo mejora al agregar dos componentes PLS, pero tiende a empeorar cuando agregamos más 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 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 final con dos componentes PLS para hacer predicciones en el conjunto de prueba.

#define los conjuntos de entrenamiento y prueba
 train <- mtcars [1:25, c ("hp", "mpg", "disp", "drat", "wt", "qsec")]
y_test <- mtcars [26: nrow (mtcars), c ("hp")]
test <- mtcars [26: nrow (mtcars), c ("mpg", "disp", "drat", "wt", "qsec")]
    
#utilizar el modelo para hacer predicciones en un modelo de conjunto de prueba
 <- plsr (hp ~ mpg + disp + drat + wt + qsec, data = train, scale = TRUE , validation = " CV ")
pcr_pred <- predecir (modelo, prueba, ncomp = 2 )

#calcular RMSE
 sqrt ( mean ((pcr_pred - y_test) ^ 2))

[1] 54,89609

Podemos ver que el RMSE de prueba resulta ser 54.89609 . É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.

Tenga en cuenta que un modelo de regresión de componentes principales equivalente con dos componentes principales produjo un RMSE de prueba de 56,86549 . Por lo tanto, el modelo PLS superó ligeramente el modelo de PCR para este conjunto de datos.

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

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

Deja un comentario

Una tabla de contingencia (a veces denominada "tablas de referencias cruzadas") es un tipo de tabla que resume la relació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!