我有一个在几个时间变量上训练过的动态朴素贝叶斯模型。模型的输出是P(Event) @ t+1
每个的预测t
。
P(Event)
vs 的曲线time
如下图所示。在此图中,黑线代表P(Event)
我的模型所预测的;的水平红线表示事件发生的先验概率; 和垂直虚线表示在时间序列中的(5个)的事件发生。
理想情况下,我希望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);
您认为您可以施加有意义的损失函数吗?有没有办法说出您通过正确/错误地猜测而获得/损失了多少?
—
詹姆斯
我想到了这一点,但是我不想发明一个任意损失函数,可以根据需要调整该函数以实现低或高性能。
—
朱巴卜2014年