【时间序列】关于时间竞赛,不得不知的十大模型。

kaggle竞赛宝典干货

作者:杰少

十大时序模型简介

简介

时间序列建模在销量预测,天气预测,车流量预测,股票价格预测等问题中扮演着至关重要的角色,一般时间序列的问题可以表述为下面的形式

由于时间序列数据的前后依赖性,为了避免有偏的线下预估,我们在学习模型之前需要一个靠谱的线下验证策略:

  • 我们需要确保训练集包含在验证集之前发生的数据。解决这个问题的一个可行的方法就是使用滑动窗口,此过程称为时间序列交叉验证,如上图所示:** 蓝色点表示每个“折叠”中的训练集,红色点表示相应的验证集;**

如果我们需要预测接下来的n个时间步,我们可以对前面的1,2,…,n个步骤应用交叉验证程序。通过这种方式,我们还可以比较不同时间范围内预测的优劣。验证策略确定好了之后,接下来,我们就可以研究探讨十大时序模型。

  • Naïve, SNaïve

  • Seasonal decomposition (+ any model)

  • Exponential smoothing

  • ARIMA, SARIMA

  • GARCH

  • Dynamic linear models

  • TBATS

  • Prophet

  • NNETAR

  • LSTM

十大时序模型

01


Naïve, SNaïve

Naïve,模型,我们依据过往的观测值来预测:

这类预测假设随机模型产出时间序列是一个random walk。

Naïve模型的扩展是SNaïve,SNaïve假设时间序列是有周期性的,而且其周期为T,则:

因此,以下T时间步的预测值与之前T时间步的预测值相等。Naïve和SNaïve模型通常被用作基准模型。

02


Seasonal decomposition (+ any model)

如果数据显示出某种周期性(例如,每日、每周、每季度、每年),则我们可以将原始时间序列分解为三个部分的总和:

其中 是周期性部分, 是趋势性成分, 是剩余部分。针对这种分解,我们有多种经典的分解策略,例如:

  • 我们可以通过rolling mean的策略来预估

  • 对于每个周期,我们通过计算平均去趋势序列 来计算 ;

  • 最后通过减法得到余数部分。

当然上面的策略还是相对简单,后来被优化为:

  • 我们有非常数的周期;

  • 通过分解的形式计算初始和最后的值;

  • 防止过度平滑;

03


Exponential smoothing

指数平滑是早期大家在做数据竞赛时最为成功的一种模型,它基础形式为:

其中 .

我们发现:

  • 预测值等于过去观测值的加权平均值,相应的权重随着时间的推移呈指数递减

04


ARIMA,SARIMA

ARIMA

相对于指数平滑,ARIMA模型大家并不陌生,这也是时间序列预测中应用最广泛的方法之一。其全称为AutoRegressive Integrated Moving Average。

在自回归模型中,预测值对应于变量过去值的线性组合。在移动平均模型中,预测与过去预测误差的线性组合相对应。

基本上,ARIMA模型结合了这两种方法。因为它们要求时间序列是平稳的,所以对时间序列进行差分(积分)可能是一个必要的步骤,即考虑差分的时间序列而不是原始的时间序列。

SARIMA

SARIMA模型(周期性ARIMA)则添加了周期性的过去值和/或预测误差的线性组合来扩展ARIMA。

05


GARCH

GARCH的全称为Generalised Autoregressive Conditional Heteroskedasticity,在上面的模型假设产生时间序列的随机过程中的误差项是同态的,即方差为常数。相反,GARCH模型假设:

  • 误差项的方差遵循自回归滑动平均(ARMA)过程,因此允许它随时间变化。

它特别适用于建模波动率随时间变化的金融时间序列。

06


Dynamic linear models

动态线性模型代表了时间序列预测的另一类模型。其思想是,在每个时间t,这些模型对应于一个线性模型,但回归系数随时间而变化。下面给出了动态线性模型的一个例子。

动态线性模型可以在贝叶斯框架中自然建模;采用最大似然估计技术。

07


TBATS

TBATS模型是一种基于指数平滑的预测模型。该名称是Trigonometric, Box-Cox transform, ARMA errors, Trend and Seasonal components的缩写组合。

TBATS模型的主要特点是:

  • 能够通过基于Fourier级数的三角表示对每个季节性进行建模来处理多个周期性。

08


Prophet

Prophet是FaceBook团队开源的模型,它也可以处理多个周期性的预测模型。prophet模型假设时间序列可以分解如下:

其中 表示趋势, 表示周期性, 表示节假日,最后一项是误差项。

模型拟合时因为它没有明确考虑数据中的时间依赖结构。这也有不规则间隔的观察。趋势时间序列则有两种选择:

  • 饱和增长模型和分段线性模型。

  • 多周期季节性模型依赖于傅立叶级数。

  • 已知的自定义假日的效果可以很容易地合并到模型中。

Prophet模型被嵌入到贝叶斯框架中,它允许进行充分的后验推理,并将模型参数的不确定性包含在预测不确定性中。

09


NNETAR

NNETAR模型是一个完全连通的神经网络。其全称为:Neural NETwork AutoRegression。NNETAR模型输入到时间 的序列的最后一个元素,并在时间 输出预测值,为了执行多步预测,网络会被迭代地应用。

在存在周期性的情况下,输入还可以包括周期性滞后时间序列。

10


LSTM

LSTM模型是预测时间序列问题较为成功的案例,LSTM网络的状态通过状态空间向量表示。来跟踪新观测值与过去观测值(甚至是非常远的观测值)的相关性。通常来说,LSTMs是一个复杂的模型,很少用于预测单个时间序列,因为它们需要大量的数据进行估计。但是,当需要对大量时间序列进行预测时,通常都会使用到LSTM。

实验对比

此处我们对前面描述10种方法进行的验证。由于动态线性模型和LSTM模型计算量大、性能差,我们没有将其加入对比。

  • 下图中,我们展示了每个模型和每个时间范围的交叉验证MAE。

我们发现:

  • NNETAR+Decomposition的效果要好于其他模型。

参考文献

  1. https://arxiv.org/abs/1704.04110

  2. https://cran.r-project.org/web/packages/forecast/forecast.pdf

  3. https://otexts.com/fpp2/nnetar.html

  4. https://peerj.com/preprints/3190.pdf

  5. https://robjhyndman.com/papers/ComplexSeasonality.pdf

  6. https://cran.r-project.org/web/packages/rugarch/vignettes/Introduction_to_the_rugarch_package.pdf

  7. https://cran.r-project.org/web/packages/forecast/forecast.pdf

  8. https://cran.r-project.org/web/packages/forecast/forecast.pdf

  9. An overview of time series forecasting models

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步



个人微信
备注:昵称+学校/公司+方向
如果没有备注不拉群!
拉你进AI蜗牛车交流群



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值