Mam Dynamiczny Naiwny model Bayesa wyszkolony w zakresie kilku zmiennych czasowych. Dane wyjściowe modelu są prognozami P(Event) @ t+1
szacowanymi dla każdego t
.
Fabuła P(Event)
versus time
jest taka, jak podano na poniższym rysunku. Na tym rysunku czarna linia przedstawia P(Event)
zgodnie z przewidywaniami mojego modelu; pozioma linia czerwona oznacza uprzedniej prawdopodobieństwo zdarzenia zdarzeń; a kropkowane pionowe linie reprezentują (pięć) zdarzeń w szeregach czasowych.
Idealnie, chciałbym zobaczyć przewidywany P(Event)
szczyt przed obserwacją jakichkolwiek zdarzeń i pozostać blisko zera, gdy nie ma żadnych perspektyw na zdarzenie.
Chcę móc raportować, jak dobrze mój model (czarna linia) radzi sobie w przewidywaniu zdarzeń. Oczywistym kandydatem do porównania mojego modelu jest wcześniejsze prawdopodobieństwo zdarzenia (czerwona linia), które - jeśli zastosowane jako predyktor - przewidziałoby dla wszystkich tę samą wartość prawdopodobieństwa t
.
Jaka jest najlepsza formalna metoda osiągnięcia tego porównania?
PS: Obecnie używam (intuicyjnej) punktacji, jak zakodowano poniżej, gdzie ogólny niższy wynik wskazuje na lepszą wydajność prognozowania. Przekonałem się, że tak trudno jest pokonać przeora z tym wynikiem:
# 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);