时间序列预测算法
时间序列分析之holtwinters和ARIMA
https://blog.csdn.net/huangtiao2509/article/details/78251101
时序算法,常谈平稳性,弱平稳性,强平稳性
平稳的基本思想是:时间序列的行为并不随时间改变。平稳性刻画的是时间序列的统计性质关于时间平移的不变性。我们研究时间序列很重要的一个出发点 是希望通过时间序列的历史数据来得到其未来的一些预测,换言之,我们希望时间序列在历史数据上的一些性质,在将来保持不变,这就是时间平移的不变性。反之,如果时间序列不是平稳的,由历史数据得到的统计性质对未来预测毫无意义。
时间序列的组成,由趋势,周期性,噪音,其他未知因素
那么做时间序列的预测,其实就是要找到趋势和周期性
常用的方法,用平滑算法,来消除噪音和其他干扰
最直觉的方法是移动平均,或是加权移动平均,让新数据具有更高的权重。
移动平均的问题,是计算量比较大,每次都需要将窗口中的所有数据点重新计算一遍;用移动平均的方法去预测效果会比较的差,他仅仅考虑窗口内的数据点。
指数平滑法(exponential smoothing)能够避免移动平均法带来的问题。
指数平滑法有几种不同形式:
一次指数平滑法针对没有趋势和季节性的序列,
二次指数平滑法针对有趋势但没有季节性的序列,
三次指数平滑法针对有趋势也有季节性的序列。三次指数平滑指“Holt-Winters"。
一次指数平滑,指数平滑,每次计算可以重用上次计算的结果,并结合最新数据;
为何是指数平滑,这个式子展开后,参数成指数增长
二次指数平滑,加入趋势信息bt
bt的定义就是增量的指数平滑
三次指数平滑,加入周期性,L代表周期,周期通过环比来表示
“Holt-Winters",不是学习的方法,所有参数是需要指定的,包含周期L的参数,这个使用起来需要对数据有足够的先验知识。
自回归,ARIMA,学习方法,参数是通过参数估计学习出来的
https://zhuanlan.zhihu.com/p/435442095
https://zhuanlan.zhihu.com/p/457212660
ARIMA模型是应用最广泛的时间序列模型,各种指数平滑模型都可以用ARIMA模型来实现。
即通过Holter-winters建立的模型,用ARIMA同样可以得到。即便ARIMA非常灵活,可以建立各种时间序列模型(AR,MA,ARMA)但是ARIMA也有局限性,最主要的局限在于ARIMA只能建立线性的模型。
所以对于线性时序模型,ARIMA已经具备比较强的通用性
对于非线性模型,需要用更复杂的模型进行拟合,比如RNN
AR
自回归预测法(Autoregression,AR)是指,利用预测目标的历史时间数列在不同时期取值之间存在的依存关系(即自身相关),建立起回归方程进行预测
自回归(autoregressive),其实这个概念如其名,首先是个回归问题,就是拟合模型
自,auto,我觉得理解成自相关性好些?
这个算法是用于时序数据的,所以其实就是根据历史上自身出现的时序序列进行回归拟合,用于预测新的序列值
定义,
用历史上P阶的时序点,加上白噪声,来预测下一个时序值。
一般平稳序列的建模过程如下:
步骤 1 :对序列作白噪声检验,若经检验判定序列为白噪声,建模结束(没条件,不需要努力了);否则转2 ;
步骤 2 :对序列作平稳性检验,若经检验判定为非平稳,则进行序列的平稳化处理,转步骤 1;否则转步骤 3;
步骤 3 :对模型进行识别,估计其参数,转步骤 4;
步骤 4 :检验模型的适用性,若检验通过,则得到拟合模型并可对序列做预测;否则转步骤 3;
MA
moving average
如果白噪声是有规律的,符合q阶移动平均,即白噪声的时间序列也是自相关的
如果当前时间序列,仅仅与白噪声相关,那么就是MA模型
ARMA
就是将两者结合,
ARIMA,Autoregressive integrated moving average
上面说到AR模型的限制是平稳时间序列,因此对于非平稳的序列,需要将其转变为平稳序列才可以使用ARMA算法。,因此需要对他进行差分使其转变为平稳信号。
ARIMA就是将差分引入ARMA模型的时序预测模型,差分自回归移动平均模型 ARIMA(p、d、q)
其中d为差分的阶数。
前面说的指数平滑,或者自回归方法,更适用于短期时序预测
中长期的时序预测,可以用STL周期分解,或者RNN,LSTM来进行建模
开源组件预测算法,如 facebook 开源的 Prophet、谷歌开源的 AdaNet 等