时间序列预测(一)

时间序列预测

针对当前做时间序列预测的方法进行一些总结。

周期因子法

周期因子法概要

如果数据具有明显的周期性,需要由过去推未来,即可通过周期性进行数据预测。

下表是一个商场的一周的客流量的情况。

时间 周一 周二 周三 周四 周五 周六 周日 平均值
第一周 20 10 70 50 250 200 100 100
第二周 26 18 66 50 180 140 80 80
第三周 15 8 67 60 270 160 120 100

可以看到以每周为周期的数据波动,预测即尽可能准确提取这种周期波动。

首先计算周均值,然后将每列数据除以周均值,得到比例。然后按列找出比例因子的中位数。
| 时间 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 |
| —— | —– | —– | —– | —– | —- | —- | —- |
| 第一周 | 0.2 | 0.1 | 0.7 | 0.5 | 2.5 | 2 | 1 |
| 第二周 | 0.325 | 0.225 | 0.825 | 0.625 | 2.25 | 1.75 | 1 |
| 第三周 | 0.15 | 0.08 | 0.67 | 0.6 | 2.7 | 1.6 | 1.2 |
| 中位数 | 0.2 | 0.1 | 0.7 | 0.6 | 2.5 | 1.75 | 1 |

预测即可通过将周期因子乘以一个base来做下一周的预测。这个base可以是上一周的平均数,也可以是更多的优化。

周期因子法优化

优化周期因子

按列提取中位数是排除极端值的有效手法,但有时可能丢失大量信息,可以针对均值和中位数进行比例融合,也可根据时间跨度距离预测时间段的远近,给数据加上不同权重来进行优化。

优化base取法

直接取预测时间点上一周的平均值可能不是取base的好方法,也可取最后五天或几天的均值来反映最近的情况,但这个取法需要排除周期性影响,可用客流量初一周期因子后再取均值,这样作为base。
| 时间 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 |
| ———— | —- | —- | —- | —- | —- | —- | —- |
| 第三周 | 15 | 8 | 67 | 60 | 270 | 160 | 120 |
| 中位数 | 0.2 | 0.1 | 0.7 | 0.6 | 2.5 | 1.75 | 1 |
| 去周期化客流 | 75 | 80 | 95.7 | 100 | 108 | 91.4 | 120 |

时序建模法

使用ARIMA等线性模型,为金融中常用来分析投资品收益率的序列方法。本方法要点是挖掘时间序列中的自相关性,通常通过计算协方差或相关系数实现。

监督学习模型

使用xgboot,LSTM模型,seq2seq等将其转化为有监督学习数据集。

其中使用python将时间序列转换为监督学习问题在此链接https://link.zhihu.com/?target=https%3A//cloud.tencent.com/developer/article/1042809。

使用纯粹seq2seq模型对相关问题的解决方案在此链接https://link.zhihu.com/?target=https%3A//github.com/LenzDu/Kaggle-Competition-Favorita/blob/master/seq2seq.py。


本博客所有文章除特别声明外,大部分为学习心得,欢迎与博主联系讨论