LARS vs zejście współrzędnych dla lasso

13

Jakie są zalety i wady korzystania z LARS [1] w porównaniu ze stosowaniem opadania współrzędnych w celu dopasowania regresji liniowej regulowanej przez L1?

Interesują mnie głównie aspekty wydajności (moje problemy występują zwykle Nw setkach tysięcy i p<20). Jednak wszelkie inne spostrzeżenia byłyby również mile widziane.

edytuj: Od kiedy opublikowałem pytanie, chl uprzejmie zwrócił uwagę na artykuł [2] Friedmana i in., w którym wykazano, że zejście współrzędnych jest znacznie szybsze niż inne metody. Jeśli tak jest, czy powinienem jako praktykujący po prostu zapomnieć o LARS na rzecz zejścia ze współrzędnymi?

[1] Efron, Bradley; Hastie, Trevor; Johnstone, Iain i Tibshirani, Robert (2004). „Regresja najmniejszego kąta”. Annals of Statistics 32 (2): s. 407–499.
[2] Jerome H. Friedman, Trevor Hastie, Rob Tibshirani, „Ścieżki regularyzacji uogólnionych modeli liniowych poprzez zejście współrzędnych”, Journal of Statistics Software, tom. 33, wydanie 1, luty 2010 r.
NPE
źródło

Odpowiedzi:

13

W scikit-learn implementacja Lasso ze zejściem współrzędnych jest zwykle szybsza niż nasza implementacja LARS, chociaż dla małych p (jak w twoim przypadku) są one w przybliżeniu równoważne (LARS może być nawet nieco szybszy z najnowszymi optymalizacjami dostępnymi w master repo). Ponadto zejście współrzędnych pozwala na skuteczne wdrożenie problemów z regulowaną siatką elastyczną. Nie dotyczy to LARS (który rozwiązuje tylko problemy Lasso, zwane także problemami karnymi L1).

Kary za elastyczną siatkę dają lepsze uogólnienie niż Lasso (bliższe rozwiązaniu regresji grzbietu) przy jednoczesnym zachowaniu ładnych cech Lasso indukujących rzadkość (nadzorowany wybór funkcji).

W przypadku dużego N (i dużego p, rzadkiego lub nie) możesz również spróbować stochastycznego spadku (z L1 lub elastyczną karą netto) próbę (zaimplementowaną również w scikit-learn).

Edycja : oto kilka testów porównujących LassoLARS i implementację opadania współrzędnych w scikit-learn

ogrisel
źródło
(+1) @ogrisel Wielkie dzięki! Ponieważ prawdopodobnie skończę musiałbym sam to kodować (potrzebuję go w Javie i nie widziałem jeszcze żadnych implementacji Java typu open source), który algorytm, twoim zdaniem, jest łatwiejszy do wdrożenia?
NPE
1
zarówno opadanie współrzędnych, jak i SGD są łatwe do zaimplementowania (sprawdź stronę Leona Bottou, aby uzyskać dobre wprowadzenie do SGD). LARS jest prawdopodobnie trudniejszy do zrobienia.
ogrisel
Super, dzięki! Zajrzę do strony Léona Bottou.
NPE
@ogrisel (+1) Miło cię tam widzieć.
chl
2
@ aix Zredagowałem swoją odpowiedź, aby dodać testy porównawcze do bieżących implementacji w scikit-learn. Sprawdź także wersję liblinear w Javie przed wdrożeniem własnego zejścia ze współrzędnymi, ponieważ może być dla ciebie wystarczająco dobry (chociaż nie możesz mieć jednocześnie rejestrów L1 i L2 w tym samym czasie).
ogrisel