22 votos

Lasso vs. Lasso adaptativo

LASSO y LASSO adaptativo son dos cosas diferentes, ¿verdad? (Para mí, las penalizaciones parecen diferentes, pero solo estoy comprobando si me estoy perdiendo algo.)

Cuando hablas en general sobre la red elástica, ¿es el caso especial LASSO o LASSO adaptativo?

¿Cuál de ellos hace el paquete glmnet, siempre y cuando elijas alpha=1?

¿El LASSO adaptativo funciona en condiciones más suaves, ¿verdad? Ambos tienen la propiedad del oráculo en datos adecuados, ¿verdad?

21voto

Richard Hardy Puntos 6099

Respuestas breves a tus preguntas:

  • Lasso y lasso adaptativo son diferentes. (Consulta Zou (2006) para ver cómo se diferencia el lasso adaptativo del lasso estándar.)
  • Lasso es un caso especial de red elástica. (Ver Zou & Hastie (2005).)
    El lasso adaptativo no es un caso especial de red elástica.
    La red elástica no es un caso especial de lasso o lasso adaptativo.
  • La función glmnet en el paquete "glmnet" en R realiza lasso (no lasso adaptativo) para alpha=1.
  • ¿Funciona el lasso bajo condiciones más suaves que el lasso adaptativo? No puedo responder a esta pregunta (debemos consultar Zou (2006) para obtener más información).
  • Solo el lasso adaptativo (pero no el lasso o la red elástica) tiene la propiedad del oráculo. (Ver Zou (2006).)

Referencias:

18voto

bdeonovic Puntos 2807

Las soluciones LASSO son soluciones que minimizan

$$Q(\beta|X,y) = \dfrac{1}{2n}||y-X\beta||^2 + \lambda\sum_{j}|\beta_j|$$

el LASSO adaptativo simplemente agrega pesos a esto para tratar de contrarrestar el problema conocido de que las estimaciones LASSO están sesgadas.

$$Q_a(\beta|X,y,w) = \dfrac{1}{2n}||y-X\beta||^2 + \lambda\sum_{j}w_j|\beta_j|$$

A menudo verá que $w_j = 1/\tilde{\beta}_j$, donde $\tilde{\beta}_j$ son algunas estimaciones iniciales de $\beta$ (quizás solo usando LASSO, o usando mínimos cuadrados, etc). A veces el LASSO adaptativo se ajusta utilizando un enfoque "por camino" donde el peso se permite cambiar con $\lambda$

$$w_j(\lambda) = w(\tilde{\beta}_j(\lambda))$$. En el paquete $\texttt{glmnet}$ los pesos pueden especificarse con el argumento $\texttt{penalty.factor}$. No estoy seguro si se puede especificar el enfoque "por camino" en $\texttt{glmnet}$.

1 votos

Olvidaste tomar los valores absolutos en los términos de penalización.

0 votos

Pequeña adición: El denominador de los pesos debería ser el $| \beta |^{\gamma}$, $\gamma$ a menudo se establece en 1, pero también podría estimarse utilizando validación cruzada. Además, solo es válido utilizar el $\beta$ obtenido de un estimador consistente de raíz-n (pero tienes razón, LASSO y LS también se pueden usar).

0 votos

Entonces básicamente, glmnet realiza LASSO o red elástica de forma predeterminada, ¿pero puedes cambiar esto a LASSO adaptable (o EN) especificando pesos apropiados? Si este es el caso, ¡gracias un millón!

11voto

El LASSO adaptativo se utiliza para una selección de variables consistente. Los problemas que encontramos al usar el LASSO para la selección de variables son:

  • El parámetro de contracción debe ser mayor para la selección que para la predicción
  • Los parámetros grandes no nulos serán demasiado pequeños para que el sesgo sea demasiado grande
  • Los parámetros pequeños no nulos no se pueden detectar de manera consistente
  • Las altas correlaciones entre predictores conducen a un rendimiento deficiente en la selección

Por lo tanto, el LASSO es consistente solo para la selección de variables bajo algunas condiciones en el parámetro de contracción, los parámetros (condición beta-min) y las correlaciones (condición irrepresentable). Consulta las páginas 101-106 de mi tesis de máster para una explicación detallada.

Frecuentemente, el LASSO incluye demasiadas variables al seleccionar el parámetro de ajuste para la predicción, pero el modelo real es muy probable que sea un subconjunto de estas variables. Esto sugiere usar una etapa secundaria de estimación como el LASSO adaptativo que controla el sesgo de la estimación de LASSO utilizando el parámetro de ajuste óptimo para la predicción. Esto lleva a una selección consistente (o propiedad de oráculo) sin las condiciones mencionadas anteriormente.

Puedes usar glmnet para el LASSO adaptativo. Primero necesitas una estimación inicial, ya sea mínimos cuadrados, ridge o incluso las estimaciones de LASSO, para calcular los pesos. Luego puedes implementar el LASSO adaptativo escalando la matriz X. Aquí tienes un ejemplo utilizando estimaciones iniciales de mínimos cuadrados en los datos de entrenamiento:

# obtener datos
y <- train[, 11]
x <- train[, -11]
x <- as.matrix(x)
n <- nrow(x)

# estandarizar datos
ymean <- mean(y)
y <- y-mean(y)  
xmean <- colMeans(x)
xnorm <- sqrt(n-1)*apply(x,2,sd)
x <- scale(x, center = xmean, scale = xnorm)

# ajustar ols 
lm.fit <- lm(y ~ x)
beta.init <- coef(lm.fit)[-1] # excluir el intercepto 0

# calcular pesos
w  <- abs(beta.init)  
x2 <- scale(x, center=FALSE, scale=1/w)  

# ajustar lasso adaptativo
require(glmnet)
lasso.fit <- cv.glmnet(x2, y, family = "gaussian", alpha = 1, standardize = FALSE, nfolds = 10)
beta <- predict(lasso.fit, x2, type="coefficients", s="lambda.min")[-1]

# calcular estimaciones
beta <- beta * w / xnorm # volver a la escala original
beta <- matrix(beta, nrow=1)
xmean <- matrix(xmean, nrow=10)
b0 <- apply(beta, 1, function(a) ymean - a %*% xmean) # intercepto
coef <- cbind(b0, beta)

0 votos

¿Qué haces si hay ceros en tu beta.init?

0 votos

@ManInMoon Solo tendrás coeficientes cero si utilizas LASSO para encontrar estimaciones iniciales. Excluye las variables que tienen coeficientes cero de la segunda etapa de análisis. Es decir, elimina los datos correspondientes a estas variables de la matriz x y el vector beta.init.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X