Regresión de lazo en R
La regresión de Lasso es un algoritmo de clasificación que utiliza la dispersión y la contracción en modelos simples. Este tutorial demuestra cómo realizar la regresión de lazo en R.
Regresión de lazo en R
El LASSO
se abrevia como Operador de Selección y Contracción Mínima Absoluta. Cuando queremos automatizar ciertas partes de la selección del modelo, la regresión de lazo es una buena opción ya que muestra un alto nivel de multicolinealidad.
La regresión de lazo es un problema de programación cuadrática, y los lenguajes como R y Matlab brindan soluciones. Veamos el proceso paso a paso para resolver la regresión de lazo en R.
Comprender la ecuación
La regresión de Lasso minimiza la siguiente función.
RSS + λΣ|βj|
Donde j
es el rango de 1 a la variable predictora y λ ≥ 0
, el segundo término λΣ|βj|
se conoce como penalización por contracción.
El RSS = Σ(Yi – ŷi)2
, en el que Σ
es la suma, yi
es el valor de respuesta real para la observación ith
y ŷi
es el valor de respuesta previsto.
La lambda se selecciona como el error medio de escuadrón (MSE) de prueba más bajo posible en la regresión de lazo una vez que sabemos lo que haremos en la regresión de lazo.
Carguemos los datos en el siguiente paso.
Cargar los datos
Usemos el conjunto de datos mtcars
para nuestro ejemplo. Se utilizará como variable de respuesta hp
y como predictores mpg, drat, wt, qsec
.
Podemos usar el paquete glmnet
para realizar la regresión de lazo. Carguemos los datos.
# glmnet package requires to define response variable
x <- mtcars$hp
# glmnet package requires to define matrix of predictor variables
y <- data.matrix(mtcars[, c('mpg', 'wt', 'drat', 'qsec')])
Una vez que se cargan los datos, lo siguiente es ajustar el modelo de regresión de lazo.
Ajuste del modelo de regresión de Lasso
En este paso, usamos la función glmnet()
para ajustar el modelo de regresión de lazo; el alfa se establecerá en 1 para el modelo de regresión de lazo. Se realizará la validación cruzada k-fold para determinar el valor de lambda, y con glmnet
, automáticamente realiza la validación cruzada con k= 10
folds.
Es posible que necesitemos instalar el paquete glmnet
si aún no está instalado. Ver ejemplo:
# k-fold cross-validation to find lambda value
cv_model <- cv.glmnet(x, y, alpha = 1)
#lambda value that minimizes test MSE
best_lambda <- cv_model$lambda.min
best_lambda
# plot the model
plot(cv_model)
El código anterior se ajusta al modelo de regresión de lazo y muestra el mejor valor lambda y la gráfica del modelo.
A continuación se muestra el valor lambda que minimiza el MSE de la prueba.
[1] 2.01841
La gráfica del modelo de regresión de lazo:
Analizar el modelo de regresión de Lasso
Analizar el modelo significa que podemos mostrar los coeficientes del modelo. Los coeficientes de nuestro modelo son:
# Coefficients of the model
coef(cv_model)
La salida para el código será:
5 x 1 sparse Matrix of class "dgCMatrix"
s1
(Intercept) 418.277928
mpg -4.379633
wt .
drat .
qsec -10.286483
Conocemos el mejor valor lambda; también podemos crear el mejor modelo sin pasar por el mejor valor lambda como argumento de la función glmnet
mientras ajustamos el modelo.
Como podemos ver, no se muestran coeficientes para los predictores wt
y drat
porque la regresión de lazo los redujo a 0. Por eso se eliminaron del modelo.
Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.
LinkedIn Facebook