Contenido de este artículo
- 0
- 0
- 0
- 0
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 ')
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/
¿Te hemos ayudado?
Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:La ayuda no cuesta nada
Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo: