Mam pytanie dotyczące zasadności korzystania z RMSE (Root Mean Squared Error) do porównywania różnych modeli logistycznych. Odpowiedź jest albo 0
czy 1
i przewidywania prawdopodobieństwa są między 0
- 1
?
Czy sposób zastosowany poniżej jest również prawidłowy w przypadku odpowiedzi binarnych?
# Using glmnet
require(glmnet)
load(url("https://github.com/cran/glmnet/raw/master /data/BinomialExample.RData"))
cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "mse")
A <- predict(cvfit, newx = x, s = "lambda.min", type = "response")
RMSE1 <- mean((y - A)^2)
# 0.05816881
# glm
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)
mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
AAA <- predict(mylogit, newdata = mydata, type = "response")
RMSE2 <- mean((mydata$admit - AAA)^2)
# 0.194714
regression
logistic
generalized-linear-model
glmnet
rms
Ahmed El-Gabbas
źródło
źródło
Odpowiedzi:
Aby zrozumieć, dlaczego „[p] Odpowiedź jest albo
0
lub1
[ale] są przewidywania prawdopodobieństwa między0
-1
” trzeba zrozumieć rodzaj modelu pracujesz. Pozbądź się metod penalizacji i weryfikacji krzyżowej, a uruchomisz podstawową regresję logistyczną. Parametry są dopasowane do logarytmicznych szans / skali logistycznej. Nazywa się to „predyktorem liniowym”. (Aby uzyskać więcej informacji na ten temat, możesz przeczytać moją odpowiedź tutaj: Różnica między modelami logit i probit ). Jeśli podłączysz wartość x i uprościsz, wartość będzie przewidywanym naturalnym logarytmem modelu prawdopodobieństwa „sukcesu” (1
). Jeśli potęgujesz tę wartość, uzyskasz przewidywane szanse modelusukcesu'. Aby uzyskać przewidywane prawdopodobieństwo , musisz przekonwertować szanse na prawdopodobieństwo za pomocą odds / (1 + odds). (Aby uzyskać więcej informacji na ten temat, może pomóc ci przeczytać moją odpowiedź tutaj: Interpretacja prostych prognoz na iloraz szans w regresji logistycznej .) To wciąż nie prowadzi cię do przewidywanej klasy . Aby to osiągnąć, należy porównać przewidywane prawdopodobieństwo z pewnym progiem, a jeśli jest ono niższe niż próg, należy przewidzieć „awarię” (0
), w przeciwnym razie „sukces” (1
). Najczęstszym domyślnym progiem jest 0,5, ale często nie jest to optymalne.predict.glm()
Funkcja R pozwoli ci użyćtype="link"
, który generuje prognozy w skali predyktora liniowego (tj. przed wszystkimi powyższymi transformacjami), ale to nie pomoże ci w tym kontekście. Używanietype="response"
daje przewidywane prawdopodobieństwa.Kiedy próbujesz ocenić, jak dobrze model regresji binarnej (np. Logistycznej) przewiduje odpowiedź, masz kilka opcji:
.2, .4, .6, .8
i dodałeś 0,01 do wszystkich z nich (.21, .41, .61, .81
), AUC byłby taki sam, mimo że oba zestawy przewidywanych prawdopodobieństw nie mogą być równie dokładne.Szkoda, że wynik Briera jest mniej znany i wykorzystywany. Chociaż względna intuicyjność tych metod jest następująca: procent poprawności> AUC> wynik Briera, ich prawdziwa informatywność jest odwrotna: wynik Briera> AUC> procent poprawności. Jeśli chcesz tylko prostej miary wydajności swojego modelu, rozróżnienie między tymi metodami jest mniej ważne, ale jeśli chcesz użyć tych metod do optymalizacji modelu lub wyboru modelu, użycie gorszej metody doprowadzi do gorszej wydajności .
źródło
Korzystanie z RMSE ma o wiele większy sens, jeśli termin błędu jest rozkładany normalnie ze średnią zero, ale w wynikach binarnych tak nie jest. Dlatego uważam, że powinieneś stosować różne podejścia, które nadają się do wyników binarnych, na przykład porównując różnice w prawdopodobieństwie.
źródło