zl程序教程

您现在的位置是:首页 >  Java

当前栏目

用检索的思路做时间序列预测是一种怎样的体验

2023-02-18 16:34:16 时间

今天为大家介绍一篇CIKM 2022中比较有意思的时间序列预测论文。这篇论文的独特之处在于,在其他论文都在卷深度学习时序预测模型结构时,这篇文章从检索引入相关数据的角度解决时序预测问题。

  • 论文标题:Retrieval Based Time Series Forecasting
  • 下载地址:https://arxiv.org/pdf/2209.13525.pdf

1

核心思路

如果我们把时间序列预测看成一个数据补全问题,那么预测窗口长度占序列总长度的比例就决定了预测结果的不确定性有多大。因为缺失数据占比越多,对序列的补全就越发困难。这种情况下,单纯的优化模型结构也无济于事。因此,本文的核心思路为,当数据缺失比例较高时,能不能从其他时间序列中检索出一些相关的,作为一种信息补充手段,侧面缓解数据缺失度高的问题,降低预测的不确定性。

2

检索预测的好处论证

文中使用了单独一章的篇幅,从理论的角度分析引入检索序列作为信息补充,能够带来的预测效果增益。整体的论证包括3个步骤(X表示输入的有缺失值序列,\hat{X}表示模型预测的序列,\tilde{X}表示真实的无缺失值对的序列,Y表示检索的额外序列):

  • 预测结果的不确定性等价于MSE:预测结果的不确定性定义为,给定预测结果下真实结果的的条件熵,可以证明这个熵就等价于预测结果和真实结果的MSE
  • 最小化MSE等价于最大化预测序列和真实序列的互信息:由下面3个公式推导出来,分别表示最小化MSE等价于给定预测结果真实结果条件概率分布极大似然,极大似然等价于负的条件熵,进而等价于最大化互信息。
  • 引入相关的序列信息有助于提升预测序列与真实序列互信息的下界:

综合上面3个步骤的论证,引入检索的序列对于最终预测结果的不确定性是有缓解作用的。

3

具体实现方法

在具体的实现上,主要包括两个方面,一方面是针对当前样本如何检索出相关序列,另一方面是如何将这些检索到的序列引入到模型中。

在检索数据上有两种方法,一种是基于内容检索,另一种是基于关系检索。基于内容检索需要对比当前时间序列和数据库中其他时间序列之间的序列相似度,然而由于本文的场景是给定的历史序列比较短,因此这种基于内容检索的方法会带来比较大的不确定性。本文采用了另一种方法,基于关系进行检索。构造一个时间序列的关系图,在图上进行随机游走计算序列之间的关系分,将分数最高,也就是逻辑关系最密切的topK个序列检索出来作为模型输入。

在模型结构上,原始的时间序列和检索得到的多个时间序列,经过两个独立的全连接层,生成各个序列的向量化表示。接下来,使用content attention计算原始序列和各个检索序列之间的关系,并使用temporal attention计算序列内部不同时间步的关系。这里就和Spatial-Temporal的模型结构很像了。最终通过一层全连接输出层,将预测结果映射到期望的输出维度。

其实从这个方法的整体来看,与图时间序列预测非常像。主要的区别在于,本文并不是针对图时间序列预测这个场景,文中原始序列也不在database中。而Spatial-Temporal中所有序列都在database中。文中最后也提出了本文和Spatial-Temporal的关系,第一个步骤就是在筛选重要的邻居节点,第二个步骤是图上的信息汇聚。

4

实验结果

下面几张图是基于检索的时序预测相比一些主流深度学习模型的效果,对比模型包括Informer、Nbeats等:

文中也进行了一些消融实验,对比模型不同配置的效果差异:

5

总结

本文从检索的角度解决时间序列预测问题,通过在数据库中检索和当前时间序列相关的其他序列,为当前样本的预测提供更丰富的信息,减小当历史已知时间窗口较短时模型预测的不确定行。

END