Métricas de error para validación cruzada de modelos Poisson


29

Estoy validando de forma cruzada un modelo que está tratando de predecir un recuento. Si este fuera un problema de clasificación binaria, calcularía el AUC fuera del pliegue, y si este fuera un problema de regresión, calcularía el RMSE o el MAE fuera del pliegue.

Para un modelo de Poisson, ¿qué métricas de error puedo usar para evaluar la "precisión" de las predicciones fuera de la muestra? ¿Existe una extensión de Poisson de AUC que observe qué tan bien las predicciones ordenan los valores reales?

Parece que muchas competiciones de Kaggle para conteos (p. Ej., Número de votos útiles que obtendrá una revisión de gritos, o número de días que un paciente pasará en el hospital) usan el error cuadrático medio log log, o RMLSE.


/ Editar: Una cosa que he estado haciendo es calcular deciles de los valores predichos, y luego mirar los recuentos reales, agrupados por decil. Si el decil 1 es bajo, el decil 10 es alto y los deciles intermedios están aumentando estrictamente, he estado llamando al modelo "bueno", pero he tenido problemas para cuantificar este proceso y estoy convencido de que hay un mejor enfoque.

/ Edición 2: estoy buscando una fórmula que tome valores predichos y reales y devuelva alguna métrica de "error" o "precisión". Mi plan es calcular esta función en los datos fuera del pliegue durante la validación cruzada, y luego usarla para comparar una amplia variedad de modelos (por ejemplo, una regresión de Poisson, un bosque aleatorio y un GBM ).

Por ejemplo, una de esas funciones es RMSE = sqrt(mean((predicted-actual)^2)). Otra de esas funciones sería AUC . Ninguna de las funciones parece ser adecuada para los datos de Poisson.


Para los modelos de Poisson, podría usar la desviación; que es similar a un MSE pero más adecuado para un Poisson. Si los tamaños de las muestras no son pequeños, un MSE ponderado sería bastante similar.
Glen_b -Reinstate Monica

@Glen_b ¿Cuál es la fórmula para la desviación?
Zach

1
Desviación . ¿Cómo estás ajustando tu modelo de Poisson?
Glen_b -Reinstalar Monica

Un par de formas diferentes, que van desde una regresión de Poisson penalizada a un gbm. Estoy buscando una buena métrica de error para comparar diferentes modelos. Gracias por el consejo.
Zach

La regresión de Poisson al menos debería darte una desviación automáticamente
Glen_b -Reinstate Monica

Respuestas:


37

Hay un par de reglas de puntuación adecuadas y estrictamente adecuadas para los datos de recuento que puede usar. Las reglas de puntuación son penalizaciones introducidas con P como la distribución predictiva yy el valor observado. Tienen una serie de propiedades deseables, en primer lugar que un pronóstico más cercano a la probabilidad real siempre recibirá menos penalización y hay un mejor pronóstico (único) y es cuando la probabilidad pronosticada coincide con la probabilidad verdadera. Por lo tanto, minimizar la expectativa de s ( y , P ) significa informar las probabilidades verdaderas. Ver también Wikipedia .s(y,PAGS)PAGSys(y,PAGS)

A menudo uno toma un promedio de aquellos sobre todos los valores predichos como

S=1norteyo=1nortes(y(yo),PAGS(yo))

La regla que debe tomar depende de su objetivo, pero daré una caracterización aproximada cuando cada una sea buena para usar.

F(y)F ( y ) k 0 , 1 , , I μ σPr(Y=y)F(y)k0 0,1,...,yoμσ

Reglas de puntuación estrictamente adecuadas

  • Puntuación Brier : (estable para el desequilibrio de tamaño en predictores categóricos)s(y,PAGS)=-2F(y)+kF2(k)
  • Puntuación de Dawid-Sebastiani : (bueno para la elección general del modelo predictivo; estable para el desequilibrio de tamaño en los predictores categóricos)s(y,PAGS)=(y-μσ)2+2Iniciar sesiónσ
  • Puntaje de desviación : ( es un término de normalización que solo depende de , en los modelos de Poisson generalmente se toma como la desviación saturada; bueno para usar con estimaciones de un marco de ML)g y ys(y,PAGS)=-2Iniciar sesiónF(y)+solysolyy
  • Puntuación logarítmica : (muy fácil de calcular; estable para el desequilibrio de tamaño en predictores categóricos)s(y,PAGS)=-Iniciar sesiónF(y)
  • Puntuación de probabilidad clasificada : (bueno para contrastar diferentes predicciones de conteos muy altos; susceptible de desequilibrio de tamaño en predictores categóricos)s(y,PAGS)=k{F(k)-yo(yk)}2
  • Puntaje esférico : (estable para el desequilibrio de tamaño en predictores categóricos)s(y,PAGS)=F(y)kF2(k)

Otras reglas de puntuación (no tan adecuadas pero de uso frecuente)

  • Puntuación de error absoluta :(Inapropiado)s(y,PAGS)=El |y-μEl |
  • Puntuación de error al cuadrado : (no estrictamente adecuado; susceptible de valores atípicos; susceptible de desequilibrio de tamaño en predictores categóricos)s(y,PAGS)=(y-μ)2
  • Puntuación de error al cuadrado normalizada de Pearson : (no estrictamente adecuado; susceptible de valores atípicos; puede usarse para verificar si el modelo verifica si la puntuación promedio es muy diferente de 1; estable para el desequilibrio de tamaño en predictores categóricos)s(y,PAGS)=(y-μσ)2

Ejemplo de código R para las reglas estrictamente adecuadas:

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, es un hilo viejo pero muy bueno y útil. Pregunta sin embargo sobre la puntuación logarítmica. Usaste la función -log(f(y)). ¿La -señal realmente debería estar allí? En el enlace de Wikipedia de su regla de puntuación ( en.wikipedia.org/wiki/Scoring_rule#Logarithmic_scoring_rule ), la puntuación logarítmica no tiene signo negativo: ¿ L(r,i)=ln(ri)es normal? Finalmente, en ese caso, ¿una puntuación más alta es mejor o peor?
Bastien

¿Es mejor (o al menos más conservador y más realista) calcular estas medidas en un conjunto de datos de validación que no formaba parte de los datos utilizados para estimar los modelos?
Fred

Dado que los GLM se ajustan utilizando mínimos cuadrados repesados ​​de forma iterativa, como en bwlewis.github.io/GLM , ¿cuál sería la objeción en realidad de calcular un R2 ponderado en la escala de enlace GLM, utilizando pesos de 1 / varianza como pesos (que glm devuelve en las ranuras de los pesos en un glm fit)? Esto también funcionaría para un Poisson glm ¿verdad?
Tom Wenseleers

Vea stats.stackexchange.com/questions/412580/… para ver un ejemplo reproducible ...
Tom Wenseleers
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.