Tengo un modelo dinámico de Bayes ingenuo entrenado en un par de variables temporales. La salida del modelo es la predicción de P(Event) @ t+1
, estimada en cada uno t
.
La gráfica de P(Event)
versus time
es como se da en la figura a continuación. En esta figura, la línea negra representa P(Event)
lo predicho por mi modelo; la línea roja horizontal representa la probabilidad previa de que ocurra el evento; y las líneas verticales punteadas representan las (cinco) ocurrencias de eventos en la serie de tiempo.
Idealmente, deseo ver el P(Event)
pico predicho antes de observar cualquier evento y permanecer cerca de cero cuando no hay perspectiva de un evento.
Quiero poder informar qué tan bien funciona mi modelo (la línea negra) al predecir los sucesos del evento. Un candidato obvio para comparar mi modelo es la probabilidad previa de evento (la línea roja), que si se usara como predictor predeciría el mismo valor de probabilidad para todos t
.
¿Cuál es el mejor método formal para lograr esta comparación?
PD: Actualmente estoy usando la puntuación (intuitiva) como se codifica a continuación, donde una puntuación general más baja indica un mejor rendimiento de predicción. Descubrí que en realidad es bastante difícil vencer al anterior con esta puntuación:
# 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);