一、时间序列基本规则法-周期因子法html
- 提取时间序列的周期性特征进行预测,参考:时间序列规则法快速入门
- 计算周期因子factors
- 计算base
- 预测=base*factors
- 观察序列,当序列存在周期性时,能够用周期因子法作为baseline
二、线性回归-利用时间特征作线性回归python
- 提取时间的周期性特色作为特征,此时训练集每条样本为"时间特征->目标值",时间序列的依赖关系被剔除,不须要严格依赖滑窗截取训练样本。常见是将时间用0-1哑变量表达,有如下若干种特征:
- 将星期转化为了0-1变量,从周一至周天,独热编码共7个变量
- 将节假日转化为0-1变量,视具体节假日数目,可简单分为两类,"有假日"-"无假日",独热编码共2个变量;或赋予不一样编码值,如区分国庆、春节、劳动节等使用一、二、3表示
- 将月初转化为0-1变量,简单分两类表示为"是月初"-"非月初",共2个特征
- 相似的月中、月初能够转化为0-1变量
- 控制时间粒度,区分是weekday or weekend
- 观察序列,当序列存在周期性时,线性回归也可作为baseline
三、传统时序建模方法,ARMA/ARIMA等线性模型。参考:git
四、时间序列分解,使用加法模型或乘法模型将原始序列拆分为4部分。github
五、特征工程着手,时间滑窗改变数据的组织方式,使用xgboost/LSTM模型/时间卷积网络等。参考:算法
六、转化为监督学习数据集,使用xgboot/LSTM模型/时间卷积网络/seq2seq(attention_based_model)。参考:api
七、Facebook-prophet,相似于STL分解思路,由于以为在控制程度和可解释性上比传统时序模型更有优点,因此单独列车。参考:网络
- 官网说明(英文)
- 官网notbook(英文)
- 中文推荐
的文章,从原理到使用都有介绍,很良心。张戎:Facebook 时间序列预测算法 Prophet 的研究
- 我的理解,想进一步用好,能够好好看看论文和官网,有空撸遍python的源码
- 理解prior_scale在代码中如何实现控制趋势项、季节项和节假日项
- 对于趋势项参数changepoint_range、changepoint_prior_scale如何影响模型拟合和泛化程度
- 趋势项中的Uncertainty-Intervals(interval_width参数)如何在预测结果使用
- 论文中的"Simulated Historical Forecasts"对应prophet的Diagnostics工具,能够利用该工具作时间序列的交叉验证评价模型准确程度,如何利用该工具调整模型
八、深度学习网络,结合CNN+RNN+Attention,做用各不相同互相配合。目前也只是看了论文,有代码的顺便给出代码连接,代码还没细看。工具
主要设计思想:post
- CNN捕捉短时间局部依赖关系
- RNN捕捉长期宏观依赖关系
- Attention为重要时间段或变量加权
- AR捕捉数据尺度变化(没太搞懂啥意思~)
方法:学习
代码
做者:BINGO Hong连接:https://zhuanlan.zhihu.com/p/67832773