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)))
Moje pytanie brzmi: skąd mam wiedzieć, który jest najlepszy dla mojego modelu?
Odpowiedzi:
cv.glmnet
cv.glmnet
lambda.min
lambda.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.
źródło
cv.glmnet
lambda.min
lambda.1se
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
Otrzymasz również ładny mały wykres, którego możesz użyć do sprawdzenia związku między lambda a CVMSE
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/
źródło
rms
rms
pentrace
źródło