Wykonuję regresję logistyczną elastycznej sieci dla zestawu danych opieki zdrowotnej, używając glmnet
pakietu 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,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.1942612
alpha=0.8
Czy to jest bezpieczne alpha=0.8
? Lub, biorąc pod uwagę tę odmianę, czy powinienem ponownie uruchomić cv.glmnet
z 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 αalpha=0.0
1.0
caret
pakiet, który może powtarzać cv i dostroić zarówno alfa, jak i lambda (obsługuje przetwarzanie wielordzeniowe!). Z pamięci myślę, żeglmnet
dokumentacja odradza strojenie alfy tak jak tutaj. Zaleca się utrzymywanie stałych foldidów, jeśli użytkownik dostraja alfa oprócz strojenia lambda dostarczonego przezcv.glmnet
.cv.glmnet()
bez przekazywaniafoldids
utworzonego ze znanego losowego materiału siewnego.Odpowiedzi:
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ę
Zastosowania Sklearn
Istnieją alternatywne Parametryzacja użyciem i oraz ..a b
Aby uniknąć zamieszania, zadzwonię
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.y X X1=x X2=x2 X1 X2
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 λ
Zrozumienie wpływu parametrów
ElasticNet został wprowadzony, aby przeciwdziałać niektórym ograniczeniom Lasso, którymi są:
Łącząc i kwadratową karę uzyskujemy zalety obu:L1 L2
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)
Dalsza lektura
źródło
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.
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.α k f1,...,fk f(x)=1k∑ifi(x) f(x)=∏ki=1fi(x)−−−−−−−−√k
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
GridSearchCV
szczegółowe informacje o wygasaniu foldów w sklepiecv_results_
( patrz tutaj ).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
źródło