Qual è il più piccolo


14

Definisci la stima del lazo dove i ^ {th} riga x_i \ in \ mathbb {R} ^ p della matrice di progettazione X \ in \ mathbb {R} ^ {n \ times p} è un vettore di covariate per spiegare la risposta stocastica y_i (per i = 1, \ punti n ).

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

Sappiamo che per λ1nXTy , la stima del lazo β^λ=0 . (Vedi, ad esempio, l' ambito del parametro di ottimizzazione di Lasso e Ridge .) In un'altra notazione, questo sta esprimendo che λmax=1nXTy . Si noti che λmax=supβ^λ0λ.Possiamo vederlo visivamente con la seguente immagine che mostra il percorso della soluzione lazo:

percorso soluzione lazo

Si noti che sul lontano lato destro della trama, tutti i coefficienti sono pari a zero. Questo accade nel punto λmax sopra descritto.

Da questa trama, notiamo anche che all'estrema sinistra, tutti i coefficienti sono diversi da zero: qual è il valore di a cui ogni componente di è inizialmente zero? Cioè, qual è uguale a, in funzione di e ? Sono interessato a una soluzione a forma chiusa. In particolare, non mi interessa una soluzione algoritmica, come, ad esempio, suggerire che LARS potrebbe trovare il nodo attraverso il calcolo.ß À À min = min jλβ^λXy

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

Nonostante i miei interessi, sembra che potrebbe non essere disponibile in forma chiusa, poiché, altrimenti, i pacchetti di calcolo lazo ne trarrebbero probabilmente vantaggio quando determinano la profondità del parametro tuning durante la validazione incrociata. Alla luce di ciò, sono interessato a tutto ciò che può essere teoricamente mostrato su e (ancora) particolarmente interessato a una forma chiusa. λ m i nλminλmin


Ciò è affermato e dimostrato nel documento glmnet
Matthew Drury,

@MatthewDrury Grazie per averlo condiviso! Tuttavia, questo documento non sembra condividere ciò che sembra suggerire che facciano. In particolare, nota che il mio è il loro . λ minλmaxλmin
user795305,

Sei sicuro che abbiamo bisogno del tag [tuning-parameter]?
ameba dice Ripristina Monica il

1
hai ragione, in genere non esiste un modulo chiuso per la soluzione lazo (vedi stats.stackexchange.com/questions/174003/… ). tuttavia, almeno lars ti dice cosa sta succedendo e in quali condizioni esatte / in quale momento puoi aggiungere / eliminare una variabile. penso che qualcosa del genere sia il meglio che puoi ottenere.
CHRRR

1
@chRrr Non sono sicuro che sia del tutto giusto dire: sappiamo che per . Cioè, nel caso estremo in cui la soluzione sia 0, abbiamo una forma chiusa. Sto chiedendo se simile è vero nel caso estremo in cui la stima del lazo fosse densa (cioè senza zeri). In effetti, non sono nemmeno interessato alle voci esatte di --- solo se sono zero o no. À1β^λ=0 ß Àλ1nXtyβ^λ
user795305

Risposte:


15

La stima del lazo descritta nella domanda è l'equivalente del moltiplicatore di lagrange del seguente problema di ottimizzazione:

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

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

Questa ottimizzazione ha una rappresentazione geometrica di trovare il punto di contatto tra una sfera multidimensionale e un politopo (attraversato dai vettori di X). La superficie del politopo rappresenta . Il quadrato del raggio della sfera rappresenta la funzione e viene minimizzato quando le superfici entrano in contatto.g(β)f(β)

Le immagini seguenti forniscono una spiegazione grafica. Le immagini hanno utilizzato il seguente semplice problema con vettori di lunghezza 3 (per semplicità per poter fare un disegno):

[y1y2y3]=[1.41.840.32]=β1[0.80.60]+β2[00.60.8]+β3[0.60.640.48]+[ϵ1ϵ2ϵ3]
e minimizziamo con il vincoloϵ12+ϵ22+ϵ32abs(β1)+abs(β2)+abs(β3)t

Le immagini mostrano:

  • La superficie rossa raffigura il vincolo, un politopo attraversato da X.
  • E la superficie verde raffigura la superficie minimizzata, una sfera.
  • La linea blu mostra il percorso del lazo, le soluzioni che troviamo quando cambiamo o .tλ
  • Il vettore verde mostra la soluzione OLS (che è stata scelta come o .y^β1=β2=β3=1 y =x1+x2+x3y^=x1+x2+x3
  • I tre vettori neri sono , e .x1=(0.8,0.6,0)x2=(0,0.6,0.8)x3=(0.6,0.64,0.48)

Mostriamo tre immagini:

  1. Nella prima immagine solo un punto del politopo tocca la sfera . Questa immagine dimostra molto bene perché la soluzione lazo non è solo un multiplo della soluzione OLS. La direzione della soluzione OLS si aggiunge alla somma . In questo caso, solo un singolo è diverso da zero.|β|1βi
  2. Nella seconda immagine una cresta del politopo tocca la sfera (in dimensioni superiori otteniamo analoghi di dimensione superiore). In questo caso più sono diversi da zero.βi
  3. Nella terza immagine una sfaccettatura del politopo tocca la sfera . In questo caso tutti i sono diversi da zeroβi .

L'intervallo di o per cui abbiamo il primo e il terzo caso può essere facilmente calcolato grazie alla loro semplice rappresentazione geometrica.tλ

Caso 1: solo un singolo diverso da zeroβi

Il valore diverso da zero è quello per cui il vettore associato ha il valore assoluto più alto della covarianza con (questo è il punto del parrallelotope che si avvicina alla soluzione OLS). Possiamo calcolare il moltiplicatore di Lagrange sotto del quale abbiamo almeno un diverso da zero prendendo la derivata conβixiy λ m un x β ± β i β iy^λmaxβ±βi (il segno dipende dal fatto che aumentiamo il in direzione negativa o positiva):βi

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

che porta a

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

che equivale a||XTy|| menzionato nei commenti.

dove dovremmo notare che questo è vero solo per il caso speciale in cui la punta del politopo tocca la sfera ( quindi questa non è una soluzione generale , sebbene la generalizzazione sia semplice).

Caso 3: Tuttiβi sono diversi da zero.

In questo caso, una sfaccettatura del politopo tocca la sfera. Quindi la direzione del cambiamento del percorso lazo è normale alla superficie della particolare sfaccettatura.

Il polytope ha molte sfaccettature, con contributi positivi e negativi di . Nel caso dell'ultimo passaggio del lazo, quando la soluzione del lazo è vicina alla soluzione ols, i contributi di devono essere definiti dal segno della soluzione OLS. La normale della faccetta può essere definita prendendo il gradiente della funzione , il valore della somma di beta nel punto , che è:xixi||β(r)||1r

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

e il cambio equivalente di beta per questa direzione è:

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

che dopo alcuni trucchi algebrici con spostamento dei trasposi ( ) e la distribuzione delle parentesi diventaATBT=[BA]T

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

normalizziamo questa direzione:

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

Per trovare ilλmin sotto il quale tutti i coefficienti sono diversi da zero. Dobbiamo solo tornare dalla soluzione OLS al punto in cui uno dei coefficienti è zero,

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

e a questo punto valutiamo la derivata (come prima quando calcoliamo ). Usiamo che per una funzione quadratica abbiamo :λmaxq(x)=2q(1)x

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

immagini

un punto del politopo tocca la sfera, un singolo è diverso da zero:βi

primo passo del percorso lazo

una cresta (o differire in più dimensioni) del politopo tocca la sfera, molti sono diversi da zero:βi

mezzo del percorso lazo

una sfaccettatura del politopo tocca la sfera, tutti i sono diversi da zero:βi

passaggio finale del percorso lazo

Esempio di codice:

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: queste ultime tre righe sono le più importanti

> 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

Scritto da StackExchangeStrike


Grazie per aver incluso le modifiche! Finora nella mia lettura, sono bloccato appena oltre la sottosezione "caso 1". Il risultato per derivato è errato poiché non include un valore assoluto o un massimo. Sappiamo, inoltre, che ci sia un errore, in quanto nella derivazione, c'è un errore segno, un luogo in cui differenziabilita è erroneamente assunto, una "scelta arbitraria" differenziare rispetto a, e un modo non corretto valutati derivato. Ad essere sinceri, non esiste un segno " " valido. λmaxi=
user795305,

L'ho corretto con un segno meno. Il cambio della beta può essere positivo o negativo. Riguardo alla massima e "scelta arbitraria" ... "per la quale il vettore associato ha la più alta covarianza con "xiy^
Sisto Empirico

Grazie per l'aggiornamento! Tuttavia, ci sono ancora problemi. Ad esempio, viene valutato in modo errato. βioy-Xβ22
user795305,

Se allora questa correlazione entra nell'equazione perché, se s = 0 allora solo il cambiamento di tangente a sta cambiando la lunghezza del vettoreβ=0βi||yXβ||22
=||yXβ||2βi2||yXβ||2
=2cor(xi,y)| | xi| | 2| | y| | 2=2xiysxiyy-sxi
=||ysxi||2s2||yXβ||2
=2cor(Xio,y)||Xio||2||y||2
=2Xioy
SXioyy-SXio
Sisto Empirico

Ah, va bene, quindi c'è un limite nella tua discussione! (Stai usando entrambi e che un coefficiente è diverso da zero.) Inoltre, la seconda uguaglianza nella linea con è fuorviante poiché il segno potrebbe cambiare a causa della differenziazione del valore assoluto. λ maxβ=0λmax
user795305,
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.