Co wyciągnąć z tej fabuły lasso (glmnet)

19

Poniżej znajduje się wykres glmnet z domyślną wartością alfa (1, stąd lasso) przy użyciu mtcarszestawu danych w R mpgjako DV i innych jako zmiennych predykcyjnych.

glmnet(as.matrix(mtcars[-1]), mtcars[,1])

wprowadź opis zdjęcia tutaj

Co możemy wywnioskować z tej działki dotyczące różnych zmiennych, zwłaszcza am, cyli wt(czerwone, czarne i jasne niebieskie linie)? Jak sformułujemy wynik w raporcie, który zostanie opublikowany?

Myślałem o:

  1. wtjest najważniejszym predyktorem mpg. To negatywnie wpływa na mpg.

  2. cyljest słabym predyktorem ujemnym mpg.

  3. ammoże być pozytywnym predyktorem mpg.

  4. Inne zmienne nie są niezawodnymi predyktorami mpg.

Dziękuję za twoje przemyślenia na ten temat.

(Uwaga: cylto czarna linia, która nie osiąga wartości 0, dopóki nie będzie bardzo blisko niej.)

Edycja: Poniżej znajduje się wykres (mod, xvar = 'lambda'), który pokazuje oś x w kolejności odwrotnej do powyższej wykresu:

wprowadź opis zdjęcia tutaj

(PS: Jeśli uznasz to pytanie za interesujące / ważne, oceń je;)

rnso
źródło
Wygląda na to, że zapomniałeś przecinka przed -1w glmnet(as.matrix(mtcars[-1]), mtcars[,1]).
Richard Hardy
Jeśli nie podano przecinka, R przyjmuje, że liczba jest numerem kolumny, więc działa.
rnso
Fajnie, nie robiłem tego wcześniej.
Richard Hardy
2
@RichardHardy bądź ostrożny; to zachowanie jest inne dla ramek danych i macierzy. Ramka danych jest listą, a każda kolumna jest elementem tej listy, więc my_data_frame[1]zwraca ramkę danych z jedną kolumną, my_data_frame[[1]]a my_data_frame[, 1]obie zwracają wektor, który nie jest „zawarty” przez ramkę danych. Macierze są jednak właściwie tylko płaskie wektory ze specjalnym atrybutem, który umożliwia dostęp do R nich jak siatki, tak my_matrix[1], my_matrix[1, 1]i my_matrix[[1]]będzie wszystko zwróci pierwszy element, z my_matrix. my_matrix[, 1] zwraca pierwszą kolumnę.
shadowtalker
2
Wspomnę tylko, że plot_glmnet funkcja w plotmo pakietu daje nieco lepsze wykresy współczynników, ponieważ dba o etykiecie overplotting i kilka innych szczegółów. Przykłady można znaleźć w rozdziale 6 w winiecie ploterów .
Stephen Milborrow

Odpowiedzi:

39

Myślę, że próbując zinterpretować te wykresy współczynników przez , lub, bardzo pomaga wiedzieć, jak wyglądają w niektórych prostych przypadkach. W szczególności, jak wyglądają, gdy macierz projektu modelu jest nieskorelowana, w porównaniu z korelacją w projekcie.λlog(λ)ja|βja|

W tym celu stworzyłem niektóre skorelowane i nieskorelowane dane, aby wykazać:

x_uncorr <- matrix(runif(30000), nrow=10000)
y_uncorr <- 1 + 2*x_uncorr[,1] - x_uncorr[,2] + .5*x_uncorr[,3]

sigma <- matrix(c(  1, -.5,   0,
                  -.5,   1, -.5,
                    0, -.5,   1), nrow=3, byrow=TRUE
)
x_corr <- x_uncorr %*% sqrtm(sigma)
y_corr <- y_uncorr <- 1 + 2*x_corr[,1] - x_corr[,2] + .5*x_corr[,3]

Dane x_uncorrmają nieskorelowane kolumny

> round(cor(x_uncorr), 2)
     [,1]  [,2]  [,3]
[1,] 1.00  0.01  0.00
[2,] 0.01  1.00 -0.01
[3,] 0.00 -0.01  1.00

podczas gdy x_corrma wstępnie ustaloną korelację między kolumnami

> round(cor(x_corr), 2)
      [,1]  [,2]  [,3]
[1,]  1.00 -0.49  0.00
[2,] -0.49  1.00 -0.51
[3,]  0.00 -0.51  1.00

Teraz spójrzmy na wykresy lasso dla obu tych przypadków. Najpierw niepowiązane dane

gnet_uncorr <- glmnet(x_uncorr, y_uncorr)
plot(gnet_uncorr)

wprowadź opis zdjęcia tutaj

Wyróżnia się kilka funkcji

  • Predyktory wchodzą do modelu w kolejności ich wielkości rzeczywistego współczynnika regresji liniowej.
  • ja|βja|ja|βja|
  • Gdy nowy predyktor wchodzi do modelu, wpływa on na nachylenie ścieżki współczynnika wszystkich predyktorów znajdujących się już w modelu w sposób deterministyczny. Na przykład, gdy drugi predyktor wchodzi do modelu, nachylenie pierwszej ścieżki współczynnika jest przecinane na pół. Gdy trzeci predyktor wchodzi do modelu, nachylenie ścieżki współczynnika wynosi jedną trzecią jego pierwotnej wartości.

Są to wszystkie ogólne fakty, które dotyczą regresji Lasso z nieskorelowanymi danymi, i wszystkie mogą być udowodnione ręcznie (dobre ćwiczenia!) Lub znalezione w literaturze.

Teraz zróbmy skorelowane dane

gnet_corr <- glmnet(x_corr, y_corr)
plot(gnet_corr)

wprowadź opis zdjęcia tutaj

Możesz przeczytać niektóre rzeczy z tego wątku, porównując go do nieskorelowanego przypadku

  • Ścieżki pierwszego i drugiego predyktora mają taką samą strukturę jak przypadek nieskorelowany, dopóki trzeci predyktor nie wejdzie do modelu, nawet jeśli są skorelowane. Jest to szczególna cecha przypadku dwóch predyktorów, który mogę wyjaśnić w innej odpowiedzi, jeśli jest zainteresowanie, zajęłoby mi to trochę daleko od obecnej dyskusji.
  • |βja|

Spójrzmy teraz na twoją fabułę z zestawu danych samochodów i przeczytaj kilka interesujących rzeczy (odtworzyłem tutaj twoją fabułę, aby łatwiej było przeczytać tę dyskusję):

Słowo ostrzeżenia : Napisałem następującą analizę opartą na założeniu, że krzywe pokazują znormalizowane współczynniki, w tym przykładzie nie. Niestandaryzowane współczynniki nie są bezwymiarowe i nieporównywalne, dlatego nie można wyciągać z nich wniosków w zakresie znaczenia predykcyjnego. Aby następująca analiza była prawidłowa, udawaj, że wykres ma znormalizowane współczynniki i wykonaj własną analizę na znormalizowanych ścieżkach współczynników.

wprowadź opis zdjęcia tutaj

  • Jak mówisz, wtpredyktor wydaje się bardzo ważny. Najpierw wchodzi do modelu i powoli i równomiernie schodzi do swojej ostatecznej wartości. Ma kilka korelacji, które sprawiają, że jazda jest nieco wyboista, amw szczególności wydaje się mieć drastyczny efekt, gdy wjeżdża.
  • amjest również ważne. Przychodzi później i jest z nim skorelowany wt, ponieważ wpływa wtgwałtownie na zbocze . Jest to również skorelowane z carbi qsec, ponieważ nie widzimy przewidywalnego złagodzenia nachylenia, gdy te wchodzą. Po tych czterech zmiennych weszły jednak, że nie zobaczyć piękny skorelowane wzór, więc wydaje się być skorelowane ze wszystkimi czynnikami prognostycznymi na końcu.
  • Coś wchodzi około 2.25 na osi X, ale sama ścieżka jest niezauważalna, można to wykryć tylko poprzez wpływ na parametry cyli wt.
  • cyljest dość fascynujące. Zajmuje drugie miejsce, więc jest ważne w przypadku małych modeli. Po wprowadzeniu innych zmiennych, a zwłaszcza ich amwprowadzeniu, nie jest już tak ważny, a jego trend się odwraca, a ostatecznie jest prawie całkowicie usunięty. Wygląda na cylto, że zmienne wprowadzane na końcu procesu mogą całkowicie uchwycić efekt . To, czy bardziej odpowiednie jest zastosowanie cyl, czy uzupełniająca grupa zmiennych, naprawdę zależy od kompromisu wariancji odchylenia. Posiadanie grupy w ostatecznym modelu znacznie zwiększy jej wariancję, ale może się zdarzyć, że zrekompensuje to niższe odchylenie!

To małe wprowadzenie do tego, jak nauczyłem się czytać informacje z tych fabuł. Myślę, że to mnóstwo zabawy!

Dzięki za świetną analizę. Mówiąc prosto, powiedzmy, że wt, am i cyl są 3 najważniejszymi predyktorami mpg. Ponadto, jeśli chcesz utworzyć model predykcji, które z nich uwzględnisz na podstawie tej liczby: wt, am i cyl? Lub inna kombinacja. Ponadto wydaje się, że nie potrzebujesz najlepszej lambda do analizy. Czy to nie jest ważne, jak w regresji grzbietu?

Powiedziałbym, że argumenty za wti amsą jednoznaczne, są ważne. cyljest znacznie bardziej subtelny, jest ważny w małym modelu, ale w ogóle nie jest istotny w dużym.

Nie byłbym w stanie ustalić, co należy uwzględnić na podstawie samej liczby, na co naprawdę należy odpowiedzieć w kontekście tego, co robisz. Można powiedzieć, że jeśli chcesz model trzy przewidywań, a następnie wt, ami cylsą dobrym wyborem, ponieważ są one istotne w wielkim schemacie rzeczy i powinien skończyć się o rozsądne rozmiary efekt w małym modelu. Jest to oparte na założeniu, że masz jakiś zewnętrzny powód, dla którego pragniesz małego trójprzewidywanego modelu.

To prawda, że ​​ten typ analizy obejmuje całe spektrum lambd i pozwala wyeliminować relacje w zakresie złożoności modelu. To powiedziawszy, dla ostatecznego modelu, myślę, że strojenie optymalnej lambda jest bardzo ważne. Wobec braku innych ograniczeń zdecydowanie użyłbym weryfikacji krzyżowej, aby znaleźć, gdzie wzdłuż tego spektrum jest najbardziej przewidywalna lambda, a następnie użyć tej lambda do ostatecznego modelu i ostatecznej analizy.

λ

Z drugiej strony, czasami istnieją zewnętrzne ograniczenia dotyczące złożoności modelu (koszty wdrożenia, starsze systemy, minimalizm wyjaśniający, interpretacja biznesowa, dziedzictwo estetyczne), a tego rodzaju kontrola może naprawdę pomóc w zrozumieniu kształtu twoich danych oraz kompromisy, które robisz, wybierając mniejszy niż optymalny model.

Matthew Drury
źródło
Dzięki za świetną analizę. Mówiąc prosto, powiedzmy, że wt, am i cyl są 3 najważniejszymi predyktorami mpg. Ponadto, jeśli chcesz utworzyć model predykcji, które z nich uwzględnisz na podstawie tej liczby: wt, am i cyl? Lub inna kombinacja. Ponadto wydaje się, że nie potrzebujesz najlepszej lambda do analizy. Czy to nie jest ważne, jak w regresji grzbietu?
rnso
@rnso Dołączyłem odpowiedź do mojej odpowiedzi.
Matthew Drury
Być może „dziedzictwo” ma być „oszczędnością”?
Hatszepsut
@Mathew Drury, mam kilka rzeczy, których nie jestem pewien, byłbym wdzięczny za wyjaśnienia, # napisałeś „np. Kiedy wchodzi drugi predyktor”, skąd mam wiedzieć z fabuły, że drugi predyktor lub trzeci predyktor / wchodzi . ## kiedy mogę powiedzieć, że te predyktory są ważne, czy nie. ### wreszcie, jak mogę wybrać najlepszy model tego dopasowania. Ponadto, legenda / etykieta jest dołączana automatycznie. (Zaimplementowałem ten przykład w języku R)
jeza
5
+6, najwyraźniej tęskniłem za tym, kiedy wyszło. Naprawdę fajna robota.
gung - Przywróć Monikę