时间序列方法

1、时间序列基本规则法-周期因子法

 

2、线性回归-利用时间特征做线性回归

  • 提取时间的周期性特点做为特征,此时训练集每条样本为"时间特征->目标值",时间序列的依赖关系被剔除,不需要严格依赖滑窗截取训练样本。常见是将时间用0-1哑变量表达,有以下若干种特征:
    • 将星期转化为了0-1变量,从周一至周天,独热编码共7个变量
    • 将节假日转化为0-1变量,视具体节假日数目,可简单分为两类,"有假日"-"无假日",独热编码共2个变量;或赋予不同编码值,如区分国庆、春节、劳动节等使用1、2、3表示
    • 将月初转化为0-1变量,简单分两类表示为"是月初"-"非月初",共2个特征
    • 类似的月中、月初可以转化为0-1变量
    • 控制时间粒度,区分是weekday or weekend
  • 观察序列,当序列存在周期性时,线性回归也可做为baseline

3、传统时序建模方法,ARMA/ARIMA等线性模型。参考:


4、时间序列分解,使用加法模型或乘法模型将原始序列拆分为4部分。

5、特征工程着手,时间滑窗改变数据的组织方式,使用xgboost/LSTM模型/时间卷积网络等。参考:

6、转化为监督学习数据集,使用xgboot/LSTM模型/时间卷积网络/seq2seq(attention_based_model)。参考:

7、Facebook-prophet,类似于STL分解思路,因为觉得在控制程度和可解释性上比传统时序模型更有优势,所以单独列车。参考:

  • 官网说明(英文)
  • 官网notbook(英文)
  • 中文推荐 的文章,从原理到使用都有介绍,很良心。张戎:Facebook 时间序列预测算法 Prophet 的研究
  • 个人理解,想进一步用好,可以好好看看论文和官网,有空撸遍python的源码
  • 理解prior_scale在代码中如何实现控制趋势项、季节项和节假日项
  • 对于趋势项参数changepoint_range、changepoint_prior_scale如何影响模型拟合和泛化程度
  • 趋势项中的Uncertainty-Intervals(interval_width参数)如何在预测结果使用
  • 论文中的"Simulated Historical Forecasts"对应prophet的Diagnostics工具,可以利用该工具做时间序列的交叉验证评价模型准确程度,如何利用该工具调整模型

8、深度学习网络,结合CNN+RNN+Attention,作用各不相同互相配合。目前也只是看了论文,有代码的顺便给出代码链接,代码还没细看。

主要设计思想:

  • CNN捕捉短期局部依赖关系
  • RNN捕捉长期宏观依赖关系
  • Attention为重要时间段或变量加权
  • AR捕捉数据尺度变化(没太搞懂啥意思~)

方法:

代码



作者:BINGO Hong
链接:https://zhuanlan.zhihu.com/p/67832773

posted @ 2019-10-28 15:48  静悟生慧  阅读(2306)  评论(0编辑  收藏  举报