Tenho uma pergunta sobre a validade do uso do RMSE (Root Mean Squared Error) para comparar diferentes modelos logísticos. A resposta é ou 0
ou 1
e as previsões são probabilidades entre 0
- 1
?
A maneira aplicada abaixo também é válida com as respostas binárias?
# 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
fonte
fonte
Respostas:
Para entender por que "[a] resposta é uma
0
ou1
[mas] as previsões são probabilidades entre0
-1
", você precisa entender o tipo de modelo com o qual está trabalhando. Afaste os métodos de penalização e a validação cruzada, e você está executando uma regressão logística básica. Os parâmetros são adequados para as probabilidades de log / escala logística. Isso é chamado de "preditor linear". (Para saber mais sobre isso, pode ser útil ler minha resposta aqui: Diferença entre os modelos logit e probit .) Se você inserisse um valor x e simplificasse, o valor seria o logaritmo natural previsto do modelo para as chances de 'sucesso' (1
) Se você exponenciaria esse valor, teria as probabilidades previstas do modelode sucesso'. Para obter uma probabilidade prevista , você precisará converter as probabilidades em uma probabilidade via probabilidades / (1 + probabilidades). (Para saber mais sobre isso, pode ser útil ler minha resposta aqui: Interpretação de previsões simples para razões de chances na regressão logística .) Isso ainda não o leva a uma classe prevista . Para conseguir isso, você precisaria comparar sua probabilidade prevista com algum limite e, se for menor que o limite, prever 'falha' (0
), ou 'sucesso' (1
). O limite padrão mais comum é 0,5, mas esse geralmente não é o ideal. Apredict.glm()
função de R permitirá que você usetype="link"
, que gera previsões na escala do preditor linear (ou seja, antes de todas as transformações acima), mas isso não ajudará nesse contexto. Usartype="response"
fornece as probabilidades previstas.Ao tentar avaliar até que ponto um modelo de regressão binário (por exemplo, logística) prevê uma resposta, você tem várias opções:
.2, .4, .6, .8
e adicionado 0,01 a todas elas (.21, .41, .61, .81
), a AUC seria a mesma, mesmo que os dois conjuntos de probabilidades previstas não possam ser igualmente precisos.É lamentável que a pontuação de Brier seja menos conhecida e usada. Embora a relativa intuitividade desses métodos seja: porcentagem correta> AUC> pontuação de Brier, sua verdadeira informatividade é o oposto: pontuação Brier> AUC> porcentagem correta. Se você deseja apenas uma medida simples do desempenho do seu modelo, a distinção entre esses métodos é menos importante, mas se você deseja usar esses métodos para otimizar um modelo ou selecionar um modelo, usar um método inferior levará a um desempenho pior .
fonte
Usar o RMSE faz muito mais sentido se o seu termo de erro for distribuído normalmente com média zero, mas em resultados binários não é. Portanto, acho que você deve usar abordagens diferentes que se prestem a resultados binários, como comparar diferenças de probabilidade.
fonte