时间序列预测(一)
时间序列预测
针对当前做时间序列预测的方法进行一些总结。
周期因子法
周期因子法概要
如果数据具有明显的周期性,需要由过去推未来,即可通过周期性进行数据预测。
下表是一个商场的一周的客流量的情况。
时间 | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | 平均值 |
---|---|---|---|---|---|---|---|---|
第一周 | 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。
本博客所有文章除特别声明外,大部分为学习心得,欢迎与博主联系讨论