Metriche di errore per modelli Poisson con convalida incrociata


29

Sto convalidando in modo incrociato un modello che sta cercando di prevedere un conteggio. Se questo fosse un problema di classificazione binaria, calcolerei l'AUC out-fold e se questo fosse un problema di regressione calcolerei RMSE o MAE out-of-fold.

Per un modello di Poisson, quali parametri di errore posso usare per valutare la "precisione" delle previsioni fuori campione? Esiste un'estensione di Poisson dell'AUC che esamina in che misura le previsioni ordinano i valori effettivi?

Sembra che molte competizioni di Kaggle per i conteggi (ad es. Il numero di voti utili che una recensione di guaina otterrà o il numero di giorni che un paziente trascorrerà in ospedale) utilizzano un errore quadratico logaritmico radice o RMLSE.


/ Modifica: una cosa che ho fatto è calcolare i decili dei valori previsti e quindi guardare i conteggi effettivi, integrati dal decile. Se il decile 1 è basso, il decile 10 è alto e i decili in mezzo sono in costante aumento, ho chiamato il modello "buono", ma ho avuto problemi a quantificare questo processo e sono convinto che ci sia un migliore approccio.

/ Modifica 2: sto cercando una formula che accetta i valori previsti ed effettivi e restituisce alcune metriche "errore" o "accuratezza". Il mio piano è quello di calcolare questa funzione sui dati out-of-fold durante la convalida incrociata e quindi usarla per confrontare un'ampia varietà di modelli (ad esempio una regressione di Poisson, una foresta casuale e un GBM ).

Ad esempio, una di queste funzioni è RMSE = sqrt(mean((predicted-actual)^2)). Un'altra tale funzione sarebbe AUC . Nessuna delle due funzioni sembra essere corretta per i dati di poisson.


Per i modelli Poisson potresti usare la devianza; che è simile a un MSE ma più adatto a un Poisson. Se le dimensioni dei campioni non sono piccole, un MSE ponderato sarebbe abbastanza simile.
Glen_b -Restate Monica

@Glen_b qual è la formula per devianza?
Zach,

1
Devianza . Come stai adattando il tuo modello Poisson?
Glen_b -Restate Monica

Un paio di modi diversi, che vanno da una regressione di poisson penalizzata a un gbm. Sto cercando una buona metrica di errore per confrontare diversi modelli. Grazie per il consiglio.
Zach,

La regressione di Poisson almeno dovrebbe darti automaticamente una devianza
Glen_b -Reinstate Monica

Risposte:


37

Esistono un paio di regole di punteggio corrette e strettamente appropriate per i dati di conteggio che è possibile utilizzare. Le regole di punteggio sono penalità introdotte con P come distribuzione predittiva e y come valore osservato. Hanno un certo numero di proprietà desiderabili, in primo luogo che una previsione più vicina alla probabilità reale riceverà sempre meno penalità e che ci sia una previsione (unica) migliore e che è quando la probabilità prevista coincide con la probabilità reale. Ridurre al minimo le aspettative di s ( y , P ) significa riportare le vere probabilità. Vedi anche Wikipedia .S(y,P)PyS(y,P)

Spesso si prende una media di quelli su tutti i valori previsti come

S=1nΣio=1nS(y(io),P(io))

Quale regola prendere dipende dal tuo obiettivo, ma darò una caratterizzazione approssimativa quando ognuno è buono per essere usato.

In quanto segue uso per la funzione di massa di probabilità predittiva Pr ( Y = y ) e F ( y ) la funzione di distribuzione cumulativa predittiva. A k corre su tutto il supporto della distribuzione count (cioè 0 , 1 , ... , ). I denota la funzione di indicatore. μ e σ sono la deviazione media e standard della distribuzione predittiva (che di solito sono quantità stimate direttamente nei modelli di dati di conteggio). f(y)Pr(Y=y)F(y)ΣK0,1,...,ioμσ

Regole di punteggio rigorosamente appropriate

  • Brier Score : (stabile per squilibrio dimensionale nei predittori categorici)S(y,P)=-2f(y)+ΣKf2(K)
  • Punteggio Dawid-Sebastiani : (buono per la scelta generale del modello predittivo; stabile per lo squilibrio dimensionale nei predittori categorici)S(y,P)=(y-μσ)2+2logσ
  • Punteggio di devianza : ( g y è un termine di normalizzazione che dipende solo da y , nei modelli di Poisson è solitamente considerato come deviazione saturata; buono per l'uso con le stime da un framework ML)s(y,P)=2logf(y)+gygyy
  • Punteggio logaritmico : (calcolato molto facilmente; stabile per squilibrio dimensionale nei predittori categorici)s(y,P)=logf(y)
  • Punteggio di probabilità classificato : (buono per contrastare diverse previsioni di conteggi molto alti; suscettibile allo squilibrio dimensionale nei predittori categorici)s(y,P)=k{F(k)I(yk)}2
  • Punteggio sferico : (stabile per squilibrio dimensioni in predittori categoriali)s(y,P)=f(y)kf2(k)

Altre regole di punteggio (non così appropriate ma spesso utilizzate)

  • Punteggio di errore assoluto : (non corretto)S(y,P)=|y-μ|
  • Punteggio di errore quadrato : (non strettamente appropriato; sensibile agli outlier; sensibile allo squilibrio dimensionale nei predittori categorici)S(y,P)=(y-μ)2
  • Punteggio di errore quadrato normalizzato di Pearson : S(y,P)=(y-μσ)2

Esempio di codice R per le regole strettamente appropriate:

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, è un vecchio thread ma molto buono e utile. Domanda comunque sul punteggio logaritmico. Hai usato la funzione -log(f(y)). Il -segno dovrebbe davvero essere lì? Nel link della tua regola di punteggio wikipedia ( en.wikipedia.org/wiki/Scoring_rule#Logarithmic_scoring_rule ), il punteggio logaritmico non è un segno negativo: L(r,i)=ln(ri)è normale? Infine, in quel caso un punteggio più alto è migliore o peggiore?
Bastien,

È meglio (o almeno più conservativo e più realistico) calcolare queste misure su un set di dati di validazione che non faceva parte dei dati utilizzati per stimare i modelli?
Fred,

Dato che i GLM sono idonei utilizzando i minimi quadrati iterativamente ripesati, come in bwlewis.github.io/GLM , quale sarebbe l'obiezione in realtà di calcolare un R2 ponderato sulla scala dei collegamenti GLM, usando i pesi 1 / varianza come pesi (che glm restituisce nello slot pesi in una forma perfetta)? Funzionerebbe anche per una glm di Poisson, giusto?
Tom Wenseleers,

Vedi stats.stackexchange.com/questions/412580/… per un esempio riproducibile ...
Tom Wenseleers,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.