评估时间序列预测性能

机器算法验证 时间序列 可能性 预言 模型比较 模型评估
2022-03-04 07:45:45

我有一个对几个时间变量进行训练的动态朴素贝叶斯模型。模型的输出是 的预测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 曲线。对于介于 0 和 1 之间的给定 p 值,如果预测概率大于 p,则您预测事件将会发生。然后计算 TPR 和 FPR,它会在 ROC 曲线上为您提供一个点。通过在零和一之间改变 p,您可以获得整个曲线。例如,对于 p < 0.005,基于先验的预测器将始终说事件将始终发生。

有关更多信息,请参阅:

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