Оценка эффективности прогнозирования временных рядов

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);
Zhubarb
источник
Как вы думаете, вы могли бы навязать значимую функцию потери? Есть ли способ сказать, сколько вы получаете / теряете, правильно или неправильно угадывая?
Джеймс
Я думал об этом, но я не хочу изобретать произвольную функцию потерь, которую я могу настроить для достижения низкой или высокой производительности, как я хочу.
Жубарб

Ответы:

1

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

Для получения дополнительной информации см .:

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

Джеймс
источник
Просто добавьте, что AUC доступен в качестве сводной статистики для этих кривых.
предположения