Bewertung der Leistung der Zeitreihenvorhersage


9

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 timeist 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.

P (Ereignis) gegen Zeitdiagramm

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

Denken Sie, Sie könnten eine sinnvolle Verlustfunktion auferlegen? Gibt es eine Möglichkeit zu sagen, wie viel Sie gewinnen / verlieren, wenn Sie richtig / falsch raten?
James

Ich habe darüber nachgedacht, aber ich möchte keine willkürliche Verlustfunktion erfinden, die ich optimieren kann, um nach Belieben eine niedrige oder hohe Leistung zu erzielen.
Zhubarb

Antworten:


1

Sie können eine ROC-Kurve erstellen. Für einen gegebenen Wert von p zwischen 0 und 1 sagen Sie voraus, dass das Ereignis eintreten wird, wenn die vorhergesagte Wahrscheinlichkeit größer als p ist. Dann berechnen Sie TPR und FPR, wodurch Sie einen einzelnen Punkt auf der ROC-Kurve erhalten. Durch Variieren von p zwischen Null und Eins erhalten Sie die gesamte Kurve. Zum Beispiel sagt der auf Prädiktoren basierende Prädiktor für p <0,005 immer, dass das Ereignis jederzeit eintreten wird.

Weitere Informationen finden Sie unter:

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


Nur um hinzuzufügen, dass AUC als zusammenfassende Statistik für diese Kurven verfügbar ist.
Vermutungen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.