Dla mojego obecnego reseach używam metody Lasso poprzez pakiet glmnet w R na zmiennej zależnej dwumianowej.
W glmnet optymalna lambda jest określana poprzez walidację krzyżową, a uzyskane modele można porównać z różnymi miarami, np. Błędem błędnej klasyfikacji lub dewiacją.
Moje pytanie: jak dokładnie definiuje się dewiację w glmnet? Jak to jest obliczane?
(W odpowiednim artykule „Ścieżki regularyzacji dla uogólnionych modeli liniowych poprzez zejście współrzędnych” Friedmana i wsp. Znajduję tylko ten komentarz dotyczący dewiacji zastosowanej w cv.glmnet: „oznacza dewiację (minus dwukrotność prawdopodobieństwa logarytmu w lewo) dane) ”(s. 17)).
glm
(a przynajmniej tak powinno być - istnieje tylko jedna definicja dewiacji).Odpowiedzi:
W Friedman, Hastie i Tibshirani (2010) odchylenie modelu dwumianowego do celów walidacji krzyżowej jest obliczane jako
Biorąc pod uwagę, że jest to papier cytowany w dokumentacji dla
glmnet
(na s. 2 i 5), prawdopodobnie jest to wzór zastosowany w pakiecie.I rzeczywiście, w kodzie źródłowym funkcji
cvlognet
, reszty odchylenia dla odpowiedzi są obliczane jakogdzie
predmat
jest po prostui przekazano z
cv.glmnet
funkcji enkodowania . Użyłem kodu źródłowego dostępnego na stronie JStatSoft dla gazety i nie wiem, jak aktualny jest ten kod. Kod tego pakietu jest zaskakująco prosty i czytelny; zawsze możesz sprawdzić sam, piszącglmnet:::cv.glmnet
.źródło
Oprócz odpowiedzi @shadowtalker, kiedy korzystałem z pakietu glmnet, mam wrażenie, że odchylenie w walidacji krzyżowej jest w jakiś sposób znormalizowane.
Patrz: dokument dewiacji R.
ponieważ jeśli zrobię podział,
wynik to
co jest bardzo zbliżone do dopasowanego $ cvm.
Być może tak powiedział komentarz @Hong Ooi na to pytanie:
/programming/43468665/poisson-deviance-glmnet
źródło