Valutazione delle prestazioni di previsione di serie storiche


9

Ho un modello dinamico Naive Bayes addestrato su un paio di variabili temporali. L'output del modello è la previsione di P(Event) @ t+1, stimata a ciascuno t.

La trama di P(Event)versus timeè come mostrato nella figura sotto. In questa figura, la linea nera rappresenta P(Event)come previsto dal mio modello; la linea rossa orizzontale rappresenta la probabilità precedente che si verifichi l'evento; e le linee verticali tratteggiate rappresentano le (cinque) occorrenze di eventi nelle serie temporali.

Idealmente, vorrei vedere il P(Event)picco previsto prima di osservare qualsiasi evento e rimanere vicino allo zero quando non c'è prospettiva di un evento.

P (Evento) rispetto al Grafico temporale

Voglio essere in grado di riferire quanto bene il mio modello (la linea nera) si comporta nel prevedere le occorrenze degli eventi. Un candidato ovvio per confrontare il mio modello con è la precedente probabilità di evento (la linea rossa), che - se usato come una previsione - predirebbe lo stesso valore di probabilità per tutti t.

Qual è il miglior metodo formale per ottenere questo confronto?

PS: Attualmente sto utilizzando il punteggio (intuitivo) come indicato di seguito, in cui un punteggio complessivo più basso indica migliori prestazioni di previsione. Ho scoperto che in realtà è abbastanza difficile battere il precedente con questo punteggio:

# Get prediction performance
model_score = 0; prior_score=0; 

for t in range(len(timeSeries)):

   if(timeSeries[t]== event):  # event has happened
      cur_model_score = 1- prob_prediction[t]; 
      cur_prior_score = 1 - prior
   else: # no event
      cur_model_score = prob_prediction[t] - 0;
      cur_prior_score = prior - 0;

   model_score = model_score + abs(cur_model_score);
   prior_score = prior_score + abs(cur_prior_score);

Pensi di poter imporre una significativa funzione di perdita? C'è un modo per dire quanto guadagni / perdi indovinando correttamente / in modo errato?
James,

Ci ho pensato, ma non voglio inventare una funzione di perdita arbitraria che posso modificare per ottenere prestazioni basse o alte come desidero.
Zhubarb,

Risposte:


1

È possibile creare una curva ROC. Per un dato valore di p compreso tra 0 e 1, si prevede che l'evento accadrà se la probabilità prevista è maggiore di p. Quindi calcoli TPR e FPR che ti danno un singolo punto sulla curva ROC. Variando p tra zero e uno si ottiene l'intera curva. Ad esempio per p <0,005 il predittore basato su precedenti dirà sempre che l'evento accadrà in ogni momento.

Per di più, vedi:

http://en.wikipedia.org/wiki/Receiver_operating_characteristic


Solo per aggiungere che l'AUC è disponibile come statistica riassuntiva per queste curve.
congetture il
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.