Ich habe ein dynamisches naives Bayes-Modell, das auf einigen zeitlichen Variablen trainiert ist. Die Ausgabe des Modells ist die Vorhersage von P(Event) @ t+1
, geschätzt bei jedem t
.
Die Darstellung von P(Event)
versus time
ist wie in der folgenden Abbildung angegeben. In dieser Abbildung stellt die schwarze Linie dar, P(Event)
wie von meinem Modell vorhergesagt; Die horizontale rote Linie stellt die vorherige Wahrscheinlichkeit des Eintretens des Ereignisses dar. und die gepunkteten vertikalen Linien repräsentieren die (fünf) Ereignisereignisse in der Zeitreihe.
Im Idealfall möchte ich den vorhergesagten P(Event)
Peak vor der Beobachtung von Ereignissen sehen und nahe Null bleiben, wenn keine Aussicht auf ein Ereignis besteht.
Ich möchte berichten können, wie gut mein Modell (die schwarze Linie) bei der Vorhersage des Ereignisses funktioniert. Ein offensichtlicher Kandidat für den Vergleich meines Modells ist die vorherige Wahrscheinlichkeit eines Ereignisses (die rote Linie), die - wenn sie als Prädiktor verwendet wird - für alle den gleichen Wahrscheinlichkeitswert vorhersagen würde t
.
Was ist die beste formale Methode , um diesen Vergleich zu erreichen?
PS: Ich verwende derzeit die unten angegebene (intuitive) Bewertung, wobei eine insgesamt niedrigere Bewertung eine bessere Vorhersageleistung anzeigt. Ich fand, dass es tatsächlich ziemlich schwierig ist, den Prior mit dieser Wertung zu schlagen:
# 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);