J'ai une question concernant la validité de l'utilisation de RMSE (Root Mean Squared Error) pour comparer différents modèles logistiques. La réponse est soit 0
ou 1
et les prédictions sont des probabilités entre 0
- 1
?
La manière appliquée ci-dessous est-elle également valable avec les réponses binaires?
# 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
la source
la source
Réponses:
Pour comprendre pourquoi «[la] réponse est soit
0
ou1
[mais] les prédictions sont des probabilités entre0
-1
», vous devez comprendre le type de modèle avec lequel vous travaillez. Supprimez les méthodes de pénalisation et la validation croisée, et vous exécutez une régression logistique de base. Les paramètres sont ajustés sur le log cotes / échelle logistique. C'est ce qu'on appelle le "prédicteur linéaire". (Pour en savoir plus, cela peut vous aider à lire ma réponse ici: Différence entre les modèles logit et probit .) Si vous branchez une valeur x et simplifiée, la valeur serait le logarithme naturel prédit du modèle des chances de `` succès '' (1
). Si vous exponentiiez cette valeur, vous auriez les cotes prévues du modèlede succès'. Pour obtenir une probabilité prédite , vous devez convertir les cotes en probabilité via les cotes / (1 + cotes). (Pour en savoir plus, cela peut vous aider à lire ma réponse ici: Interprétation des prédictions simples aux rapports de cotes dans la régression logistique .) Cela ne vous amène toujours pas à une classe prédite . Pour l'obtenir, vous devez comparer votre probabilité prédite à un certain seuil, et si elle est inférieure au seuil, prédire «échec» (0
), sinon «succès» (1
). Le seuil par défaut le plus courant est 0,5, mais ce n'est souvent pas optimal. Lapredict.glm()
fonction de R vous permettra d'utilisertype="link"
, qui génère des prédictions à l'échelle du prédicteur linéaire (c'est-à-dire avant toutes ces transformations ci-dessus), mais cela ne vous aidera pas dans ce contexte. L'utilisationtype="response"
vous donne les probabilités prédites.Lorsque vous essayez d'évaluer dans quelle mesure un modèle de régression binaire (par exemple, logistique) prédit une réponse, vous avez plusieurs options:
.2, .4, .6, .8
, et que vous avez ajouté 0,01 à toutes (.21, .41, .61, .81
), l'ASC serait la même, même si les deux ensembles de probabilités prédites ne peuvent pas être également exacts.Il est regrettable que le score de Brier soit moins bien connu et utilisé. Bien que l'intuitivité relative de ces méthodes soit: pourcentage correct> ASC> score Brier, leur véritable caractère informatif est le contraire: score Brier> ASC> pourcentage correct. Si vous souhaitez uniquement une mesure simple des performances de votre modèle, la distinction entre ces méthodes est moins importante, mais si vous souhaitez utiliser ces méthodes pour optimiser un modèle ou sélectionner un modèle, l'utilisation d'une méthode inférieure entraînera de moins bonnes performances .
la source
L'utilisation de RMSE a beaucoup plus de sens si votre terme d'erreur est distribué normalement avec un zéro moyen, mais pas dans les résultats binaires. Par conséquent, je pense que vous devriez utiliser différentes approches qui se prêtent à des résultats binaires, comme comparer les différences de vraisemblance.
la source