Solución de forma cerrada al problema de lazo cuando la matriz de datos es diagonal

13

Tenemos el problema: suponiendo que: \ sum_ {i = 1} ^ nx_ix_i ^ T = \ diag (\ sigma_1 ^ 2, ..., \ sigma_d ^ 2).

minwRd(1ni=1n(w,xiyi)2+2λ||w||1),
i=1nxixiT=diag(σ12,...,σd2).

¿Existe una solución de forma cerrada en este caso?

Tengo eso:

(XTX)1=diag(σ12,...,σd2),
y creo que la respuesta es :
wj=yjmax{0,1λn|yj|},
para yj=i=1nyixijσi2 , pero no estoy seguro.
Arthur D.
fuente

Respuestas:

9

Voy a pasar por la derivación de @ cardinal de la solución de lazo de forma cerrada cuando XTX=I , que se encuentra aquí , con modificaciones menores.

Asumiré que σi2>0 para todo i . Esto se justifica porque si tenemos un σi2=0 entonces esto nos dice que la i ésima columna de X es todo 0, y creo que es razonable excluir ese caso. Voy a dejar que XTX=D . Tenga en cuenta que esto también significa que X es rango completo y la solución OLS está definida de forma única.β^

También voy a modificar su notación para que coincida mejor con la respuesta a la que me refiero. Con ese fin, resolveré

β^λ=argminβRp12||YXβ||22+λ||β||1.

Esto es idéntico a su problema, pero puedo agregar más detalles aquí si lo desea.

Siguiendo la derivación de @ cardinal, tenemos que tenemos que resolver

β^λ=argmin 12(YTY2YTXβ+βTXTXβ)+λ||β||1

=argmin YTXβ+12βTDβ+λ||β||1.

Teniendo en cuenta que la solución OLS es , tenemos que β lambda=argmin  - β TDβ+1β^=(XTX)1XTY=D1XTY

β^λ=argmin β^TDβ+12βTDβ+λ||β||1

=argmin j=1pβ^jβjσj2+σj22βj2+λ|βj|.

Estamos optimizando cada separado, por lo que podemos resolver cada término de esta suma por separado. Esto significa que debemos minimizar donde βjLj

Lj=β^jβjσj2+σj22βj2+λ|βj|.

Siguiendo un argumento completamente análogo a la respuesta vinculada, encontramos que

(β^λ)j=sgn(β^j)(|β^j|λσj2)+.

Además, así que tenemos ese β^=D1XTYβ^j=XjTYσj2

(|β^j|λσj2)+=1σj2(|XjTY|λ)+

entonces resulta que un predictorXj se pone a cero exactamente cuando lo haría si la matriz de diseño fuera ortonormal, no solo ortogonal. Entonces podemos ver que en este caso con , la selección de la variable no es diferente a si , pero los coeficientes reales se escalan de acuerdo con las variaciones del predictor.XTX=DIXTX=Iβ^λ

Como nota final, convertiré esta solución en una que se parezca a la suya, lo que significa que debemos multiplicar por algo para obtenerβ^β^λ . Si entonces tenemos que (β^λ)j0

(β^λ)j=sgn(β^j)(|β^j|λσj2)=β^jsgn(β^j)λσj2

=β^j(1λσj2|β^j|)

desde .a|a|=sgn(a)

Señalando que (β^λ)j=0 exactamente cuando

|β^j|λσj20|β^j|λσj21λσj2|β^j|1λσj2|β^j|0,

vemos que alternativamente podríamos expresar β^λ como

(β^λ)j=β^j(1λσj2|β^j|)+.

Así que esto está muy cerca de lo que tenía, pero no exactamente lo mismo.

Siempre me gusta verificar derivaciones como esta con bibliotecas conocidas si es posible, así que aquí hay un ejemplo en R:

## generating `x`
set.seed(1)
n = 1000
p = 5
sigma2s = 1:p
x = svd(matrix(rnorm(n * p), n, p))$u %*% diag(sqrt(sigma2s))

## check this
# t(x) %*% x

## generating `y`
betas = 1:p
y = x %*% betas + rnorm(nrow(x), 0, .5)

lambda = 2

## using a well-known library to fit lasso
library(penalized)
penalized(y, x, lambda1 = lambda)@penalized


## using closed form solution
betahat = lm(y ~ x - 1)$coef
ifelse(betahat > 0, 1, -1) * sapply(abs(betahat) - lambda / sigma2s, function(v) max(c(0, v)))
jld
fuente