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.
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);