简介
时间序列建模在销量预测,天气预测,车流量预测,股票价格预测等问题中扮演着至关重要的角色,一般时间序列的问题可以表述为下面的形式
由于时间序列数据的前后依赖性,为了避免有偏的线下预估,在学习模型之前需要一个靠谱的线下验证策略:
- 需要确保训练集包含在验证集之前发生的数据。解决这个问题的一个可行的方法就是使用滑动窗口,此过程称为时间序列交叉验证,如上图所示:*蓝色点表示每个“折叠”中的训练集,红色点表示相应的验证集;
如果需要预测接下来的n个时间步,可以对前面的1,2,…,n个步骤应用交叉验证程序。通过这种方式,还可以比较不同时间范围内预测的优劣。验证策略确定好了之后,接下来,就可以研究探讨十大时序模型。
- Naïve, SNaïve
- Seasonal decomposition (+ any model)
- Exponential smoothing
- ARIMA, SARIMA
- GARCH
- Dynamic linear models
- TBATS
- Prophet
- NNETAR
-
十大时序模型
1、Naïve, SNaïve
Naïve,模型,依据过往的观测值来预测:
这类预测假设随机模型产出时间序列是一个random walk。
Naïve模型的扩展是SNaïve,SNaïve假设时间序列是有周期性的,而且其周期为T,则:
因此,以下T时间步的预测值与之前T时间步的预测值相等。Naïve和SNaïve模型通常被用作基准模型。2、Seasonal decomposition (+ any model)
如果数据显示出某种周期性(例如,每日、每周、每季度、每年),则可以将原始时间序列分解为三个部分的总和:
其中是周期性部分,是趋势性成分,是剩余部分。针对这种分解,有多种经典的分解策略,例如: 可以通过rolling mean的策略来预估;
- 对于每个周期,通过计算平均去趋势序列来计算;
- 最后通过减法得到余数部分。
当然上面的策略还是相对简单,后来被优化为:
- 有非常数的周期;
- 通过分解的形式计算初始和最后的值;
-
3、Exponential smoothing
指数平滑是早期大家在做数据竞赛时最为成功的一种模型,它基础形式为:
其中。
可以发现: 预测值等于过去观测值的加权平均值,相应的权重随着时间的推移呈指数递减。
4、ARIMA,SARIMA
ARIMA
相对于指数平滑,ARIMA模型大家并不陌生,这也是时间序列预测中应用最广泛的方法之一。其全称为AutoRegressive Integrated Moving Average。
在自回归模型中,预测值对应于变量过去值的线性组合。在移动平均模型中,预测与过去预测误差的线性组合相对应。
基本上,ARIMA模型结合了这两种方法。因为它们要求时间序列是平稳的,所以对时间序列进行差分(积分)可能是一个必要的步骤,即考虑差分的时间序列而不是原始的时间序列。SARIMA
SARIMA模型(周期性ARIMA)则添加了周期性的过去值和/或预测误差的线性组合来扩展ARIMA。
5、GARCH
GARCH的全称为Generalised Autoregressive Conditional Heteroskedasticity,在上面的模型假设产生时间序列的随机过程中的误差项是同态的,即方差为常数。相反,GARCH模型假设:
误差项的方差遵循自回归滑动平均(ARMA)过程,因此允许它随时间变化。
6、Dynamic linear models
动态线性模型代表了时间序列预测的另一类模型。其思想是,在每个时间t,这些模型对应于一个线性模型,但回归系数随时间而变化。下面给出了动态线性模型的一个例子。
动态线性模型可以在贝叶斯框架中自然建模;采用最大似然估计技术。
7、TBATS
TBATS模型是一种基于指数平滑的预测模型。该名称是Trigonometric, Box-Cox transform, ARMA errors, Trend and Seasonal components的缩写组合。
TBATS模型的主要特点是:
能够通过基于Fourier级数的三角表示对每个季节性进行建模来处理多个周期性。
8、Prophet
Prophet是FaceBook团队开源的模型,它也可以处理多个周期性的预测模型。prophet模型假设时间序列可以分解如下:
其中表示趋势,表示周期性,表示节假日,最后一项是误差项。
模型拟合时因为它没有明确考虑数据中的时间依赖结构。这也有不规则间隔的观察。趋势时间序列则有两种选择:饱和增长模型和分段线性模型。
- 多周期季节性模型依赖于傅立叶级数。
- 已知的自定义假日的效果可以很容易地合并到模型中。
Prophet模型被嵌入到贝叶斯框架中,它允许进行充分的后验推理,并将模型参数的不确定性包含在预测不确定性中。
9、NNETAR
NNETAR模型是一个完全连通的神经网络。其全称为:Neural NETwork AutoRegression。NNETAR模型输入到时间的序列的最后一个元素,并在时间输出预测值,为了执行多步预测,网络会被迭代地应用。
在存在周期性的情况下,输入还可以包括周期性滞后时间序列。
10、LSTM
LSTM模型是预测时间序列问题较为成功的案例,LSTM网络的状态通过状态空间向量表示。来跟踪新观测值与过去观测值(甚至是非常远的观测值)的相关性。通常来说,LSTMs是一个复杂的模型,很少用于预测单个时间序列,因为它们需要大量的数据进行估计。但是,当需要对大量时间序列进行预测时,通常都会使用到LSTM。
实验对比
此处对前面描述10种方法进行的验证。由于动态线性模型和LSTM模型计算量大、性能差,没有将其加入对比。
- 下图中,展示了每个模型和每个时间范围的交叉验证MAE。
可以发现:
- NNETAR+Decomposition的效果要好于其他模型。