Оцінка ефективності прогнозування часових рядів


9

У мене є динамічна модель наївних баєсів, що навчається на кількох часових змінних. Результатом моделі є прогнозування P(Event) @ t+1, оцінене на кожній t.

Діаграма P(Event)порівняння timeнаведена на малюнку нижче. На цій фігурі чорна лінія відображається так, P(Event)як передбачила моя модель; горизонтальна червона лінія представляє собою попереднє ймовірність того, що відбувається події; і пунктирні вертикальні лінії представляють (п'ять) подій подій у часовому ряді.

В ідеалі я хочу побачити передбачуваний P(Event)пік перед спостереженням за будь-якими подіями і залишатись близьким до нуля, коли немає перспективи події.

P (подія) та часовий графік

Я хочу мати змогу повідомити, наскільки добре працює моя модель (чорна лінія) при прогнозуванні подій. Очевидним кандидатом для порівняння моєї моделі є попередня ймовірність події (червона лінія), яка, якби вона була використана як предиктор, - передбачила б однакове значення ймовірності для всіх 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);

Як ви думаєте, ви могли б накласти значущу функцію втрат? Чи є спосіб сказати, скільки ви набираєте / втрачаєте, здогадуючись правильно / неправильно?
Джеймс

Я думав про це, але не хочу вигадувати довільну функцію втрат, яку я можу налаштувати, щоб досягти низької або високої продуктивності, як я хочу.
Жубарб

Відповіді:


1

Можна створити криву ROC. Для заданого значення p між 0 і 1 ви прогнозуєте, що подія відбудеться, якщо прогнозована ймовірність більша за p. Тоді ви обчислюєте TPR і FPR, що дає вам єдину точку на кривій ROC. Змінюючи p від нуля до одиниці, ви отримуєте всю криву. Напр., Для р <0,005 попередник, що базується раніше, завжди скаже, що подія відбуватиметься в усі часи.

Докладніше див:

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


Просто додамо, що AUC доступний як підсумкова статистика цих кривих.
здогадки
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.