Mesures d'erreur pour les modèles de Poisson à validation croisée

29

Je suis en train de valider un modèle qui essaie de prédire un nombre. S'il s'agissait d'un problème de classification binaire, je calculerais l'ASC hors pli, et s'il s'agissait d'un problème de régression, je calculerais le RMSE ou MAE hors pli.

Pour un modèle de Poisson, quelles mesures d'erreur puis-je utiliser pour évaluer la «précision» des prédictions hors échantillon? Existe-t-il une extension de Poisson de l'ASC qui examine dans quelle mesure les prédictions ordonnent les valeurs réelles?

Il semble que de nombreuses compétitions Kaggle pour les décomptes (par exemple, le nombre de votes utiles qu'un examen de yelp obtiendra, ou le nombre de jours qu'un patient passera à l'hôpital) utilisent l'erreur quadratique moyenne du journal, ou RMLSE.


/ Edit: Une chose que j'ai faite est de calculer les déciles des valeurs prédites, puis de regarder les nombres réels, regroupés par décile. Si le décile 1 est bas, le décile 10 est élevé et que les déciles intermédiaires augmentent strictement, j'ai appelé le modèle "bon", mais j'ai eu du mal à quantifier ce processus, et je suis convaincu qu'il y a un meilleur approche.

/ Edit 2: Je recherche une formule qui prend les valeurs prévues et réelles et renvoie une métrique "erreur" ou "précision". Mon plan est de calculer cette fonction sur les données hors pli lors de la validation croisée, puis de l'utiliser pour comparer une grande variété de modèles (par exemple une régression de poisson, une forêt aléatoire et un GBM ).

Par exemple, une de ces fonctions est RMSE = sqrt(mean((predicted-actual)^2)). Une telle fonction serait AUC . Aucune de ces fonctions ne semble convenir aux données de poisson.

Zach
la source
Pour les modèles de Poisson, vous pouvez utiliser la déviance; qui s'apparente à un MSE mais mieux adapté à un Poisson. Si la taille de vos échantillons n'est pas petite, un MSE pondéré serait assez similaire.
Glen_b -Reinstate Monica
@Glen_b quelle est la formule de la déviance?
Zach
1
Déviance . Comment adaptez-vous votre modèle de Poisson?
Glen_b -Reinstate Monica
Deux façons différentes, allant d'une régression de poisson pénalisée à un gbm. Je recherche une bonne mesure d'erreur pour comparer différents modèles. Merci pour le conseil.
Zach
La régression de Poisson au moins devrait vous donner automatiquement une déviance
Glen_b -Reinstate Monica

Réponses:

37

Il existe quelques règles de notation correctes et strictement correctes pour les données de comptage que vous pouvez utiliser. Les règles de notation sont des pénalités introduites, P étant la distribution prédictive et y la valeur observée. Ils ont un certain nombre de propriétés souhaitables, d'abord et avant tout qu'une prévision qui est plus proche de la vraie probabilité recevra toujours moins de pénalité et qu'il y a une meilleure prévision (unique) et que c'est lorsque la probabilité prédite coïncide avec la vraie probabilité. Ainsi, minimiser l'espérance de s ( y , P ) signifie rapporter les vrais probabilités. Voir aussi Wikipedia .s(y,P)Pys(y,P)

Souvent, on prend une moyenne de celles sur toutes les valeurs prédites comme

S=1ni=1ns(y(i),P(i))

La règle à prendre dépend de votre objectif, mais je donnerai une caractérisation approximative lorsque chacun est bon à utiliser.

f(y)Pr(Y=y)F(y)k0,1,,Iμσ

Règles de notation strictement appropriées

  • Score de Brier : (stable pour le déséquilibre de taille dans les prédicteurs catégoriels)s(y,P)=2f(y)+kf2(k)
  • Score de Dawid-Sebastiani : (bon pour le choix général du modèle prédictif; stable pour le déséquilibre de taille dans les prédicteurs catégoriques)s(y,P)=(yμσ)2+2logσ
  • Score de déviance : ( est un terme de normalisation qui ne dépend que de , dans les modèles de Poisson, il est généralement considéré comme la déviance saturée; bon pour une utilisation avec des estimations à partir de un cadre ML)s(y,P)=2logf(y)+gygyy
  • Score logarithmique : (très facilement calculé; stable pour le déséquilibre de taille dans les prédicteurs catégoriques)s(y,P)=logf(y)
  • Score de probabilité classé : (bon pour contraster différentes prédictions de comptes très élevés; sensible au déséquilibre de taille dans les prédicteurs catégoriques)s(y,P)=k{F(k)I(yk)}2
  • Score sphérique : (stable pour le déséquilibre de taille dans les prédicteurs catégoriels)s(y,P)=f(y)kf2(k)

Autres règles de notation (moins appropriées mais souvent utilisées)

  • Score d'erreur absolu :(pas bon)s(y,P)=|yμ|
  • Score d'erreur quadratique : (pas strictement approprié; sensible aux valeurs aberrantes; sensible au déséquilibre de taille dans les prédicteurs catégoriques)s(y,P)=(yμ)2
  • Score d'erreur quadratique normalisé de Pearson : (pas strictement approprié; sensible aux valeurs aberrantes; peut être utilisé pour vérifier si le modèle vérifie si le score moyen est très différent de 1; stable pour le déséquilibre de taille dans les prédicteurs catégoriels)s(y,P)=(yμσ)2

Exemple de code R pour les règles strictement appropriées:

library(vcdExtra)
m1 <- glm(Freq ~ mental, family=poisson, data=Mental) 

# scores for the first observation
mu <- predict(m1, type="response")[1]
x  <- Mental$Freq[1]

# logarithmic (equivalent to deviance score up to a constant) 
-log(dpois(x, lambda=mu))

# quadratic (brier)
-2*dpois(x,lambda=mu) + sapply(mu, function(x){ sum(dpois(1:1000,lambda=x)^2) })

# spherical
- dpois(x,mu) / sqrt(sapply(mu, function(x){ sum(dpois(1:1000,lambda=x)^2) }))

# ranked probability score
sum(ppois((-1):(x-1), mu)^2) + sum((ppois(x:10000,mu)-1)^2)

# Dawid Sebastiani
(x-mu)^2/mu + log(mu)
Momo
la source
@Momo, c'est un vieux fil mais très bon et utile. Question cependant sur le score logarithmique. Vous avez utilisé la fonction -log(f(y)). Le -signe devrait-il vraiment être là? Dans le lien wikipedia de votre règle de notation ( en.wikipedia.org/wiki/Scoring_rule#Logarithmic_scoring_rule ), le score logarithmique n'est pas un signe négatif: L(r,i)=ln(ri)est-ce normal? Enfin, dans ce cas, un score plus élevé est-il meilleur ou pire?
Bastien
Est-il préférable (ou du moins plus conservateur et plus réaliste) de calculer ces mesures sur un ensemble de données de validation qui ne faisait pas partie des données utilisées pour estimer les modèles?
Fred
Étant donné que les GLM sont ajustés en utilisant les moindres carrés itérativement repondérés, comme dans bwlewis.github.io/GLM , quelle serait en réalité l'objection de calculer un R2 pondéré sur l'échelle de liaison GLM, en utilisant des poids 1 / variance comme poids (ce que glm rend dans les poids de la fente dans un ajustement glm)? Cela fonctionnerait également pour un poisson glm non?
Tom Wenseleers
Voir stats.stackexchange.com/questions/412580/… pour un exemple reproductible ...
Tom Wenseleers