Holt-Winters与时间序列预测
2018-10-11 本文已影响0人
巴拉巴拉_9515
时间序列预测话题是比较早期接触的算法应用。
01 背景前言
- 由于良好的统计特性,ARIMA模型是应用最广泛的时间序列模型,各种指数平滑模型都可以用ARIMA模型来实现。即通过Holter-winters建立的模型,用ARIMA同样可以得到。但ARIMA只能建立线性的模型,而现实世界中纯线性模型往往不能令人满意。
- 长短期记忆LSTM非常适合于处理和预测时间序列中间隔和延迟非常长的重要事件。不过神经网络比较适合用于大数据处理,即数据量较大的场景。
- 机器学习上有一个定理,叫没有免费午餐定理(No Free Lunch,NFL),表示的是没有通用的对每个问题都最优的算法,离开具体环境,具体问题,算法都将一文不值!具体问题应该具体分析
考虑目标数据集的数据规模暂时不需要用到LSTM的拟合,本次暂时从指数平滑算法对时间序列进行拟合预测。
02 时间序列
时间序列由两部分组成:有规律的时间序列(即有依赖关系)+噪声(无规律,无依赖)。
算法训练数据要求去除噪声。
03 指数平滑算法
所有预测方法中,指数平滑是用得比较多的一种。一般常用到的指数平滑法为一次指数平滑、二次指数平滑和三次指数平滑,高次指数平滑一般比较难见到。
指数平滑算法 | 应用 | 预测 |
---|---|---|
一次指数平滑 | 适用于无明显的趋势变化(平稳的)的序列一次指数平滑没有考虑历史数据变化趋势对当前预测值的影响, 因此无法预测趋势。
|
只能预测下一期 |
二次指数平滑 | 适用于有线性趋势的时间序列 | 预测T期 |
三次指数平滑(Holt-Winters算法) | 比一次/二次平滑指数模型多考虑季节性的因素,适用于季节变化的时间序列。拟合优劣程度与历史数据变化是否稳定有关。如果历史数据变化存在一定规律该算法往往能够捕捉到这一规律,否则会出现较大的误差(所有有时候拟合效果不好,说明序列本身变化不规律,建议换种算法处理,不适合用指数平滑法预测)
|
预测T期 |
以某一数据集为例,一次/二次/三次平滑指数拟合结果如下:
方法 | 结果 | MSE |
---|---|---|
一次指数平滑 | 一次指数平滑最优预测值为:1201,此时算法参数alpha值为:0.67,最小预测误差MSE为:63 | 63 |
二次指数平滑 | 二次指数平滑最优预测值为:1536,此时算法参数alpha值为:0.99,最小预测误差MSE为:1 | 1 |
三次指数平滑 | 三次指数平滑最优预测值为:1810,此时算法参数alpha值为:0.99,最小预测误差MSE为:1 | 1 |
模型概览
指数平滑法(exponential smoothing,ES)又叫指数修匀法,是由布朗(Robert G.Brown)所提出的。布朗认为,时间序列的态势具有稳定性或规则性,所以时间序列可被合理地顺势推延;他认为最近的过去态势,在某种程度上会持续到未来,所以将较大的权数放在最近的资料。
算法模型及相应python代码参考:一次、二次、三次指数平滑计算思想及代码
平滑指数
指数平滑法的计算中,关键是α的取值大小,但α的取值又容易受主观影响,因此合理确定α的取值方法十分重要。
平滑指数的取值大小决定了前期实际值与预期值对本期预测值的影响。
如果时间序列波动不大,比较平稳,则平滑系数应取小一点(表示上衣时刻的值对下一时刻的影响没有那么大)
如果时间序列具有迅速且明显的变动倾向,则平滑系数应取大一点,以使预测模型灵敏度高些。
拟合效果
问题:航班乘客预测
数据:1949 到 1960 一共 12 年,每年 12 个月的数据,一共 144 个数据,单位是 1000
算法 | 拟合结果 | RMSE |
---|---|---|
平滑指数法 | 0 | |
LSTM | 蓝色为原数据,绿色为训练集的预测值,红色为测试集的预测值 具体算法及代码参考:用 LSTM 做时间序列预测的一个小例子 | 22.92 |
似乎效果还不错