Ścieżki współczynników - porównanie regresji grzbietu, lassa i siatki elastycznej

13

Chciałbym porównać modele wybrane z kalenicą, lasso i elastyczną siatką. Ryc. Poniżej pokazuje ścieżki współczynników przy użyciu wszystkich 3 metod: grzbietu (ryc. A, alfa = 0), lasso (ryc. B; alfa = 1) i elastycznej siatki (ryc. C; alfa = 0,5). Optymalne rozwiązanie zależy od wybranej wartości lambda, która jest wybierana na podstawie krzyżowej walidacji.

Profile współczynników regresji kalenicy (A, alfa = 0), lasso (B, alfa = 1) i siatki elastycznej (C, alfa = 0,5).  Liczby u góry wykresu przedstawiają rozmiar modeli. Optymalne rozwiązanie zależy od wybranej wartości lambda.  Wybór lambda opiera się na krzyżowej walidacji.

Patrząc na te wykresy, spodziewałbym się, że elastyczna siatka (ryc. C) będzie wykazywać efekt grupowania. Nie jest to jednak jasne w prezentowanej sprawie. Ścieżka współczynników dla lassa i siatki elastycznej jest bardzo podobna. Co mogłoby być tego przyczyną ? Czy to tylko błąd kodowania? Użyłem następującego kodu w R:

library(glmnet)
X<- as.matrix(mydata[,2:22])
Y<- mydata[,23]
par(mfrow=c(1,3))
ans1<-cv.glmnet(X, Y, alpha=0) # ridge
plot(ans1$glmnet.fit, "lambda", label=FALSE)
text (6, 0.4, "A", cex=1.8, font=1)
ans2<-cv.glmnet(X, Y, alpha=1) # lasso
plot(ans2$glmnet.fit, "lambda", label=FALSE)
text (-0.8, 0.48, "B", cex=1.8, font=1)
ans3<-cv.glmnet(X, Y, alpha=0.5) # elastic net 
plot(ans3$glmnet.fit, "lambda", label=FALSE)
text (0, 0.62, "C", cex=1.8, font=1)

Kod użyty do wykreślenia ścieżek elastycznych współczynników netto jest dokładnie taki sam, jak dla kalenicy i lassa. Jedyna różnica polega na wartości alfa. Parametr alfa dla regresji elastycznej siatki został wybrany na podstawie najniższego MSE (średni błąd kwadratu) dla odpowiednich wartości lambda.

Dziękuję za pomoc!

początkujący
źródło

Odpowiedzi:

5

W liter ( liczba współczynników, liczba próbek, które przez liczbę współczynników można pokazać na poletkach myślę, że jest w tym przypadku), jedyny prawdziwy „problem” z modelem Lasso jest to, że kiedy wiele cech jest ze sobą skorelowanych, zwykle wybiera jedną z nich nieco losowo.p<npn

Jeśli oryginalne cechy nie są bardzo skorelowane, powiedziałbym, że rozsądne jest, aby Lasso działał podobnie do Elastycznej Sieci pod względem ścieżki współczynników. Przeglądając dokumentację pakietu glmnet , również nie widzę błędów w twoim kodzie.

skd
źródło
Dziękuję bardzo za komentarz. Zacząłem myśleć o podejściu do regularyzacji, aby wybrać najlepszy model, ponieważ zaobserwowałem poważną wielokoliniowość między moimi zmiennymi (VIF >> 10). Wiele z nich było skorelowanych na poziomie> 0,8, dlatego spodziewałem się, że elastyczna siatka będzie działać inaczej niż lasso i wykazywać efekt grupowania (w przypadku zmiennych skorelowanych).
początkujący
Być może będziesz musiał po prostu zastosować silniejszą karę grzbietową?
dcl
czy sprawdziłeś wielokoliniowość z korekcją df? zmienne czynnikowe mają zwykle wielokoliniowość, ponieważ wzajemnie się wykluczają. Nie wiem, czy ten rodzaj wielokoliniowości powoduje problemy z lasso.
Bakaburg