时序预测算法初探:基于机器学习的时序预测算法(1)

举报
技术火炬手 发表于 2020/11/05 11:31:01 2020/11/05
【摘要】 在进行资源容量评估(例如对用户数以及TPS、CPU占用率、内存等资源数据进行评估)的时候,如何能够较为准确的预测未来某一时间点的资源容量是一个我们感兴趣的话题。比如,在对某局点进行容量评估时,传统的容量评估算法会人为设定一个未来时间点的预测用户数,然后根据当前忙时平均用户的资源占比评估未来容量情况。

背景

在进行资源容量评估(例如对用户数以及TPS、CPU占用率、内存等资源数据进行评估)的时候,如何能够较为准确的预测未来某一时间点的资源容量是一个我们感兴趣的话题。比如,在对某局点进行容量评估时,传统的容量评估算法会人为设定一个未来时间点的预测用户数,然后根据当前忙时平均用户的资源占比评估未来容量情况。

这种方法存在的问题是:1. 设定的预测用户数一般通过人为估计得出,当局点较多时我们希望能够实时、自动的预测未来任意时间段的用户数;2. 当前平均用户的资源占比代表了当前的话务模型,最好需要一种能够预测未来话务模型变化的趋势的算法,从而能够更加精准的预测话务模型的变化趋势。这就要求我们的容量评估算法最好有一种基于时序预测的策略,来帮助我们更好的进行容量评估。

使用STL+ARIMA算法的预测策略

在实际话统数据中,我们发现对于一个稳定局点(实际上大多数局点都可视作稳定局点),用户数、话务模型以及资源占用率有较为规律的周期性。对于具有周期性(也称作季节性)数据,一个常用的算法是STL(Seasonal and Trend decomposition using Loess)分解,简单的来讲,STL分解可以将带有周期性的数据分解为三个分量的加和:周期性分量S_tSt、趋势分量T_tTt和残差R_tRt

image.png

如果为乘积形式:

image.png

需要处理为为加和:

image.png

STL算法使用了LOESS(可以看作是带kernel的kNN平滑)进行指数平滑,具体实现可以参考[1]。

在得到三个分量以后,我们可以直接使用周期分量用于预测季节性。对于趋势分量,除了回归算法,一种常用的算法是ARIMA(Auto Regressive Integrated Moving Average)算法。即ARIMA包括了三部分:AR, I, MA。

AR模型,或者自回归模型,描述当前值与历史值之间的关系,用变量自身的历史时间数据对自身进行预测。如对于一个PP阶的AR,使用了过去PP个时间点的数据预测当前数据X_tX 

image.png

注意除了回归项以外,还包含了一个噪声项\mu_tμ 

 ,我们使用滑动平均MA来预测这个噪声项(此时我们把阶数定义为Q):

image.png

即当前噪声为历史噪声的移动平均。

此时,我们已经定义了一个完整的ARMA模型。但对于一个时间序列来说,往往是不稳定的(unstable)。简单的来讲,就是数据的均值会随时间的变化而变化。一种直接的将不平稳的时间序列转换为平稳的时间序列方法是差分(I),即计算相邻时间点数据的差值。也就是说,使用差分法将不平稳序列转化为平稳序列是ARIMA算法的关键。

为什么要将不平稳序列转化为平稳序列呢?因为我们期望得到一个平稳的序列,这样才能使用该序列预测未来序列。如果为不平稳的序列,说明时间变量会影响行为,从而无法对未来行为进行预测。

如何检验序列的平稳性呢?我们一般会对序列绘图,然后进行ADF检验观察序列是否平稳。

p.s. 有兴趣了解STL以及ARIMA的同学可以参考[3]

Facebook的Prophet算法概述

以上简述了一种常用的预测带有季节性的时间序列的算法,但STL分解+ARIMA算法的缺陷也很明显:

1、用户数、会话数以及话务模型并不严格按照固定的周期。节假日,运营商促销活动等因素都会影响实际的用户数和流量。

2、ARIMA需要人工将数据预处理(平稳化)。针对这些问题,Facebook在2017年开源了一种与STL分解相似的算法,Prophet[2]。

与STL分解相比,Prophet算法将时间序列分成了四个分量的加和:周期性分量s_tst、趋势分量g_tgt、假期分量h_tht和残差\epsilon_tϵt

image.png

其中假期分量h_tht可以作为参数调节,且允许运维人员自定义假期、运营商促销等事件,这是Prophet算法的第一个亮点

Prophet算法还有什么其他亮点呢?以及实际预测效果如何?且听下回分解

参考资料

[1] Cleveland, Robert B., William S. Cleveland, and Irma Terpenning. “STL: A seasonal-trend decomposition procedure based on loess.” Journal of Official Statistics 6.1 (1990): 3.

[2] Sean J. Taylor, Benjamin Letham “Forecasting at Scale” https://peerj.com/preprints/3190.pdf

[3] https://otexts.com/fppcn/


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。