时间序列预测方法

        之前一直在看时间序列预测方法的文献,最近终于有点头绪了,然后就花了些时间来做一下整理。时间序列预测方法可分为传统的,基于机器学习的和基于深度学习的,以下每一方面都列举了几个比较经典的模型算法。


目录

1 背景

2 传统的时间序列预测方法

         2.1 ARIMA

2.2 Holt

2.3 Facebook Prophet

3 基于机器学习的时间序列预测方法

3.1 支持向量机(SVM)

3.2 贝叶斯网络(BN)

3.3 矩阵分解(MF)

3.4 高斯过程(GP)

4 基于深度学习的时间序列预测方法

4.1 长短期记忆网络(LSTM)

4.2 Transformer

4.3 Informer

5 总结

参考文献


1 背景

        现实生活中,农业、商业、气象、军事和医疗等领域每天都会产生大量的数据。例如,金融领域股票价格随时间的走势,电商行业每日的销售额,旅游行业随着节假日周期变化的机票酒店价格等。

        我们称这种不同时间收到的,描述一个或多种特征随着时间发生变化的数据,为时间序列数据(Time Series Data)。

        通俗地说,时间序列是按照时间排序的一组随机变量,它通常是在相等间隔的时间段内,依照给定的采样率对某种潜在过程进行观测的结果。时间序列数据通常是一系列实值型数据,用X_1,X_2,X_3,\cdot \cdot \cdot ,X_t,X_t \in R(t \in Z) 表示时间。

        总之,目前时间序列数据正以不可预测的速度几乎产生于现实生活中的每一个应用领域。

        时间序列数据的研究方法主要包括分类、聚类和回归预测等方面,本文重点讨论时间序列预测方法。现实生活中的时间序列数据预测问题有很多,包括语音分析、噪声消除、商品销售、气象研究以及股票市场的分析等,其本质主要就是通过一种或者多种维度的数据本身内在与时间的关联特性,利用历史的数据挖掘出这种规律并对未来做出预测这么一件事情。

        本文主要介绍时间序列预测方法,第2节主要描述传统的时间序列预测方法,第3节主要介绍基于机器学习的时间序列预测方法,第4节主要介绍基于深度学习的时间序列预测方法,最后总结全文。

2 传统的时间序列预测方法

        传统的时间序列预测方法主要是针对具体数据,设计数学(形态函数)模型,捕捉时序特征规律完成预测工作。其预测的针对性强,鲁棒性好,可解释,但是学习自由度低,泛化性差。

2.1 ARIMA

        ARIMA模型也被称为 Box-Jenkins 模型,是由Box和Jenkins提出的一著名时间序列预测方法,它是差分自回归滑动平均模型(Auto-Regressive Integrated Moving Averages)的首字母缩写。主要应用于单变量、同方差场合的线性模型。该模型可以处理非平稳序列,主要思想是先对非平稳序列进行差分,使之变为平稳序列,然后再用ARMA模型来拟合差分后的序列。

        ARIMA模型有三个主要参数:

        Number of AR (Auto-Regressive) terms (p): 现在点使用多少个过往数据计算。AR条件仅仅是因变量的滞后。如:如果P等于5,那么预测x(t)将是x(t-1)…x(t-5)。

        Number of MA (Moving Average) terms (q):使用多少个过往的残余错误值。MA条件是预测方程的滞后预测错误。如:如果q等于5,预测x(t)将是e(t-1)…e(t-5),e(i)是移动平均叔在第i个瞬间和实际值的差值。

        Number of Differences (d):为时间序列成为平稳时所做的差分次数。有非季节性的差值,这种情况下我们采用一阶差分。

2.2 Holt

        对于没有明显趋势或季节因素的数据,可以使用“简单指数平滑”(一次指数平滑,或一阶holt),直观理解就是离当前时间越近的历史值,影响越大。将简单指数平滑扩展至趋势性数据则是二次指数平滑,或二阶holt。Holt(1957)和 Winters(1960)则是将Holt方法进行拓展用来捕获季节因素,称为Holt-Winter模型(三次指数平滑,或三阶holt)。Holt-Winters季节性方法包括预测方程和三个平滑方程:一个用于水平,一个用于趋势,另一个用于季节性分量。然后以累加或累乘的方式叠加分量组成预测。

2.3 Facebook Prophet

        Prophet 算法是基于时间序列分解和机器学习的拟合来做的,它最适用于具有强烈季节性影响和多个季节历史数据的时间序列。Prophet对缺失数据和趋势变化具有稳健性,并且通常可以很好地处理异常值。但是对于一些周期性或者趋势性不是很强的时间序列,用 Prophet 可能就不合适了。

3 基于机器学习的时间序列预测方法

        近年来时间序列预测方法,多采用机器学习方式。机器学习的方法,主要是构建样本数据集,采用“时间特征”到“样本值”的方式,通过监督学习,学习特征与标签之前的关联关系,从而实现时间序列预测。

        这些方法学习自由度高,可有效引入协变量影响因素,精度高,鲁棒性好。但是特征工程费时费力且依赖专家经验,外加复杂度高。

3.1 支持向量机(SVM)

        支持向量机(Support Vector Machine, SVM)是以统计学习理论为基础的机器学习方法,其主要以VC维理论和结构风险最小化原理为基础,同时也是建立在几何距离基础上的首个学习算法。支持向量机坚实的理论基础保证了其在解决小样本、高维数据和非线性问题方面展现出特有的优势。

3.2 贝叶斯网络(BN)

        贝叶斯网络(Bayesian Network,BN)本质上是一个有向无环图,使用概率网络进行不确定性推理。这个有向无环图中的节点表示随机变量,节点之间的有向弧代表变量之间的直接依赖关系。利用贝叶斯网络进行时间序列预测工作,主要是针对给定数据集学习出贝叶斯网络结构,这部分工作是构建整个预测模型的基础,其目的就是找出一个最适合数据的网络结构。

3.3 矩阵分解(MF)

        矩阵分解(Matrix Factorization,MF)也是机器学习中的一项重要工作,其在协同过滤、协作排序和社会网络分析等领域都发挥了重要作用。MF本质就是针对原始矩阵找出两个小规模矩阵,使得这两个小矩阵的乘积最大程度地近似拟合原始矩阵。高维时间序列的表示可以采用矩阵形式,其每一列对应的是时间点,每一行对应的是一维的时间序列特征。

        MF在处理拥有缺失数据的时间序列数据预测中取得了很好的效果。网络流量数据本质上是一个时间序列数据,其中存在缺失值的情况特别常见。

3.4 高斯过程(GP)

        高斯过程(Gauss Process,GP)最早于20世纪90年代末被提出。在2006年,Rasmussen和Williams在Gaussian Processes for Machine Learning一书中从机器学习核方法角度对高斯过程重新加以阐述,并对回归和分类两类问题做了系统的理论和数值实验分析。核函数的采用保证了高斯过程具有很强的处理非线性问题的能力,其还具有其他很多优点。高斯过程通常也可以被看作是一个采用概率分布进行描述的正态随机过程,可以对复杂的时变非参数函数进行通用简易求解,具有很灵活的非参数性质,能够对时间序列数据进行有效的估计。

4 基于深度学习的时间序列预测方法

4.1 长短期记忆网络(LSTM)

        长期以来,隐变量模型存在着长期信息保存和短期输入缺失的问题。解决这一问题的最早方法之一是长短期存储器(long short-term memory,LSTM)。它有许多与门控循环单元(GRU)一样的属性。

        可以说,长短期记忆网络的设计灵感来自于计算机的逻辑门。长短期记忆网络引入了记忆元(memory cell),或简称为单元(cell)。有些文献认为记忆元是隐状态的一种特殊类型,它们与隐状态具有相同的形状,其设计目的是用于记录附加的信息。 为了控制记忆元,我们需要许多门。其中一个门用来从单元中输出条目,我们将其称为输出门(output gate)。另外一个门用来决定何时将数据读入单元,我们将其称为输入门(input gate)。我们还需要一种机制来重置单元的内容,由遗忘门(forget gate)来管理,这种设计的动机与门控循环单元相同,能够通过专用机制决定什么时候记忆或忽略隐状态中的输入。

4.2 Transformer

        Transformer模型完全基于注意力机制,没有任何卷积层或循环神经网络层。尽管transformer最初是应用于在文本数据上的序列到序列学习,但现在已经推广到各种现代的深度学习中,例如语言、视觉、语音和强化学习领域。

        Transformer作为编码器-解码器架构的一个实例,其整体架构图在图4.2中展示。正如所见到的,transformer是由编码器和解码器组成的。与基于Bahdanau注意力实现的序列到序列的学习相比,transformer的编码器和解码器是基于自注意力的模块叠加而成的,源(输入)序列和目标(输出)序列的嵌入(embedding)表示将加上位置编码(positional encoding),再分别输入到编码器和解码器中。

4.3 Informer

        Transformer模型具有提高预测能力的潜力。但是,Transformer存在几个问题,使其无法直接应用于长时间序列预测问题,如二次时间复杂度、高内存使用率和编码器-解码器架构的固有限制。

        Informer模型则是为了解决这些问题而设计出来的。Informer基于Transformer模型,它具有三个独特的特点:(1) ProbSparse Self-attention机制,在时间复杂度和内存开销上实现了O(LlogL) ,并且在序列依赖关系对齐上具有相当的性能;(2)自注意力蒸馏机制,通过将层级输入减半来突出主导注意力,并高效处理极端长的输入序列;(3)生成式解码器,虽然其在概念上简单,但它能够以一次前向操作而不是分步操作的方式预测长时序序列,极大地提高了长序列预测的推理速度。

        上图是Informer模型整体框架图。图中左边的结构是编码器Encoder,其能接受长序列输入(绿色序列)。Encoder采用了自注意力蒸馏机制(蓝色梯形),通过将层级输入减半,来提取主导的注意力,并大幅减少网络规模;同时我们在Encoder中用ProbSparse self-attention替换掉了原始的self-attention,提高长序列处理的性能。图中右边的结构是解码器Decoder,其同样能接受长序列输入,并将需要预测的目标元素填充为零,通过将需要预测的该全零序列也作为特征图的加权注意力组成部分,用生成式的方式对预测序列(橙色序列)进行预测。

5 总结

        时间序列预测方法虽然经历了很长时间的发展,但数据规模的急剧增长给传统的预测方法带来了严峻的挑战,也严重影响了预测方法的效率。利用深度学习的方法来进行时间序列数据预测成为新的趋势,这也为我们进一步的研究指明了方向。

若有不合适的地方,欢迎来评论区补充、讨论~

觉得有帮助的可以点赞支持一下哦~


参考文献

[1] 杨海民, 潘志松, 白玮. 时间序列预测方法综述[J]. 计算机科学, 2019, 46(1): 21-28.

[2] VoidOc. 【时间序列】时间序列预测算法总结[EB/OL]. [2021-11-17]. https://zhuanlan.zhihu.com/p/421710621.

[3] SuperZhang828. 时间序列分析发展史[EB/OL]. [2017-7-1]. https://www.cnblogs.com/super-zhang-828/p/7102931.html.

[4] BOX G, JENKINS G. Time Series Analysis,Forecasting and Control[M]. HoldenGDay, 1990.

[5] 钱魏Way. 时间序列预测之ARIMA[EB/OL]. [2020-10-02]. https://www.biaodianfu.com/arima.html.

[6] 张戎. Facebook 时间序列预测算法 Prophet 的研究[EB/OL]. [2018-12-13]. https://zhuanlan.zhihu.com/p/52330017.

[7] Hochreiter S, Jürgen Schmidhuber. Long short-term memory[J]. Neural Computation, 1997(9):1735-1780.

[8] Zhang A, Li M, Lipton Z C, etal. Dive into deep learning[M]. 人民邮电出版社, 2019-6.

[9] Vaswani A, Shazeer N, Parmar N, etal. Attention is All you Need[J]. Neural Information Processing Systems, 2017.

[10] Zhou H, Zhang S, Peng J, etal. Informer: Beyond Efficient Transformer for Long Sequence Time-Series Forecasting[J]. National Conference on Artificial Intelligence, 2020.

  • 8
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值