RMSE (Root Mean Squared Error) pour les modèles logistiques


10

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 0ou 1et 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

1
Dans ce cas, il s'agit du score Brier, voir actuaries.org/ASTIN/Colloquia/Hague/Papers/Lo.pdf

Réponses:


14

Pour comprendre pourquoi «[la] réponse est soit 0ou 1[mais] les prédictions sont des probabilités entre 0- 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. La predict.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'utilisation type="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:

  1. Le premier, et le plus intuitif, consiste à comparer la classe prédite avec la classe observée et à calculer le pourcentage correct. Bien qu'il soit intuitif, il a des problèmes. Elle dépend, en partie, du fait que le seuil est optimal en plus que les autres aspects du modèle soient adaptés de manière appropriée. Il jette également beaucoup d'informations (c'est-à-dire à quelle distance du seuil la probabilité prédite est), ce qui n'est pas une bonne chose à faire.
  2. Votre prochaine option consiste à utiliser la zone située sous la courbe des caractéristiques de fonctionnement du récepteur (ROC). La plupart des gens utilisent cette option; c'est bien mieux que d'utiliser le pourcentage correct. La chose à propos de l'AUC que la plupart des gens ne réalisent pas, cependant, c'est qu'elle mesure en fait l'ordre approprié de vos prévisions, et non leur exactitude réelle. Autrement dit, si vous aviez prévu des probabilités pour quatre observations de .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.
  3. La troisième façon d'évaluer votre modèle serait d'utiliser une fonction de score appropriée. La fonction de score la plus populaire dans votre contexte est peut-être le score de Brier . Comme le note @fcoppens, la méthode dans votre code est le score Brier. Il évaluera non seulement si le modèle prédit de manière appropriée qu'une observation est plus susceptible d'être un «succès» qu'une autre observation, mais si la probabilité prédite par le modèle est réellement correcte.

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 .


1

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.