我们先介绍不用检测周期性,直接进行时间序列预测。
为了比较模型的效果,我们引入一个评价因子PCT来说明每个模型的好坏。所谓的PCT就是
接下来我们将结合一个例子,从PCT和时间开销(time)两方面来衡量一下模型。
我们取线上的一个时间序列,一共有336个值。前312个值作为训练,后24个值作为测试和验证效果。前312个值如下图所示,用肉眼看,该时间序列具有比较强的周期性。我们先后用非周期性预测和周期性预测两种方法来说明效果。
首先介绍线性回归,效果如下图。
可以看到该模型预测结果基本趋于平均值。其中PCT为0.085063,而time为1.27s。
接下来介绍ARIMA模型,在该算法中,我们在差分为1的情况下,用bic准则取确定p和q的值,效果如下图:
跟LR差不多,其中PCT为0.092,time为1.43s。
再接着介绍bp神经网络,在该神经网络中,我们使用只有一层的隐藏层,输入层个数为predict_time(预测时间),隐藏层为2*predict_time,输出层为predict_time,学习速率为0.01,迭代100次,结果如下:
结果PCT为0.087210,time为1.56s。
最后我们看看lstm,lstm比较重要的几个参数:batch_size为4,windows_size为3倍的predict_time,num_unit为3倍的predict_time,学习速率为0.01。
结果PCT为0.043834,time为7.16s。
接下来我们将介绍周期性预测。
结果是PCT为0.044276,时间消耗为1.51s。
PCT为0.047879,time为1.73s。
PCT为0.042720,time为1.43s。
PCT为0.041202,time为6.28s。
模型 | 时间开销 | 准确率 |
---|---|---|
LR | 1.27s | 0.085063 |
ARIMA | 1.43s | 0.092 |
浅层神经网络 | 1.56s | 0.087210 |
LSTM | 7.16s | 0.043834 |
模型 | 时间开销 | 准确率 |
---|---|---|
LR | 1.51s | 0.044276 |
ARIMA | 1.73s | 0.047879 |
浅层神经网络 | 1.43s | 0.042720 |
LSTM | 6.28s | 0.041202 |
通过上面两种方法,可以得到,在时间序列具有周期性的情况下,用周期性预测的方法可以极大程度上提高准确率。