Eu tenho um modelo dinâmico ingênuo de Bayes treinado em algumas variáveis temporais. A saída do modelo é a previsão de P(Event) @ t+1
, estimada em cada um t
.
O gráfico de P(Event)
versus time
é como mostrado na figura abaixo. Nesta figura, a linha preta representa P(Event)
como previsto pelo meu modelo; a linha vermelha horizontal representa a probabilidade anterior do evento acontecer; e as linhas verticais pontilhadas representam as (cinco) ocorrências de eventos na série temporal.
Idealmente, desejo ver o P(Event)
pico previsto antes de observar qualquer evento e permanecer próximo de zero quando não houver perspectiva de um evento.
Quero poder relatar o desempenho do meu modelo (a linha preta) na previsão das ocorrências de eventos. Um candidato óbvio para comparar meu modelo é a probabilidade anterior de evento (a linha vermelha), que, se usada como preditor, preveria o mesmo valor de probabilidade para todos t
.
Qual é o melhor método formal para alcançar essa comparação?
PS: Atualmente, estou usando a pontuação (intuitiva) conforme codificado abaixo, onde uma pontuação geral mais baixa indica melhor desempenho da previsão. Descobri que é realmente muito difícil superar o anterior com esta pontuação:
# 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);