У мене є динамічна модель наївних баєсів, що навчається на кількох часових змінних. Результатом моделі є прогнозування P(Event) @ t+1
, оцінене на кожній t
.
Діаграма P(Event)
порівняння time
наведена на малюнку нижче. На цій фігурі чорна лінія відображається так, P(Event)
як передбачила моя модель; горизонтальна червона лінія представляє собою попереднє ймовірність того, що відбувається події; і пунктирні вертикальні лінії представляють (п'ять) подій подій у часовому ряді.
В ідеалі я хочу побачити передбачуваний P(Event)
пік перед спостереженням за будь-якими подіями і залишатись близьким до нуля, коли немає перспективи події.
Я хочу мати змогу повідомити, наскільки добре працює моя модель (чорна лінія) при прогнозуванні подій. Очевидним кандидатом для порівняння моєї моделі є попередня ймовірність події (червона лінія), яка, якби вона була використана як предиктор, - передбачила б однакове значення ймовірності для всіх t
.
Який найкращий формальний метод досягти цього порівняння?
PS: В даний час я використовую (інтуїтивно зрозумілий) бал, як зашифровано нижче, де загальний нижчий бал вказує на кращі показники прогнозування. Я виявив, що насправді досить складно перемогти попередній за допомогою цього балу:
# 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);