Come applicare il metodo IRLS (Least Squares Squares Squares) al modello LASSO?


12

Ho programmato una regressione logistica usando l' algoritmo IRLS . Vorrei applicare una penalità LASSO per selezionare automaticamente le funzionalità giuste. Ad ogni iterazione, viene risolto quanto segue:

(XTWX)δβ^=XT(yp)

Sia un numero reale non negativo. Non sto penalizzando l'intercettazione come suggerito in The Elements of. Apprendimento statistico . Idem per i coefficienti già zero. Altrimenti, sottraggo un termine dal lato destro:λ

XT(yp)λ×sign(β^)

Tuttavia, non sono sicuro della modifica dell'algoritmo IRLS. È il modo giusto di fare?


Modifica: anche se non ero fiducioso, ecco una delle soluzioni che ho finalmente trovato. La cosa interessante è che questa soluzione corrisponde a ciò che ora capisco di LASSO. Ci sono infatti due passaggi per ogni iterazione anziché solo uno:

  • il primo passo è lo stesso di prima: facciamo un'iterazione dell'algoritmo (come se nella formula per il gradiente sopra),λ=0
  • il secondo passo è quello nuovo: applichiamo una soglia minima a ciascun componente (ad eccezione del componente , che corrisponde all'intercettazione) del vettore ottenuto al primo passo. Questo è chiamato algoritmo iterativo a soglia moderata . ββ0β

i1,βisign(βi)×max(0,|βi|λ)

Non è stato ancora possibile ottenere una migliore convergenza adattando IRLS. : '(
Wok,

Risposte:


12

Questo problema è in genere risolto adattandosi per discesa delle coordinate ( vedi qui ). Questo metodo è sia più sicuro dal punto di vista numerico, sia algoritmicamente più semplice da implementare e applicabile a una gamma più generale di modelli (inclusa anche la regressione di Cox). Un'implementazione R è disponibile nel pacchetto R glmnet . I codici sono open source (in parte in e in C, in parte in R), quindi puoi usarli come progetti.


@wok Da notare, il pacchetto scikit.learn offre anche un'implementazione efficiente in Python per questo tipo di cose.
chl

L'algoritmo di discesa delle coordinate è interessante. Grazie. Ci sto ancora pensando.
Wok,

5

La funzione di perdita LASSO ha una discontinuità pari a zero lungo ciascun asse, quindi IRLS avrà dei problemi. Ho trovato molto efficace un approccio sequenziale di ottimizzazione minima (SMO), vedi ad es

http://bioinformatics.oxfordjournals.org/content/19/17/2246

una versione con il software MATLAB è

http://bioinformatics.oxfordjournals.org/content/22/19/2348

il software è disponibile qui:

http://theoval.cmp.uea.ac.uk/~gcc/cbl/blogreg/

L'idea di base è ottimizzare i coefficienti uno alla volta e testare per vedere se si attraversa la discontinuità un coefficiente alla volta, il che è semplice poiché si sta realizzando un'ottimizzazione scalare. Può sembrare lento, ma in realtà è piuttosto efficiente (anche se mi aspetto che da allora siano stati sviluppati algoritmi migliori - probabilmente da Keerthi o Chih-Jen Lin che sono entrambi i principali esperti in quel genere di cose).


Grazie. Lo sto leggendo e ci sto pensando. Tuttavia, questa sarebbe un'enorme modifica dell'algoritmo attuale.
Wok,

4

È possibile controllare il documento: efficiente regressione logistica regolarizzata L1, che è un algoritmo basato su IRLS per LASSO. Per quanto riguarda l'implementazione, il link potrebbe essere utile per te (http://ai.stanford.edu/~silee/softwares/irlslars.htm).


0

L'IRLS per il problema LASSO è il seguente:

argminx12Axb22+λx1=argminx12Axb22+λxTWx

Dove è una matrice diagonale - . Questo viene da .WWi,i=1|xi|
x1=i|xi|=ixi2|xi|

Ora, quanto sopra è solo la regolarizzazione di Tikhonov .
Tuttavia, poiché dipende da necessario risolverlo iterativamente (Anche questo annulla il fattore 2 nella regolarizzazione di Tikhonov, poiché la derivata di rispetto a mentre si tiene come costante è che equivale a ):WxxTWxxxdiag(sign(x))Wx

xk+1=(ATA+λWk)1ATb

Dove .Wi,iK=1|xik|

Inizializzazione può essere da .W=I

Prestare attenzione a non funzionare bene con valori elevati di e utilizzare meglio ADMM o Coordinate Descent.λ

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.