时间序列预测方法

article/2025/8/18 21:05:49

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


目录

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.


http://chatgpt.dhexx.cn/article/D1cgU0Jy.shtml

相关文章

时间序列预处理

数据预处理的主要流程为:数据清洗、特征选择、归一化处理、划分窗口、Shuffle和划分数据集等五个阶段。选用何种方法没有统一的标准,只能根据不同类型的分析数据和业务需求,在对数据特性做了充分的理解之后,再选择与其最适配的数据…

时间序列分析相关概念

1. 在时间序列分析中, 数学模型是什么?数学公式又是什么?数学推导过程又是什么?… … 一句话:用数学公式后者符号来表示现实存在的意义。数学是“万金油”的科学,它是作为工作和分析方法运用到某个学科当中…

时间序列预测方法总结

前言 对时间序列数据预测模型做个简单的分类,方便日后对其进一步研究,理清楚技术更新发展方向。 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。 预测场景 单步预测 单步单变量预测 :在时间序…

时间序列的聚类方法

时间序列的聚类方法 时间序列是按照时间排序的一组随机变量,它通常是在相等间隔的时间段内,依照给定的采样率,对某种潜在过程进行观测的结果。 时间序列数据是实值型的序列数据,具有数据量大、数据维度高以及数据是不断更新的等…

【时间序列预测】Autoformer 长时间序列预测

论文链接:http://xxx.itp.ac.cn/pdf/2106.13008.pdf Abstract 延长预测时间是极端天气预警和长期能源消耗规划等实际应用的关键需求。本文研究时间序列的长期预测问题。先前的基于 Transformer 的模型采用各种 self-attention 机制来发现长期依赖关系。然而&…

时间序列分析预测

全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 时间序列中常用预测技术,一个时间序列是一组对于某一变量连续时间点或连续时段上的观测值。参考:https://blog.csdn.net/u010414589/article/details/49622625…

时间序列预测

问题简介 简单来说,时间序列是按照时间顺序,按照一定的时间间隔取得的一系列观测值,比如我们上边提到的国内生产总值,消费者物价指数,利率,汇率,股票价格等等。时间间隔可以是日,周…

时间序列分析

http://blog.csdn.net/pipisorry/article/details/62053938 时间序列简介 时间序列是时间间隔不变的情况下收集的时间点集合。这些集合被分析用来了解长期发展趋势,为了预测未来或者表现分析的其他形式。但是什么时间序列?与常见的回归问题的不同&…

时间序列模型调查

RNN 模型 Recurrent Neural Network (回流神经网络,有的译做递归神经网络) 时间序列模型最常用最强大的的工具就是递归神经网络(recurrent neural network, RNN)。相比与普通神经网络的各计算结果之间相互独立的特点,RNN的每一次隐含层的计算结果都与当前输入以及上一次的…

时间序列模型

1. 时间序列分析方法概述 一个时间序列往往是一下几类变化形式的叠加或耦合。 (1)长期趋势变动:反映主要变化趋势; (2)季节变动 (3)循环变动 (4)不规则变动 使…

python创建时间序列_python 时间序列

将dataframe的列转化为时间序列 #https://www.cnblogs.com/bolgbjg/p/14013300.html #datetime.now()获取现在的时间,now.year,获取现在的年份,其他以此类推 #timedelta()表示两个datetime之间的时间差,默认单位是天 strftime()参数, strftim…

时间序列(数据分析)

目录 第11章 时间序列 11.1 日期和时间数据的类型及工具 11.1.1 字符串与datetime互相转换 11.2 时间序列基础 11.2.1 索引、选择、子集 11.2.2 含有重复索引的时间序列 11.3 日期范围、频率和移位 11.3.1 生成日期范围 11.3.2 频率和日期偏置 11.3.3 移位&#xff0…

时间序列介绍

什么是时间序列? 时间序列是按照一定时间顺序,按照一定的时间间隔取得的一系列观测值。 怎样做时间序列分析? 时间序列分析尝试找出序列值在过去所呈现的特征模式,假定这种模式在未来能够持续,进而对未来进行预测 时…

时间序列

时间序列 一、时间序列是什么?二、时间序列分类1.白噪声序列2.平稳非白噪声序列3.非平稳序列 三. 时间序列主要模型1. ARIMA如何挑选模型参数:Example and application: 总结 一、时间序列是什么? 时间序列是指某种现象某一指标在不同时间上…

经典时间序列的学习(一)简单的认识时间序列

1. 什么是时间序列 同一统计指标数值按照时间先后顺序排列而成的数据。本质上是反映一个变量随时间序列变化的趋势。 简单的例子就像是学生每一年的身高数据,这个也是一个时间序列。变量是我们的身高;每一年都不一样。我们支付宝或者微信的零钱,每一天…

【时间序列】时间序列基本概念总结

最近一直在接触时间序列,所以打算写一些有关时间序列的文章,预测部分会从规则开始、到传统模型、到机器学习、再到深度学习,此外也会介绍一些时间序列的基本概念,包括自相关、平稳性、滞后性、季节性等。 1.基本概念 1.1 时间序列…

备战数学建模35-时间序列预测模型

目录 一、时间序列概念与分解模型 1-时间序列数据与基本概念 2-时间序列分解 二、SPSS中七种指数平滑模型 1-七种指数平滑模型简介 2-七种指数平滑模型具体分析 三、ARIMA模型相关的知识点 四、时间序列模型经典案例 1-时间序列建模思路介绍 2-案例1销售数据预测 3-…

【时间序列】最完整的时间序列分析和预测(含实例及代码)

时间序列 在生产和科学研究中,对某一个或者一组变量 进行观察测量,将在一系列时刻所得到的离散数字组成的序列集合,称之为时间序列。 pandas生成时间序列过滤数据重采样插值滑窗数据平稳性与差分法 pandas生成时间序列 时间戳(ti…

UCF 2021 Qualifying - H . Time to Eat + UCF HSPT 2020 - E . Use Giant Fans to Deal With Hurricanes?

题目: H . Time to Eat [ 问题 8933 ] [ 讨论 ] Description The UCF Programming Team has made it to the World Contest Finals (WF), thanks to the great team members and coaches. Fortunately for Dr. Orooji (Team Faculty Advisor), WF is in a city wit…

MTU

MTU 是出接口方向的MTU值,跟入接口方向无关。 MTU 是双方向的,也就是说两个方向的数据流可以有不同的MTU值。 在实施中遇到这么个问题: 用户在BigIP的VLAN设置中修改了MTU值,并保存。但系统重启后,这个值又恢复为原来的默认值了。 有兄弟遇到过么?望指点一二。 [ 本帖最…