深度时间序列模型:无师自通

深度时间序列模型:无师自通



前言

近些年来,时序预测方向研究爆火,这里我们分享综述论文Deep Time Series Models: A Comprehensive Survey and Benchmark,该论文非常完善的总结了近些年的热点时序论文,并且针对时序预测研究方向各个点进行了提炼和汇总。如果初看这篇论文,可能晦涩难懂,这里我尽量采用最为朴素的方法进行描述。
论文连接:https://arxiv.org/abs/2407.13278


一、预备知识

1.1 什么是时序预测

从简考虑,就是用过去T时间步的值预测未来H时间步的值,举个例子,我们数据采样方式为1小时采样一次,使用过去三天的家庭用电度数预测未来一天用电度数,也就是使用96个时间步预测24个时间步。
如果作为初初初学者,可能会想,预测的依据是什么,怎么就给预测出来了。这里我们引入一点点机器学习的知识,训练集,想象一下,如果训练集有1000条,我们可以使用1-96作为过去输入,97-120作为未来输出,我们将训练集进行划分,可以得到很多组这样的输入输出。1-96放入模型,输出97-120。将很多对这样的输入输出训练这个模型,让这个模型学习到过去96和未来24之间的大一统关系。此时我们将现在最近的96步作为输入,就可以让模型输出未来的24步真实数据了。
OK,我们升级,如果我们现在预测变量不仅仅只是用电量,还预测一个家庭的声音大小情况等等,这样就是多变量预测,使用数学符号表示为 X ∈ R T × C − > X ∈ R H × C X\in \mathbb{R}^{T\times C}->X\in \mathbb{R}^{H\times C} XRT×C>XRH×C

1.2 简单的时序性质

明白了时序预测,开始加深一下咱们的知识量。思考一个问题?为什么通过不断的输入和输出,就可以训练一个模型预测到真实的值了呢,简单一想,应该是模型通过大量的数据比对,获得了输入数据与输出数据之间一般存在的潜在关系,那么这个关系是什么呢。这里给出两个基本答案,时间依赖性和变量相关性。
时间依赖性质:也就时序固有的顺序性质。想象一下cos函数,如果数据的变化像这种函数一样,我们可以很简单的从过去看到未来。著名模型ARIMA(Autoregressive Integrated Moving Average),简单并且可解释性极强,有兴趣可读。
变量相关性:也就是一个变量会对另一个变量未来产生影响的关系,如一时刻光照很强,大概率过一会温度就会升上去。是不是感觉就这?如果在光照强一会,发生意外下了场雨,温度可能就上不去了,还有各种各样的原因。因此变量相关性也是时序中必须考虑的基本性质之一。如GNN和Informer这些都将变量考虑进去了。

1.3 我们还可以做什么

我们知道了这个性质之后,不仅仅可以做时序预测,如分类等,如某一段时间光照强度非常大,可以认为这是晴天,等等。还有时间插补,比如在数据采样时,有一段没有采上,我们可以根据已知数据预测出来,有点像预测。其余方向大家自行脑部。

二、基于数据的研究

有了这些基础知识,我们可以开始做研究了

2.1 分解

2.1.1 季节趋势分解

上面我们说明到时序顺序依赖,也想象过cos函数,但是如果是一个倾斜不断向上的cos函数呢,向上了然后又向下呢,我们再去描述顺序依赖,就有了些许困难。这里我们引入分解,如果我们将这一条序列拆分为两个序列,一个序列只包含cos函数,另一个序列只包含上升下降的趋势,这样可以更好的描述原始序列了,然后用两个模型分别学习这两个序列,模型就可以更好的学习复杂序列的各个部分。这里我们描述一个简单的分解方法,来自Autoformer模型,分解过程如下:
X t r e n d = A v g P o o l ( P a d d i n g ( X ) ) , X s e a s o n a l = X − X t r e n d X_{trend} = AvgPool(Padding(X)),\\ X_{seasonal} = X - X_{trend} Xtrend=AvgPool(Padding(X)),Xseasonal=XXtrend
我们对原始序列一段一段的取平均值,就可以得到趋势变化,减去趋势变化后我们作为季节变化,这里比较草率,但是好理解,并且实验证明效果也很好。

2.1.2 矩阵分解

在这里插入图片描述
上面的分解是基于单变量序列提出的。这里我们讨论多元序列的分解。因为我们很多时候的应用场景都为多元变量。我们可以将高维序列数据分解为低维潜在空间的两个矩阵的乘积来工作。至于怎么工作呢,一个简单的方法,将他们分别送入两个模型,进行专项捕获。
实际工作比这复杂很多。这里贴出几个论文,NoTMF将向量自回归过程与差分运算集成到经典的低秩矩阵分解框架中,以更好地对具有趋势和季节性的现实世界时间序列数据进行建模。 BTF消除了调整正则化参数的需要,是一个完全贝叶斯模型,它将概率矩阵分解和向量自回归过程集成到单个概率图形模型中。 DeepGLO没有使用基于自回归的时间正则化,而是利用时间卷积网络进行正则化来捕获非线性依赖性。 LSTM-GL-ReMF包含一个基于 LSTM 的时间正则器来学习复杂的长期和短期非线性时间相关性,以及一个图拉普拉斯空间正则器来捕获空间相关性。

2.2 傅里叶分析

傅里叶分析可以将物理信号转换到傅里叶域,以突出原始数据的固有频率特性,并且已成为广泛领域中公认的分析工具。由于时间序列通常通过对原始连续信号进行采样来记录为一系列离散时间点,因此傅里叶分析已成为时间序列建模的主流工具之一,并已被证明具有良好的有效性和效率。

2.2.1 时频建模

套话说了一堆,我们来看看怎么用。傅里叶变换将顺序数据可以分解并由一系列周期信号表示。这里面的振幅有高有低,具体是啥样可以百度搜索或者看我的另一篇博客关于koopa的,链接放在底部。因此,它可以通过分析最高振幅分量来识别数据中潜在的主导周期及其相应的频率。比如,一个时序数据的主要成分是cos(x),也就是以 2 π 2\pi 2π为周期,当然时序数据是多个周期函数的叠加。
TimesNet提出了一种方法,根据最重要的周期进行分割,将一维单变量数据变为二维。然后进行处理,PDF则是认为频率值越大,有助于更明显地区分长期和短期依赖关系。
FITS通过消除高于指定截止频率的高频分量,从而压缩模型大小,同时保留基本信息。相反的想法来看,FEDformer认为仅保留低频分量不足以进行时间序列建模,因为它可能会忽略数据中的重要波动。FEDformer通过随机选择恒定数量的傅立叶分量(包括高频分量和低频分量)来表示序列。
STFNet将短时傅里叶变换应用于输入信号,并直接在频域中应用滤波、卷积和池化操作。 StemGNN结合了图傅里叶变换(GFT)和离散傅里叶变换来对系列间相关性和时间依赖性进行建模。 EV-FGN在嵌入的时空平面上使用二维离散傅立叶变换,并执行图卷积以在频域中同时捕获时空依赖性。 FreTS利用离散傅立叶变换(DFT)将数据转换为频域频谱,并引入专为复数设计的频域 MLP ,并对实部和虚部进行分离建模。 FCVAE将全局和局部频率特征同时集成到条件变分自动编码器(CVAE)的条件中。最近的 TSLANet提出了一种轻量级自适应谱块(ASB)来取代自注意力机制,这是通过全局和局部滤波器基于傅立叶的乘法来实现的。 FourierDiffusion探索将基于分数的 SDE 扩散公式扩展到复值数据,从而在频域中实现时间序列扩散。
在这里插入图片描述

三、基于模型的研究

3.1 多层感知机(MLP)

就是最最普通的神经网络,由多个输入连接多个输出,可能会连接多个中间层。最简单的如下

在这里插入图片描述
最近很多工作基于离散时间点上使用简单的线性层。 TimeMixer 认为时间序列在不同的采样尺度上表现出不同的模式,并提出了一种基于 MLP 的多尺度混合架构。 TiDE结合了协变量来增强时间序列预测。

3.2 循环神经网络

循环神经网络(RNNs)是特别设计用来建模序列数据的,例如自然语言处理和音频建模。由于时间序列数据也具有序列性,因此RNN已经成为分析时间序列数据的一种流行选择。现有的基于RNN的深度时间序列模型主要集中在解决由基础循环结构导致的梯度消失问题,并建模多变量之间的相互关联。先前的工作使用了RNN的各种变体来建模时间依赖性。
在这里插入图片描述
LSTNet结合了循环结构与卷积层,以捕捉变量间的短期局部依赖性和长期模式用于时间序列分析。此外,引入了一种基于周期模式的新型循环跳跃组件,以缓解在建模长期依赖性时的梯度消失问题。同样地,DA-RNN结合了循环单元与双阶段注意力机制,以自适应地在每个时间步长中提取相关的序列。除了确定性的预测之外,DeepAR提出了一个自回归循环网络模型来预测后续时间点的概率分布。从技术上讲,它不仅学习了时间序列中的季节性行为,还学习了时间序列中给定协变量之间的依赖性,这使得模型即使在几乎没有历史数据的情况下也能做出预测。SegRNN首先进行子序列分割,然后将子序列送入GRU序列,保留最后一个GRU单元,复制为多个GRU,数量与要求预测长度对应,最后将多个GRU输出作为预测结果。

3.3 卷积神经网络

卷积神经网络(CNN)具备良好的顺序性质,多用于时序预测
在这里插入图片描述
分为1D和2D卷积,一种是在单变量上捕获时序信息,一种是在整个时序上,捕获顺序以及变量间信息。
论文方法有:时间卷积网络(TCN)使用一堆具有逐渐增大的扩张因子的扩张卷积核来实现大的感受野。然而,TCN 有限的感受野使得它们很难捕获时间序列数据中的全局关系。PatchMixer则是使用子序列分割,然后子序列内卷积捕获子序列内局部信息,然后在子序列间进行卷积,捕获跨子序列的信息。 ModernTCN通过DWConv和ConvFFN分别增强传统TCN来捕获跨时间和跨变量依赖性。考虑到 DWConv 是为了学习时间信息而提出的,它是独立变量操作的,以学习每个单变量时间序列的时间依赖性。

3.4 图神经网络

在这里插入图片描述
一种引入变量之间邻接矩阵的神经网络,多用于时空预测,仅在两变量之间存在变是,使用神经网络进行连接。

3.5 Transformer(一般都用里面的Attention)

一个被研究烂了的模型
在这里插入图片描述
这里简单描述一下,核心思想是使用Attention机制,捕获时间序列上各个时间步之间的关系。如第1个时间步会对第5个时间步造成多少影响。
Attention一般有两种使用方式:
1、一个序列96个点,点与点之间的关系。
Informer引入了一种查询稀疏性度量,其中较大的值表示在自注意力机制中包含主要信息的更高几率。基于所提出的稀疏性度量,进一步设计了一种仅使用具有最大度量结果的顶部查询的ProbSparse自注意力机制,这可以减少时间和内存的二次复杂度。Pyraformer构建了一个多分辨率的 C-叉树,并开发了一种金字塔注意力机制,在这种机制中,每个节点只能注意到其邻近的、相邻的和子节点。通过计算出的注意力掩码,Pyraformer 能够以线性的时间和空间复杂度捕获短时和长时依赖性。
2、将一个序列96分为4个子序列,每个子序列长度为24,使用Attention机制探索子序列与子序列之间的关系。
由于Attention机制来源于自然语言处理,时序并没有丰富的语义信息,因此采用了子序列分割的方式,将每个子序列当作一个词进行处理。
PatchTST其中每个子序列级的令牌只包含来自单一序列的信息。除了捕捉单个序列内的片段级时间依赖性外,最近的方法还有捕捉来自不同变量随时间变化的片段之间的相互依赖性。Crossformer引入了一个包含跨时间阶段和跨维度阶段的两阶段注意力层,以有效地捕捉每个片段令牌之间的跨时间和跨变量依赖性,也就是变量内的Attention和变量间的Attention。

四、数据集

这里给出几个常用的数据集,并附上下载链接
Electricity Transformer Temperature (ETT),Electricity, Weather, Traffic, Exchange, and Illness (ILI)。
https://drive.google.com/drive/folders/1ZOYpTUa82_jCcxIdTmyr0LXQfvaM9vIy


总结

这里我只介绍综述的模型部分,并未涉及Benchmark部分。总体而言,该论文总结非常完善,总结了几乎所有时序预测的研究方法,包括基于数据的研究和基于模型的研究。
koopa介绍:https://blog.csdn.net/m0_46295679/article/details/142205402?spm=1001.2014.3001.5501

附录

图片均来自论文Deep Time Series Models: A Comprehensive Survey and Benchmark,水印是上传时自动添加,谅解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值