Wybór optymalnej wartości alfa w elastycznej regresji logistycznej sieci


22

Wykonuję regresję logistyczną elastycznej sieci dla zestawu danych opieki zdrowotnej, używając glmnetpakietu w R, wybierając wartości lambda na siatce od 0 do 1. Mój skrócony kod znajduje się poniżej:α

alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
  cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}

która wyprowadza średni błąd zwalidowany krzyżowo dla każdej wartości alfa od do z przyrostem :1,0 0,10.01.00.1

[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874

Na podstawie tego, co przeczytałem w literaturze, optymalnym wyborem jest miejsce, w którym błąd cv jest zminimalizowany. Ale istnieje wiele różnic w błędach w zakresie alfa. Widzę kilka lokalnych minimów z globalnym błędem minimalnym dla .α0.1942612alpha=0.8

Czy to jest bezpieczne alpha=0.8? Lub, biorąc pod uwagę tę odmianę, czy powinienem ponownie uruchomić cv.glmnetz większą liczbą fałd walidacji krzyżowej (np. zamiast ), czy może większą liczbą przyrostów pomiędzy i, aby uzyskać wyraźny obraz ścieżki błędu CV?10 α2010αalpha=0.01.0


5
Powinieneś rzucić okiem na caretpakiet, który może powtarzać cv i dostroić zarówno alfa, jak i lambda (obsługuje przetwarzanie wielordzeniowe!). Z pamięci myślę, że glmnetdokumentacja odradza strojenie alfy tak jak tutaj. Zaleca się utrzymywanie stałych foldidów, jeśli użytkownik dostraja alfa oprócz strojenia lambda dostarczonego przez cv.glmnet.

1
Ach, znalazłem ten post tutaj: stats.stackexchange.com/questions/69638/…
RobertF

2
nie zapomnij naprawić foldid, gdy próbujesz innegoα
user4581

1
Aby zapewnić powtarzalność, nigdy nie uruchamiaj cv.glmnet()bez przekazywania foldidsutworzonego ze znanego losowego materiału siewnego.
smci

1
@amoeba spójrz na moją odpowiedź - mile widziane są informacje na temat kompromisów między l1 i l2!
Xavier Bourret Sicotte

Odpowiedzi:


7

Wyjaśnienie, co należy rozumieć przez parametry i Elastic Netα

Różne pakiety używają różnych terminów i parametrów, ale ich znaczenie jest zasadniczo takie samo:

Pakiet R Glmnet wykorzystuje następującą definicję

minβ0,β1Ni=1Nwil(yi,β0+βTxi)+λ[(1α)||β||22/2+α||β||1]

Zastosowania Sklearn

minw12Ni=1N||yXw||22+α×l1ratio||w||1+0.5×α×(1l1ratio)×||w||22

Istnieją alternatywne Parametryzacja użyciem i oraz ..ab

Aby uniknąć zamieszania, zadzwonię

  • λ parametr siły karnej
  • L1ratio stosunek między a , w zakresie od 0 (grzbiet) do 1 (lasso)L1L2

Wizualizacja wpływu parametrów

Rozważ symulowany zestaw danych, w którym składa się z hałaśliwej krzywej sinusoidalnej, a jest dwuwymiarową cechą składającą się z i . Z powodu korelacji między i funkcją kosztu jest wąska dolina.yXX1=xX2=x2X1X2

Poniższa grafika ilustruje ścieżkę rozwiązania regresji elasticnet z dwoma różnymi parametrami stosunku , w zależności od parametru siły .L1λ

  • Dla obu symulacji: gdy wówczas rozwiązaniem jest rozwiązanie OLS w prawym dolnym rogu z powiązaną funkcją kosztu w kształcie doliny.λ=0
  • Wraz ze wzrostem rozpoczyna się regularyzacja i rozwiązanie ma tendencję doλ(0,0)
  • Główną różnicą między dwiema symulacjami jest parametr stosunku .L1
  • LHS : dla małego współczynnika funkcja kosztów regulowanych przypomina bardzo regresję Ridge'a z okrągłymi konturami.L1
  • RHS : dla dużego współczynnika funkcja kosztu przypomina bardzo regresję Lasso z typowymi konturami w kształcie rombu.L1
  • W przypadku pośredniego współczynnika (nie pokazano) funkcja kosztu stanowi połączenie tych dwóchL1

wprowadź opis zdjęcia tutaj


Zrozumienie wpływu parametrów

ElasticNet został wprowadzony, aby przeciwdziałać niektórym ograniczeniom Lasso, którymi są:

  • Jeśli jest więcej zmiennych niż punkty danych , , lasso wybiera co najwyżej zmiennych.pnp>nn
  • Lasso nie wykonuje selekcji pogrupowanej, zwłaszcza w obecności zmiennych skorelowanych. Będzie miał tendencję do wybierania jednej zmiennej z grupy i ignorowania innych

Łącząc i kwadratową karę uzyskujemy zalety obu:L1L2

  • L1 generuje rzadki model
  • L2 usuwa ograniczenie liczby wybranych zmiennych, zachęca do grupowania i stabilizuje ścieżkę regularyzacji .L1

Możesz to zobaczyć wizualnie na powyższym schemacie, osobliwości w wierzchołkach zachęcają do rzadkości , a ścisłe wypukłe krawędzie zachęcają do grupowania .

Oto wizualizacja zaczerpnięta z Hastie (wynalazcy ElasticNet)

wprowadź opis zdjęcia tutaj

Dalsza lektura


2

Pozwolę sobie dodać kilka bardzo praktycznych uwag, pomimo wieku pytania. Ponieważ nie jestem użytkownikiem języka R, nie mogę pozwolić kodowi mówić, ale powinno to być zrozumiałe.

  1. Zwykle powinieneś wybrać hiperparametry (tutaj: ) z najlepszym wynikiem CV. Alternatywnie, możesz wybrać najlepsze modeli i utworzyć zespół przez arytmetyczne uśrednianie funkcji decyzyjnej. To oczywiście zwiększa złożoność środowiska wykonawczego. Wskazówka: czasami uśrednianie geometryczne działa lepiej . Przypuszczam, że dzieje się tak z powodu płynniejszej granicy decyzji.αkf1,...,fkf(x)=1kifi(x)f(x)=i=1kfi(x)k

  2. Jedną z zalet ponownego próbkowania jest to, że można sprawdzić sekwencję wyników testu, które są tutaj wynikami cv. Zawsze powinieneś patrzeć nie tylko na średnią, ale na odchylenie standardowe (nie jest to rozkład normalny, ale zachowujesz się tak, jakby). Zazwyczaj wyświetla się to powiedzenie jako 65,5% (± 2,57%) dla dokładności. W ten sposób możesz stwierdzić, czy „małe odchylenia” są bardziej prawdopodobne przypadkowo czy strukturalnie. Lepiej byłoby nawet sprawdzić kompletne sekwencje. Jeśli z jakiegoś powodu zawsze występuje jedno złożenie, możesz przemyśleć sposób, w jaki dokonujesz podziału (wskazuje to na wadliwy projekt eksperymentalny, a także: czy przetasowałeś?). W scikit-poznaj GridSearchCVszczegółowe informacje o wygasaniu foldów w sklepie cv_results_( patrz tutaj ).

  3. W odniesieniu do : im wyższa, tym bardziej elastyczna siatka będzie miała funkcję . Możesz sprawdzić wagi uzyskanych modeli, im wyższa , tym więcej zostanie ustawione na zero. Jest to przydatna sztuczka, aby usunąć razem atrybuty z wagami ustawionymi na zero z potoku (to znacznie poprawia wydajność środowiska wykonawczego). Inną sztuczką jest użycie modelu elastycznej siatki do wyboru funkcji, a następnie przeszkolenie wariantu . Zwykle prowadzi to do dramatycznego wzrostu wydajności modelu, ponieważ wzajemne powiązania między funkcjami zostały odfiltrowane.αL1αL 2L2

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.