智能监控中的时间序列预测

趋势不变模型

趋势不变模型是指有些数据表现出无规律性,难以预测,但是在短期内会保持当前趋势,因此短期趋势模型针对该类型数据。模型利用短期历史数据进行训练,按当前趋势进行预测。由于业务会经常不定期进行干预,数据表现出无规律性,但是数据趋势明显,此时采用趋势不变模型效果较好。

STL周期模型

STL (Seasonal-Trend decomposition procedure based on Loess) 为时序分解中一种常见的算法,基于 LOESS 将某时刻的数据分解为趋势分量、周期分量和余项。STL 分为内循环与外循环,其中内循环来负责趋势、周期分量的计算;外层循环主要用于调节 robustness weight。

outer loop:
    计算robustness weight;
inner loop:
    Step 1 去趋势;
    Step 2 周期子序列平滑;
    Step 3 周期子序列的低通量过滤;
    Step 4 去除平滑周期子序列趋势;
    Step 5 去周期;
    Step 6 趋势平滑;

STL 周期模型先对数据进行分解,分解出趋势部分、周期部分和剩余部分,由于自动检测的周期有时候会出现误差,因此 STL 分解的分解周期还包括事先定义好的检验周期 T2( 如天/周),将 STL 分解中效果最好的结果作为最终分解结果。趋势部分,采用 LR 模型进行预测,再与周期部分和残差部分预测进行叠加,得到最终预测结果。

Prophet

Prophet 是 Facebook 开源的一个时间序列预测的算法,来源于 bprophet 的算法库。Prophet 算法不仅可以处理时间序列存在一些异常值的情况,也可以处理部分缺失值的情形,还能够几乎全自动地预测时间序列未来的走势。prophet 可以提供的功能概括为输入已知的时间序列的时间戳和相应的值和需要预测的时间序列的长度,输出未来的时间序列走势及输出结果可以提供必要的统计指标,包括拟合曲线,上界和下界等。

Prophet 算法除了季节项,趋势项,剩余项之外,还加入了节假日效应,即表示为: