前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >十大宝藏时序模型汇总。

十大宝藏时序模型汇总。

作者头像
炼丹笔记
发布2021-08-06 13:40:54
2.1K0
发布2021-08-06 13:40:54
举报
文章被收录于专栏:炼丹笔记炼丹笔记

十大时序模型简介

简介

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

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

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

如果我们需要预测接下来的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,模型,我们依据过往的观测值来预测:

\bar{Y}(t+h|t) = Y(t)

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

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

\bar{Y}(t+h|t) = Y(t+h-T)

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

02

Seasonal decomposition (+ any model)

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

Y(t) = S(t) + T(t) + R(t)

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

  • 我们可以通过rolling mean的策略来预估;
  • 对于每个周期,我们通过计算平均去趋势序列来计算;
  • 最后通过减法得到余数部分。

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

  • 我们有非常数的周期;
  • 通过分解的形式计算初始和最后的值;
  • 防止过度平滑;

03

Exponential smoothing

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

\bar{Y}(t+h|t) = \alpha y(t) + \alpha(1-\alpha) y(t-1) + \alpha(1-\alpha)^2 y(t-2)

其中.

我们发现:

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

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,这些模型对应于一个线性模型,但回归系数随时间而变化。下面给出了动态线性模型的一个例子。

Y(t) = \alpha(t) + t \beta(t) + w(t) \\ \alpha(t) = \alpha(t-1) + m(t) \\ \beta(t) = \beta(t-1) + r(t) \\ w(t) \sim N(0,W), m(t) \sim N(0,M), r(t) \sim N(0,R)

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

07

TBATS

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

TBATS模型的主要特点是:

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

08

Prophet

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

Y(t) = g(t) + s(t) + h(t) + \epsilon(t)

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

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

  • 饱和增长模型和分段线性模型。
  • 多周期季节性模型依赖于傅立叶级数。
  • 已知的自定义假日的效果可以很容易地合并到模型中。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 炼丹笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ARIMA
  • SARIMA
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档