Jak oszacować parametr skurczu w regresji Lasso lub regresji kalenicowej przy zmiennych> 50K?

36

Chcę użyć regresji Lasso lub regresji grzbietu dla modelu z ponad 50 000 zmiennych. Chcę to zrobić za pomocą pakietu oprogramowania w R. Jak mogę oszacować parametr skurczu ( λ )?

Edycje:

Oto punkt, do którego doszedłem:

set.seed (123)
Y <- runif (1000)
Xv <- sample(c(1,0), size= 1000*1000,  replace = T)
X <- matrix(Xv, nrow = 1000, ncol = 1000)

mydf <- data.frame(Y, X)

require(MASS)
lm.ridge(Y ~ ., mydf)

plot(lm.ridge(Y ~ ., mydf,
              lambda = seq(0,0.1,0.001)))

wprowadź opis zdjęcia tutaj

Moje pytanie brzmi: skąd mam wiedzieć, który jest najlepszy dla mojego modelu?λ

Jan
źródło
3
Parametr wygładzania nie jest statystycznie możliwy do oszacowania, ale wykorzystuje wybrany, aby zmaksymalizować dopasowanie poza próbą za pomocą, na przykład, walidacji krzyżowej. Myślę, że standardowe pakiety dla LASSO i Ridge Regression w R mają wbudowaną funkcjonalność, aby to dla Ciebie zrobić - czy już to sprawdziłeś?
Makro
4
Nie zgadzam się - możesz oszacować parametr wygładzania, stosując podejście modelu mieszanego. Istnieją metody Reml, podobnie jak heirarchiczne metody Bayesa. Nie potrzebujesz drogiej weryfikacji krzyżowej.
Prawdopodobieństwo
1
@probabilityislogic dziękuję za informację. Byłoby wspaniale, gdyby w skrypcie było niewiele szczegółów, jak możemy to zrobić za pomocą reml
Jan
2
W przypadku regresji grzbietowej wykluczenie krzyżowe jest zasadniczo bezpłatne (statystyki PRESS Allena) i uważam, że jest to dość dobra metoda. Jednak z tak może cechować się prawie każda metoda, którą użyjesz będzie niestabilna, a w pełni bayesowskie podejście marginalizujące zarówno parametry, jak i parametry regularyzacji prawdopodobnie będzie bardziej niezawodnym rozwiązaniem (jak sądzę sugerowało prawdopodobieństwo logiki). Jeśli nie lubisz metod bayesowskich, użyj workowania i ponownie oszacuj lambda za każdym razem.
Dikran Marsupial
2
@Macro - (nic podobnego do odpowiedzi 18 miesięcy później). W podejściu modelu mieszanego istnieją dwa dodatkowe terminy, które zależą tylko od ale nie od β . Są to - k log ( λ ) i log | X T X + λ I | gdzie k jest liczbą bet, a X matrycą predykcyjną. Pierwszy termin pochodzi od β N ( 0 , σ 2 λ - 1 ), gdzie σ 2λβklog(λ)log|XTX+λI|kβN(0,σ2λ1)σ2jest wariancją błędu. Drugi składnik jest REML korekcji w celu uwzględnienia niepewność podłączając . β=β^
probabilislogiczny

Odpowiedzi:

25

cv.glmnetλ112α

λλcv.glmnetλlambda.minlambda.1seλtype.measure

Alternatywnie pakiet R mgcv zawiera szerokie możliwości szacowania z kwadratową penalizacją, w tym automatyczny wybór parametrów kary. Wdrożone metody obejmują uogólnioną walidację krzyżową i REML, jak wspomniano w komentarzu. Więcej szczegółów można znaleźć w książce autorów pakietu: Wood, SN (2006) Uogólnione modele addytywne: wprowadzenie do R, CRC.

NRH
źródło
1
cv.glmnetλlambda.minlambda.1se
@chl, dzięki za sugestię. Powinienem to dodać.
NRH
15

Ta odpowiedź jest specyficzna dla MATLAB, jednak podstawowe pojęcia powinny być dość podobne do tego, do czego przywykłeś z R ...

W przypadku MATLAB istnieje możliwość uruchomienia lasso z włączoną weryfikacją krzyżową.

Jeśli to zrobisz, funkcja lasso zgłosi dwie krytyczne wartości parametrów

  1. Wartość lambda, która minimalizuje średni kwadratowy błąd potwierdzony krzyżowo
  2. Wartość lambda o największym skurczu, której CVMSE mieści się w granicach jednego standardowego błędu minimum.

Otrzymasz również ładny mały wykres, którego możesz użyć do sprawdzenia związku między lambda a CVMSE

wprowadź opis zdjęcia tutaj

Ogólnie rzecz biorąc, wybierzesz wartość lambda, która mieści się między niebieską linią a zieloną linią.

Poniższy post na blogu zawiera kod demonstracyjny oparty na kilku przykładach z

Tibshirani, R. (1996). Skurcz regresji i selekcja poprzez lasso. J. Royal. Statystyk. Soc B., Vol. 58, nr 1, strony 267-288).

http://blogs.mathworks.com/loren/2011/11/29/subset-selection-and-regularization-part-2/

Richard Willey
źródło