Soluzione in forma chiusa al problema del lazo quando la matrice di dati è diagonale


13

Abbiamo il problema:

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

Esiste una soluzione a forma chiusa in questo caso?

Ho questo:

(XTX)1=diag(σ12,...,σd2),
e quindi penso che la risposta sia :
wj=yjmax{0,1λn|yj|},
per yj=i=1nyixijσi2 , ma non ne sono sicuro.

Risposte:


9

Esaminerò la derivazione di @ cardinale della soluzione di lazo in forma chiusa quando , trovato qui , con lievi modifiche.XTX=io

che per tutti . Questo è giustificato perché se abbiamo un questo ci dice che l' colonna di è tutto 0, e penso che sia ragionevole escludere un caso del genere. Ti lascio . Si noti che ciò significa anche che è al completo e che la soluzione OLS è definita in modo univoco.i σ 2 i = 0 i X X T X = D X βσio2>0ioσio2=0ioXXTX=DXβ^

Modificherò anche la tua notazione per adattarla meglio alla risposta a cui mi riferisco. A tal fine, risolverò

β^λ=argminβRp12||Y-Xβ||22+λ||β||1.

Questo è identico al tuo problema, ma posso aggiungere ulteriori dettagli qui se lo desideri.

Seguendo la derivazione di @ cardinale, dobbiamo risolvere

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

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

Notando che la soluzione OLS è , abbiamo quel β À=argmin  - β TDβ+1β^=(XTX)1XTY=D1XTY

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

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

Stiamo ottimizzando su ciascun separatamente, quindi possiamo risolvere ogni termine di questa somma separatamente. Ciò significa che dobbiamo ridurre al minimo dove βjLj

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

Seguendo un argomento completamente analogo alla risposta collegata, troviamo che

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

Inoltre, quindi abbiamo β^=D1XTYβ^j=XjTYσj2

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

quindi si scopre che un predittore viene azzerato esattamente quando sarebbe se la matrice di design fosse ortonormale, non solo ortogonale. Quindi possiamo vedere che in questo caso con , la selezione della variabile non è diversa rispetto a se , ma i coefficienti effettivi sono ridimensionati in base alle varianze del predittore.XjXTX=DIXTX=Iβ^λ

Come nota finale, trasformerò questa soluzione in una simile alla tua, il che significa che dobbiamo moltiplicare per qualcosa per ottenere . Se allora abbiamo quello β^β^λ(β^λ)j0

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

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

poiché .a|a|=sgn(a)

Notando che esattamente quando (β^λ)j=0

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

vediamo che potremmo in alternativa esprimere come β^λ

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

Quindi questo è molto vicino a quello che avevi ma non esattamente lo stesso.

Mi piace sempre controllare le derivazioni come questa rispetto alle librerie ben note, se possibile, quindi ecco un esempio in 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)))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.