LARS vs discesa delle coordinate per il lazo


13

Quali sono i pro e i contro dell'utilizzo di LARS [1] rispetto all'utilizzo della discesa delle coordinate per l'adattamento della regressione lineare regolarizzata L1?

Sono principalmente interessato agli aspetti prestazionali (i miei problemi tendono ad avere Ntra le centinaia di migliaia e p<20). Tuttavia, anche altre intuizioni sarebbero apprezzate.

modifica: Da quando ho pubblicato la domanda, chl ha gentilmente sottolineato un articolo [2] di Friedman et al. In tal caso, come praticante dovrei semplicemente dimenticare LARS a favore della discesa coordinata?

[1] Efron, Bradley; Hastie, Trevor; Johnstone, Iain e Tibshirani, Robert (2004). "Regressione del minimo angolo". Annali delle statistiche 32 (2): pagg. 407–499.
[2] Jerome H. Friedman, Trevor Hastie, Rob Tibshirani, "Percorsi di regolarizzazione per modelli lineari generalizzati tramite discesa coordinata", Journal of Statistical Software, Vol. 33, Numero 1, febbraio 2010.

Risposte:


13

In scikit-impara l'implementazione di Lasso con discesa coordinata tende ad essere più veloce della nostra implementazione di LARS anche se per i piccoli p (come nel tuo caso) sono approssimativamente equivalenti (LARS potrebbe anche essere un po 'più veloce con le ultime ottimizzazioni disponibili nella master repo). Inoltre, la discesa coordinata consente un'attuazione efficiente dei problemi regolarizzati della rete elastica. Questo non è il caso di LARS (che risolve solo i problemi penalizzati di Lasso, ovvero L1).

La penalizzazione della rete elastica tende a produrre una generalizzazione migliore rispetto a Lazo (più vicino alla soluzione della regressione della cresta) mantenendo allo stesso tempo la piacevole scarsità che induce le caratteristiche di Lazo (selezione di funzioni supervisionate).

Per N grande (e grande p, sparsa o no) potresti anche dare una discesa gradiente stocastica (con L1 o penalità della rete elastica) (anche implementata in scikit-learn).

Modifica : ecco alcuni parametri di riferimento che confrontano LassoLARS e l'implementazione della coordinata della discesa in scikit-learn


(+1) @ogrisel Grazie mille! Dato che probabilmente finirò per doverlo codificare da solo (ne ho bisogno in Java e non ho ancora visto implementazioni Java open source), quale algoritmo diresti che è più facile da implementare?
NPE,

1
entrambe le coordinate di discesa e SGD sono facili da implementare (controlla la pagina Web di Leon Bottou per una bella introduzione a SGD). LARS è probabilmente più complicato da ottenere.
Ogrisel,

Superbo, grazie! Controllerò il sito di Léon Bottou.
NPE,

@ogrisel (+1) Piacere di vederti lì.
chl,

2
@aix Ho modificato la mia risposta per aggiungere alcuni parametri di riferimento sulle attuali implementazioni in scikit-learn. Controlla anche la versione java di liblinear prima di implementare la tua discesa delle coordinate in quanto potrebbe essere abbastanza buona per te (anche se non puoi avere sia L1 che L2 reg allo stesso tempo).
Ogrisel,
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.