¿Cuál es el más pequeño que da un componente 0 en el lazo?

14

Defina la estimación del lazo donde la i ^ {th} fila x_i \ in \ mathbb {R} ^ p de la matriz de diseño X \ in \ mathbb {R} ^ {n \ times p} es un vector de covariables para explicar la respuesta estocástica y_i (para i = 1, \ puntos n ).

β^λ=argminβRp12nyXβ22+λβ1,
ithxiRpXRn×pyii=1,n

Sabemos que para λ1nXTy , la estimación del lazo β^λ=0 . (Véase, por ejemplo, el alcance del parámetro de ajuste Lasso y Ridge .) En otra notación, esto expresa que λmax=1nXTy . Observe que λmax=supβ^λ0λ.Podemos ver esto visualmente con la siguiente imagen que muestra la ruta de la solución de lazo:

camino de solución de lazo

Observe que en el extremo derecho de la gráfica, todos los coeficientes son cero. Esto sucede en el punto λmax descrito anteriormente.

En este gráfico, también notamos que en el extremo izquierdo, todos los coeficientes son distintos de cero: ¿cuál es el valor de en el que cualquier componente de es inicialmente cero? Es decir, ¿cuál es igual a, en función de e ? Estoy interesado en una solución de forma cerrada. En particular, no estoy interesado en una solución algorítmica, como, por ejemplo, sugerir que LARS podría encontrar el nudo a través del cálculo.λβ^λ

λmin=minjs.t.β^j=0λ
Xy

A pesar de mis intereses, parece que puede no estar disponible en forma cerrada, ya que, de lo contrario, los paquetes computacionales de lazo probablemente lo aprovecharían al determinar la profundidad del parámetro de ajuste durante la validación cruzada. A la luz de esto, estoy interesado en todo lo que teóricamente se pueda mostrar sobre y (todavía) particularmente interesado en una forma cerrada.λminλmin

usuario795305
fuente
Esto se afirma y se prueba en el documento de glmnet
Matthew Drury el
@MatthewDrury ¡Gracias por compartir esto! Sin embargo, este documento no parece compartir lo que parece sugerir que hagan. En particular, observe que mi es su . λmaxλmin
user795305
¿Estás seguro de que necesitamos la etiqueta [parámetro de ajuste]?
ameba dice Reinstate Monica
1
usted es un derecho, en general no existe un formulario cerrado para la solución de lazo (consulte stats.stackexchange.com/questions/174003/… ). sin embargo, al menos le dice qué está sucediendo y en qué condiciones exactas / en qué momento puede agregar / eliminar una variable. Creo que algo como esto es lo mejor que puedes conseguir.
chRrr
1
@chRrr No estoy seguro de que sea completamente justo decir: sabemos que para . Es decir, en el caso extremo de que la solución sea 0, tenemos una forma cerrada. Me pregunto si similar es cierto en el caso extremo de que la estimación del lazo sea densa (es decir, sin ceros). De hecho, ni siquiera estoy interesado en las entradas exactas de --- solo si son cero o no. β^λ=0λ1nXtyβ^λ
user795305

Respuestas:

15

La estimación del lazo descrita en la pregunta es el equivalente multiplicador lagrange del siguiente problema de optimización:

minimize f(β) subject to g(β)t

f(β)=12n||yXβ||22g(β)=||β||1

Esta optimización tiene una representación geométrica de encontrar el punto de contacto entre una esfera multidimensional y un politopo (abarcado por los vectores de X). La superficie del politopo representa . El cuadrado del radio de la esfera representa la función y se minimiza cuando las superficies entran en contacto.g(β)f(β)

Las imágenes a continuación proporcionan una explicación gráfica. Las imágenes utilizaron el siguiente problema simple con vectores de longitud 3 (por simplicidad para poder hacer un dibujo):

[y1y2y3]=[1.41.840.32]=β1[0.80.60]+β2[00.60.8]+β3[0.60.640.48]+[ϵ1ϵ2ϵ3]
y minimizamos con la restricciónϵ12+ϵ22+ϵ32abs(β1)+abs(β2)+abs(β3)t

Las imágenes muestran:

  • La superficie roja representa la restricción, un politopo atravesado por X.
  • Y la superficie verde representa la superficie minimalizada, una esfera.
  • La línea azul muestra el camino del lazo, las soluciones que encontramos a medida que cambiamos o .tλ
  • El vector verde muestra la solución OLS (que se eligió como o .y^β1=β2=β3=1y^=x1+x2+x3
  • Los tres vectores negros son , y .x1=(0.8,0.6,0)x2=(0,0.6,0.8)x3=(0.6,0.64,0.48)

Te mostramos tres imágenes:

  1. En la primera imagen, solo un punto del politopo toca la esfera . Esta imagen demuestra muy bien por qué la solución de lazo no es solo un múltiplo de la solución OLS. La dirección de la solución OLS agrega más fuerza a la suma . En este caso, solo un no es cero.|β|1βi
  2. En la segunda imagen, una cresta del politopo toca la esfera (en dimensiones más altas obtenemos análogos dimensionales más altos). En este caso, múltiples no son cero.βi
  3. En la tercera imagen, una faceta del politopo está tocando la esfera . En este caso, todos los son distintos de ceroβi .

El rango de o para el que tenemos el primer y el tercer caso se puede calcular fácilmente debido a su representación geométrica simple.tλ

Caso 1: solo un distinto de ceroβi

El distinto de cero es aquel para el que el vector asociado tiene el valor absoluto más alto de la covarianza con (este es el punto del paralelelopopo más cercano a la solución OLS). Podemos calcular el multiplicador de Lagrange debajo del cual tenemos al menos un distinto de cero tomando la derivada con (el signo depende de si aumentamos el en dirección negativa o positiva):βixiy^λmaxβ±βiβi

(12n||yXβ||22λ||β||1)±βi=0

lo que lleva a

λmax=(12n(||yXβ||22±βi)(||β||1)±βi)=±(12n||yXβ||22βi=±1nxiy

que es igual a mencionado en los comentarios.||XTy||

donde deberíamos notar que esto solo es cierto para el caso especial en el que la punta del politopo está tocando la esfera ( por lo que esta no es una solución general , aunque la generalización es sencilla).

Caso 3: Todos no son cero.βi

En este caso, una faceta del politopo está tocando la esfera. Entonces, la dirección de cambio de la ruta del lazo es normal a la superficie de la faceta particular.

El politopo tiene muchas facetas, con contribuciones positivas y negativas de . En el caso del último paso del lazo, cuando la solución del lazo está cerca de la solución ols, entonces las contribuciones de deben definirse mediante el signo de la solución OLS. La normalidad de la faceta se puede definir tomando el gradiente de la función , el valor de la suma de beta en el punto , que es:xixi||β(r)||1r

n=r(||β(r)||1)=r(sign(β^)(XTX)1XTr)=sign(β^)(XTX)1XT

y el cambio equivalente de beta para esta dirección es:

βlast=(XTX)1Xn=(XTX)1XT[sign(β^)(XTX)1XT]

que después de algunos trucos algebraicos con el desplazamiento de las transposiciones ( ) y la distribución de paréntesis se convierte enATBT=[BA]T

βlast=(XTX)1sign(β^)

normalizamos esta dirección:

βlast,normalized=βlastβlastsign(β^)

Para encontrar el por debajo del cual todos los coeficientes son distintos de cero. Solo tenemos que volver a calcular desde la solución OLS hasta el punto donde uno de los coeficientes es cero,λmin

d=min(β^βlast,normalized)with the condition that β^βlast,normalized>0

, y en este punto evaluamos la derivada (como antes cuando calculamos ). Usamos eso para una función cuadrática tenemos :λmaxq(x)=2q(1)x

λmin=dn||Xβlast,normalized||22

Imágenes

un punto del politopo toca la esfera, un solo no es cero:βi

primer paso del camino del lazo

una cresta (o diferencia en varias dimensiones) del politopo está tocando la esfera, muchos no son cero:βi

medio del camino del lazo

una faceta del politopo está tocando la esfera, todos no son cero:βi

paso final del camino del lazo

Ejemplo de código:

library(lars)    
data(diabetes)
y <- diabetes$y - mean(diabetes$y)
x <- diabetes$x

# models
lmc <- coef(lm(y~0+x))
modl <- lars(diabetes$x, diabetes$y, type="lasso")

# matrix equation
d_x <- matrix(rep(x[,1],9),length(x[,1])) %*% diag(sign(lmc[-c(1)]/lmc[1]))
x_c = x[,-1]-d_x
y_c = -x[,1]

# solving equation
cof <- coefficients(lm(y_c~0+x_c))
cof <- c(1-sum(cof*sign(lmc[-c(1)]/lmc[1])),cof)

# alternatively the last direction of change in coefficients is found by:
solve(t(x) %*% x) %*% sign(lmc)

# solution by lars package
cof_m <-(coefficients(modl)[13,]-coefficients(modl)[12,])

# last step
dist <- x %*% (cof/sum(cof*sign(lmc[])))
#dist_m <- x %*% (cof_m/sum(cof_m*sign(lmc[]))) #for comparison

# calculate back to zero
shrinking_set <- which(-lmc[]/cof>0)  #only the positive values
step_last <- min((-lmc/cof)[shrinking_set])

d_err_d_beta <- step_last*sum(dist^2)

# compare
modl[4] #all computed lambda
d_err_d_beta  # lambda last change
max(t(x) %*% y) # lambda first change
enter code here

nota: esas tres últimas líneas son las más importantes

> modl[4]            # all computed lambda by algorithm
$lambda
 [1] 949.435260 889.315991 452.900969 316.074053 130.130851  88.782430  68.965221  19.981255   5.477473   5.089179
[11]   2.182250   1.310435

> d_err_d_beta       # lambda last change by calculating only last step
    xhdl 
1.310435 
> max(t(x) %*% y)    # lambda first change by max(x^T y)
[1] 949.4353

Escrito por StackExchangeStrike

Sexto empírico
fuente
Gracias por incluir las ediciones! Hasta ahora en mi lectura, estoy atrapado más allá de la subsección "caso 1". El resultado para derivado allí es incorrecto ya que no incluye un valor absoluto o un máximo. Sabemos además que hay un error ya que en la derivación, hay un error de signo, un lugar donde se supone erróneamente la diferenciabilidad, una "elección arbitraria" de para diferenciar con respecto a, y una derivada evaluada incorrectamente. Para ser sincero, no hay un signo " " que sea válido. λmaxyo=
user795305
Lo he corregido con un signo más menos. El cambio de la beta puede ser positivo o negativo. Con respecto al máximo y "elección arbitraria" ... "para el cual el vector asociado tiene la covarianza más alta con "xiy^
Sextus Empiricus
¡Gracias por la actualización! Sin embargo, todavía hay problemas. Por ejemplo, se evalúa incorrectamente. βyoy-Xβ22
usuario795305
Si entonces esta correlación entra en la ecuación porque, si s = 0, entonces solo el cambio de tangente a está cambiando la longitud del vectorβ=0βi||yXβ||22
=||yXβ||2βi2||yXβ||2
=||ysxi||2s2||yXβ||2
=2cor(xi,y)||xi||2||y||2
=2xiy
sxiyysxi
Sextus Empiricus
Ah, está bien, ¡hay un límite involucrado en tu argumento! (Está utilizando tanto como que un coeficiente es distinto de cero). Además, la segunda igualdad en la línea con es engañosa ya que el signo podría cambiar debido a la diferenciación del valor absoluto. β=0 0λmax
user795305