У меня есть динамическая наивная байесовская модель, обученная по нескольким временным переменным. Результатом модели является прогноз 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);