标签:总结 预测 TPA Attention seq2seq 时间 序列 LSTM
这本来是我回答的一个问题:有什么好的模型可以做高精度的时间序列预测呢? - BINGO Hong的回答 - 知乎 https://www.zhihu.com/question/21229371/answer/533770345
但觉得在那个答案下一直更新好麻烦,干脆就移到自己主页文章好了。
以后会在这里更新,原答案不更新了。
- 时间序列基本规则法-周期因子法
- 提取时间序列的周期性特征进行预测,参考:时间序列规则法快速入门
- 计算周期因子factors
- 计算base
- 预测=base*factors
- 观察序列,当序列存在周期性时,可以用周期因子法做为baseline
- 在天池竞赛-资金流入流出预测-挑战Baseline-天池大赛-阿里云天池,周期因子可以取得110分+的成绩,排名进500妥妥的。(后面有机会再贴代码)
2.传统时序建模方法,ARMA/ARIMA等线性模型。参考:
- 写给你的金融时间序列分析:基础篇
- 自回归/滑动平均阶数判断 Identifying the orders of AR and MA terms in an ARIMA model列举了11条一般原则,其中提到:
- 差分方法可消除正相关但同时引入负相关
- AR项可消除正相关,MA项消除负相关
- AR项和MA项作用会相互抵消,通常包含两种要素时可尝试减少某项,避免过拟合
- 季节性分析
- 数据中有季节性因素,与整体趋势相比显得比较弱。原文: Investigating Seasonality in a Time Series: A Mystery in Three Parts ;中文:干货 | 季节性的分析才不简单,小心不要在随机数据中也分析出季节性
3. 特征工程着手,时间滑窗改变数据的组织方式,使用xgboost/LSTM模型/时间卷积网络等。参考:
- kaggle商品销量预测1st的思路:特征工程+LGBM/LSTM, 1st place solution | Kaggle
- kaggle商品销量预测5th的思路:特征工程+LGBM/CNN-DNN/seq2seq,5th Place Solution | Kaggle
4. 转化为监督学习数据集,使用xgboot/LSTM模型/时间卷积网络/seq2seq(attention_based_model)。参考:
- 如何用Python将时间序列转换为监督学习问题 - 云+社区 - 腾讯云
- Keras中带LSTM的多变量时间序列预测 - 云+社区 - 腾讯云
- 时间卷积网络(TCN) 总结:时序模型不再是递归网络(RNN) 的天下,但作为信息粗暴提取的一种方法,请不要神话CNN !
- 算法上可以引入注意力机制的seq2seq模型,见过纯粹的seq2seq解法,结合注意力机制的还没见过开源代码(可能是搜索不够仔细)。
- seq2seq代码:Kaggle-Competition-Favorita/seq2seq
- 注意力机制资料:
- 台大-李宏毅《Attention_based_model》
- 他们只说注意力机制(Attention Mechanism)不练,还是我来给大家撸代码讲解
- 盛源车:真正的完全图解Seq2Seq Attention模型
- 《Attention is All You Need》浅读(简介+代码)
- 川陀学者:Attention机制详解(二)——Self-Attention与Transformer
- The Illustrated Transformer
- Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)
5.Facebook-prophet,类似于STL分解思路,因为觉得在控制程度和可解释性上比传统时序模型更有优势,所以单独列车。参考:
- 官网说明(英文)
- 官网notbook(英文)
- 中文推荐 的文章,从原理到使用都有介绍,很良心。张戎:Facebook 时间序列预测算法 Prophet 的研究
- 个人理解,想进一步用好,可以好好看看论文和官网,有空撸遍python的源码
- 理解prior_scale在代码中如何实现控制趋势项、季节项和节假日项
- 对于趋势项参数changepoint_range、changepoint_prior_scale如何影响模型拟合和泛化程度
- 趋势项中的Uncertainty-Intervals(interval_width参数)如何在预测结果使用
- 论文中的"Simulated Historical Forecasts"对应prophet的Diagnostics工具,可以利用该工具做时间序列的交叉验证评价模型准确程度,如何利用该工具调整模型
6. 深度学习网络,结合CNN+RNN+Attention,作用各不相同互相配合。目前也只是看了论文,有代码的顺便给出代码链接,代码还没细看。
主要设计思想:
- CNN捕捉短期局部依赖关系
- RNN捕捉长期宏观依赖关系
- Attention为重要时间段或变量加权
- AR捕捉数据尺度变化(没太搞懂啥意思~)
方法:
- LSTNet: 适用于自相关图表现出有明显周期的时间序列,否则与传统方法相当。LSTNet-Pytorch、LSTNet-Keras、LSTNet-Gluon(Mxnet)。
- TPA-LSTM: 改进了attention机制,侧重选择关键变量,而非选择时间步;实验效果说是对周期不明显的时间序列也能有不错效果。TPA-LSTM-Tensorflow
代码的坑填上。
- LSTNet代码解读, BINGO Hong:LSTNet详解
- TPA-LSTM注意力机制, BINGO Hong:TPA注意力机制(TPA-LSTM)
工具:
难点:
- 理解时间序列预测问题是要用历史数据预测未来数据
- 时间序列问题的训练集、测试集划分
- 特征工程方法及过程(方法2的过程很有趣)
- 如何转化为监督学习数据集
- LSTM计算过程理解,包括输入输出维度、参数数量等
- seq2seq过程的理解,decoder实现
- attention注意力机制的原理及实现,包括encoder-decoder attention, self attention, multi-head attention等
- 时间卷积网络的含义,顾名思义就是将CNN方法用于时间序列中,主要是dilated-convolution and causal-convolution
- prophet预测原理,各参数对模型拟合效果、泛化效果的影响
- TPA侧重选择关键变量
- 时间序列基本规则法中周期因子得计算过程
2018.11.26更新,添加第二点特征工程的kaggle第5名方案解题思路,补充acf和pacf阶数选取
2018.12.30更新,添加季节性分析问题
2019.1.20更新,添加prophet框架介绍及个人理解
2019.3.3更新,添加seq2seq模型及相应的注意力机制资料
2019.3.28更新,补充两个时间序列工具tslearn、tsfresh
2019.4.8更新,补充LSTNet、TPA-LSTM,代码坑后面填
2019.4.20更新,LSTNet、TPA-LSTM代码填坑
2019.6.2更新,时间序列规则法-周期因子法
另外还有:
- kalman filter 模型
- mark,卡尔曼滤波
文章来源: https://zhuanlan.zhihu.com/p/67832773
标签:总结,预测,TPA,Attention,seq2seq,时间,序列,LSTM 来源: https://blog.csdn.net/Poo_Chai/article/details/90924650
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。