LARS gegen Koordinatenabstieg für das Lasso

13

Welche Vor- und Nachteile hat die Verwendung von LARS [1] im Vergleich zur Verwendung der Koordinatenabsenkung für die Anpassung der L1-regulierten linearen Regression?

Ich interessiere mich hauptsächlich für Leistungsaspekte (meine Probleme sind Nin der Regel Hunderttausende und p<20). Es sind jedoch auch andere Erkenntnisse erwünscht.

edit: Seitdem ich die Frage gestellt habe, hat chl freundlicherweise auf einen Artikel [2] von Friedman et al hingewiesen, in dem gezeigt wird, dass die Koordinatenabnahme erheblich schneller ist als bei anderen Methoden. Wenn dies der Fall ist, sollte ich als Praktiker LARS einfach zugunsten des koordinierten Abstiegs vergessen?

[1] Efron, Bradley; Hastie, Trevor; Johnstone, Iain und Tibshirani, Robert (2004). "Least Angle Regression". Annals of Statistics 32 (2): S. 407–499.
[2] Jerome H. Friedman, Rob Tibshirani, Trevor Hastie, "Regularisierungspfade für verallgemeinerte lineare Modelle über Koordinatenabstieg", Journal of Statistical Software, Vol. 3, No. 33, Ausgabe 1, Februar 2010.
NPE
quelle

Antworten:

13

In scikit-learn ist die Implementierung von Lasso mit Koordinatenabstieg in der Regel schneller als unsere Implementierung von LARS, obwohl sie für kleines p (wie in Ihrem Fall) in etwa gleichwertig sind (LARS ist mit den neuesten Optimierungen in der möglicherweise sogar etwas schneller) Master Repo). Darüber hinaus ermöglicht der Koordinatenabstieg die effiziente Implementierung von regulierten Problemen mit elastischen Netzen. Dies ist bei LARS nicht der Fall (das löst nur Lasso, auch bekannt als L1-bestrafte Probleme).

Die Bestrafung durch das elastische Netz führt tendenziell zu einer besseren Verallgemeinerung als Lasso (näher an der Lösung der Kammregression), während die schönen spärlichkeitsinduzierenden Merkmale von Lasso (überwachte Merkmalsauswahl) beibehalten werden.

Für großes N (und großes p, spärlich oder nicht) können Sie auch einen stochastischen Gradientenabstieg (mit L1 oder elastischer Nettostrafung) versuchen (ebenfalls in scikit-learn implementiert).

Bearbeiten : Hier sind einige Benchmarks, die LassoLARS und die Implementierung des Koordinatenabstiegs in Scikit-Learn vergleichen

Oger
quelle
(+1) @ogrisel Vielen Dank! Da ich das wahrscheinlich selbst programmieren muss (brauche es in Java und habe noch keine Open-Source-Java-Implementierungen gesehen), welcher Algorithmus ist Ihrer Meinung nach einfacher zu implementieren?
NPE
1
Sowohl Koordinatenabstieg als auch SGD sind einfach zu implementieren (siehe Leon Bottous Webseite für eine Einführung in SGD). LARS ist wahrscheinlich schwieriger, richtig zu machen.
Ogrisel
Super, danke! Ich werde die Seite von Léon Bottou überprüfen.
NPE
@ogrisel (+1) Schön, dich dort zu sehen.
Chl
2
@aix Ich habe meine Antwort bearbeitet, um einige Benchmarks zu den aktuellen Implementierungen in scikit-learn hinzuzufügen. Schauen Sie sich auch die Java-Version von liblinear an, bevor Sie Ihren eigenen Koordinatenabstieg implementieren, da dies für Sie möglicherweise gut genug ist (obwohl Sie nicht gleichzeitig L1- und L2- Register haben können).
Ogrisel