Chciałbym uzyskać współczynniki dla problemu LASSO
Problem polega na tym, że funkcje glmnet i lars dają różne odpowiedzi. Dla funkcji glmnet proszę o współczynniki 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.
źródło
glmnet
implementacji 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.Odpowiedzi:
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.
źródło
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 - Py x1 x2 y x1 x2 y x1 x2 β1=1−P β2=0 P β1=0 β2−1−P
źródło
Lars i Glmnet podają różne rozwiązania problemu Lasso, ponieważ używają nieco innych funkcji celu i różnych standaryzacji danych. Szczegółowy kod do reprodukcji można znaleźć w powiązanym pytaniu Dlaczego Lars i Glmnet oferują różne rozwiązania problemu Lasso?
źródło