GLMNET czy LARS do obliczania rozwiązań LASSO?


13

Chciałbym uzyskać współczynniki dla problemu LASSO

||YXβ||+λ||β||1.

Problem polega na tym, że funkcje glmnet i lars dają różne odpowiedzi. Dla funkcji glmnet proszę o współczynniki λ/||Y||zamiast po prostu λ , ale wciąż otrzymuję różne odpowiedzi.

Czy jest to oczekiwane? Jaki jest związek między lars λ a glmnet λ ? Rozumiem, że glmnet jest szybszy w przypadku problemów z LASSO, ale chciałbym wiedzieć, która metoda jest bardziej wydajna?


deps_stats Obawiam się, że rozmiar mojego zestawu danych jest tak duży, że LARS nie może go obsłużyć, podczas gdy z drugiej strony glmnet może obsłużyć mój duży zestaw danych.

mpiktas Chcę znaleźć rozwiązanie (Y-Xb) ^ 2 + L \ sum | b_j | ale kiedy pytam z dwóch algorytmów (lars i glmnet) o ich obliczone współczynniki dla tego konkretnego L, otrzymuję różne odpowiedzi ... i zastanawiam się, czy to jest poprawne / oczekiwane? lub po prostu używam złej lambda dla dwóch funkcji.


1
podaj przykład ilustrujący twój problem. W jaki sposób definiujesz moc algorytmu?
mpiktas,

1
Użyłem pakietów glmnet i lars w kilku projektach. Z mojego ograniczonego doświadczenia miałem wiele problemów z implementacją glmnet. Myślę, że glmnet potrzebuje poprawek błędów dotyczących typu zmiennych używanych w ramce danych. Poza tym glmnet ma mylącą dokumentację. Skończyło się na użyciu larsa i byłem bardzo zadowolony z rezultatów. Nieważne, jak duży jest twój problem, myślę, że lars sobie z tym poradzi.
deps_stats

„Problem polega na tym, że funkcje glmnet i lars dają różne odpowiedzi”. mam ten sam problem. Jakieś odpowiedzi?
przyznają

Drastycznie różne odpowiedzi dla współczynników? I po przeczytaniu oryginalnego postu naprawdę nie powinieneś prosić o jedno rozwiązanie lambda z glmnetimplementacji LARS i prawdopodobnie nie. Zapewniają całą gamę rozwiązań wzdłuż spektrum odchylenia względem wariancji. Co utrudnia porównanie faktycznych współczynników. Ale nadal te same zmienne powinny prawdopodobnie stać się niezerowe w podobnej kolejności.
Shea Parkes,

Odpowiedzi:


14

Z mojego doświadczenia wynika, że ​​LARS jest szybszy w przypadku drobnych problemów, bardzo rzadkich problemów lub bardzo „szerokich” problemów (znacznie więcej funkcji niż próbek). Rzeczywiście, jego koszt obliczeniowy jest ograniczony liczbą wybranych funkcji, jeśli nie obliczysz pełnej ścieżki regularyzacji. Z drugiej strony, w przypadku dużych problemów, glmnet (optymalizacja opadania współrzędnych) jest szybszy. Między innymi opadanie współrzędnych ma dobry wzorzec dostępu do danych (przyjazny dla pamięci) i może korzystać z nadmiarowości danych w bardzo dużych zestawach danych, ponieważ jest zbieżny z częściowymi dopasowaniami. W szczególności nie cierpi z powodu silnie skorelowanych zestawów danych.

Wniosek, że my (główni programiści scikit-learn ) również doszliśmy, jest taki, że jeśli nie masz silnej wiedzy a priori na temat swoich danych, powinieneś raczej używać glmnet (lub koordynować optymalizację opadania, aby mówić o algorytmie, a raczej niż wdrożenie).

Ciekawe punkty odniesienia można porównać w pracy dyplomowej Juliena Mairala:

http://www.di.ens.fr/~mairal/resources/pdf/phd_thesis.pdf

Sekcja 1.4, w szczególności 1.4.5 (strona 22)

Julien dochodzi do nieco odmiennych wniosków, chociaż jego analiza problemu jest podobna. Podejrzewam, że dzieje się tak, ponieważ był bardzo zainteresowany bardzo szerokimi problemami.


Większość twoich odpowiedzi jest na CW (tutaj, ale także na metaoptimize.com/qa) ... Czy jest jakiś powód?
chl

1
Ponieważ uważam, że dobrze jest, jeśli ludzie mogą naprawić literówki, nieprawidłowe sformułowania ... Podoba mi się pomysł ciągłego ulepszania odpowiedzi. Czy to wbrew najlepszej praktyce?
Gael Varoquaux,

2
Poprawiłem dwa lub trzy literówki. Nie ma nic wspólnego z CW per se, chyba że myślisz o niższej liczbie powtórzeń wymaganej do edycji twojego postu! Użytkownicy mogą jednak sugerować wszelkie zmiany; ale udzielenie odpowiedzi CW nie pozwoli na uzyskanie od nich reputacji. Myślę, że nie jesteś po przedstawicielu, ale ponieważ twoje odpowiedzi były zawsze trafne, po prostu zastanawiałem się ... Pozdrawiam.
chl

1

LASSO nie jest wyjątkowy w przypadku, gdy wiele funkcji ma idealną kolinearność. Oto prosty eksperyment myślowy, aby to udowodnić.

Załóżmy, że masz trzy losowe wektory , , . Próbujesz przewidzieć podstawie , . Załóżmy teraz, że = = . Optymalnym rozwiązaniem LASSO byłoby , , gdzie jest skutkiem kary LASSO. Jednak optymalna będzie również , .x 1 x 2 y x 1 x 2 y x 1 x 2 β 1 = 1 - P β 2 = 0 P β 1 = 0 β 2 - 1 - Pyx1x2yx1x2yx1x2β1=1Pβ2=0Pβ1=0β21P


2
@dsmcha, przykro mi to mówić, ale nie wydaje mi się, że ten przykład bardzo mi się podoba. Odpowiedź jest identyczna z dwoma predyktorami? Moim zdaniem jest to poza patologią.
kardynał

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.