正文内容 评论(0

智汇华云 ——AIOps之动态阈值:SARIMA模型详解
2019-06-05 14:37:04  作者:艾米 编辑:艾米     评论(0)点击可以复制本篇文章的标题和链接

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

近年来,IT运维人工智能(AIOps)已成为了应对IT系统与日俱增的复杂性的很好的解决方案。AIOps基于大数据、数据分析和机器学习来提供洞察力,并为管理现代基础设施和软件所需的任务提供更高水平的自动化(不依赖于人类操作员)。

因此,AIOps具有巨大的价值。展望未来,AIOps将在IT团队提高效率方面发挥关键作用。它还会使应用复杂的下一代技术成为可能,而且那些技术的复杂性是传统解决方案无法胜任的。

华云数据“智汇华云”专栏将为您奉上“AIOps之动态阈值—SARIMA模型详解”。

通过使用数据收集、数据分析和机器学习相结合的完整AIOps解决方案,IT Ops团队可以支持以下几个关键使用场景:

1.异常检测。也许AIOps最基本的使用案例就是检测数据中的异常,然后根据需要对它们做出反应。

2.原因分析。AIOps还可帮助IT Ops团队自动执行根本原因分析,从而快速解决问题。

3.预测。AIOps可以让工具能对未来进行自动预测,例如用户流量在特定的时间点可能会怎样的变化,然后做出相应的反应。

4.报警管理。AIOps在帮助IT Ops团队应对他们必须处理的大量警报,以支持正常的运营方面发挥着越来越重要的作用。

5.智能修复。AIOps通过自动化工具驱动闭环的故障修复,而不依赖于运维人员。

异常检测

异常检测以定位问题并了解基础架构和应用程序中的趋势是AIOps的一个关键用例。检测可以让工具探测出异常行为(例如某个服务器响应速度比平时慢,或受黑客攻击而出现异常的网络行为)并作出相应的反馈。

在很多情况下,在现代软件环境中进程异常检测,对于AIOps而言还是特别具有挑战性。因为在许多情况下,并没有通用的方法去定义合理的触发条件。例如对于在整个环境中的网络流量、内存和存储空间消耗而言,它们的波动还是会很大的。那么活跃用户量或应用程序实例也是如此。在这些情况下进行有效监测需要AIOps能采用足够智能的工具来设置动态基线。动态基线(阈值)为工具设置特定的情况下(例如一天中的时段和应用程序的注册用户数)正常活动的范围,然后检测与动态基线不匹配的数据或事件。

SARIMA模型

下面,就给大家讲解一下我们这次用到的SARIMA模型,用于预测指标动态阈值,从而检测异常。

SARIMA模型的全称是Seasonal Auto Regressive Integrated Moving Average,中文是周期性自回归差分移动平均。SARIMA模型是一种预测周期性的时间序列效果非常好的模型。SARIMA模型的目标是描述数据的自相关性。要理解SARIMA模型,我们首先需要了解平稳性的概念以及差分时间序列的技术。

平稳性 stationarity

总的来说,一个时间序列,如果均值没有系统性的变化(无趋势),方差没有系统变化,且消除了周期性变化,就称之为平稳的。

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

显然,图(d), (h), (i)有一定的周期性,所以不平稳。图(a), (c), (e), (f), (i)有一定的趋势性,并且图(i)的方差在增长,所以不平稳。只有图(b)和(g)是平稳的。可能大家第一眼看到图(g)觉得有周期性,其实是没有的,因为这是猞猁的代际数量,在长期来看,这并没有周期性,所以这个时间序列是平稳的。

差分 differencing

我们可以看到图(a)是谷歌股价图,这是不平稳的。但图(b)是股价每天的变化量,这是平稳的。这就是一种让不平稳的时间序列变为平稳时间序列的方法,计算连续时间数据点之间的差,这就是差分。

类似于取对数log的方法可以使时间序列的方差变平稳,差分通过消除时间序列的变化量,从而使时间序列的平均值变平稳,来达到消除趋势性和周期性。

自相关系数 autocorrelation

自相关系数是用来测定时间序列的两个时刻的值的线性关系。比如r1是测量yt和yt-1的关系,r2是测量yt和yt-2的关系。

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

T是时间序列的长度,k是延迟lag

ACF(autocorrelation function)图是一种非常有效的来判断时间序列平稳性的方法。

如果数据有趋势性,那么对于较小的延迟,自相关性趋向于比较大并且为正。当延迟增大时,ACF会慢慢变小。

如果数据有周期性,对于周期性的延迟,自相关性会比较大一些。

如果数据既有周期性又有趋势性,你就会看到两者的结合。

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

这张图是澳大利亚电力需求图,可以看到这组数据既有周期性,又有趋势性。

画出ACF图如下:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

可以看到,因为趋势性,当延迟变大时,ACF慢慢变小。因为周期性,图像会有峰谷的感觉。

白噪声 white noise

一个时间序列如果没有任何自相关性就可以称为白噪声。

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

这是一个白噪声的例子,我们画出它的ACF图:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

我们期望所有的ACF值接近于0,但因为一些随机变化,他们不可能正好等于0。对于白噪声,我们期望95%的ACF突刺都在之间,T是时间序列的长度。通常我们会画出这些范围,图上用蓝线表示。如果超过5%的突刺超出了这个范围,这个时间序列就可能不是白噪声。

随机漫步模型 random walk

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

二次差分 second-order differencing

有时一次差分的数据看起来还是不平稳,这就需要二次差分来获得一个平稳的序列。

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

周期性差分 seasonal differencing

周期性差分是一个数据点和前一个周期同一时间的数据点的差。

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

这里的m是周期的数量。这也叫做”lag-m differences”。

单位根检验 unit root tests

决定是否需要差分可以用单位根检验。我们这里使用KPSS test,在这个检测中,零假设是数据是平稳的,我们要找出零假设不为真的证据。得到比较小的p值,比如0.05,就可以认为零假设不成立,数据不平稳,我们就需要对时间序列进行差分。

后移符号 backshift notation

当我们在研究时间序列延迟的时候,后移符号B非常有用。

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

B用在yt上,是把数据后移一个周期。两次B运算就是把数据后移两个周期。

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

对于每月采集一次的数据,如果我们想要去年同月的数据,表示为

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

后移符号对于差分过程的表示非常方便,比如一次差分可以写成:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

一次差分可以表示为(1-B),那么同样,二次差分可以写成:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

一般来说,d次差分可以写成 。

后移符号在组合差分的时候非常有用,比如,周期性的差分组合一次差分可以写成:

#FormatImgID_15#

AR模型 Auto Regressive

在自回归模型中,我们使用过去变量的线性组合来预测。自回归表示这是对于自身变量的回归。

p阶AR模型可以写成:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

这里是白噪声,我们把这个叫做AR(p)模型,p阶自回归模型。

下图展示了AR(1)模型和AR(2)模型:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

对于AR(1)模型:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

我们通常会限制AR模型只用于平稳的数据,所以我们对参数有一些限制:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

对于p>2,参数限制就非常复杂,我们可以用python的包来搞定。

MA模型 Moving Average

不像AR模型中使用过去的预测变量,MA模型使用过去的预测误差。

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

是白噪声。我们把这个叫做MA(q)模型,q阶移动平均模型。

下图展示了MA(1)模型和MA(2)模型:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

我们可以把任意平稳的AR(p)模型写成MA()模型。比如,我们可以把AR(1)模型写成:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

这是一个MA()模型。

如果我们给MA模型加一些限制,我们可以称MA模型是可逆的,我们可以把任意MA(q)模型写成AR()模型。

可逆性限制和平稳性限制类似:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

对于q>2,参数限制就非常复杂,我们可以用python的包来搞定。

ARIMA模型 Auto Regressive Integrated Moving Average

如果我们组合AR和MA模型并差分,我们可以得到ARIMA模型。模型可以写成:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

是差分过的序列,右侧的预测器包含延迟yt和延迟误差。我们叫这个ARIMA(p,d,q)模型:

p自回归阶数

d差分次数

q移动平均阶数

有一些特殊的ARIMA模型如下表:

白噪声ARIMA(0,0,0)

随机漫步ARIMA(0,1,0)

带偏移量的随机漫步ARIMA(0,1,0)带常数

自回归ARIMA(p,0,0)

移动平均ARIMA(0,0,q)

用后移符号,我们可以把ARIMA模型写成:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

常数c在长期预测中十分重要:

1.如果c=0并且d=0,长期预测值会趋向于0

2.如果c=0并且d=1,长期预测值会趋向于非零常数

3.如果c=0并且d=2,长期预测值会变成一条直线

4.如果c0并且d=0,长期预测值会趋向于数据的平均值

5.如果c0并且d=1,长期预测值会变成一条直线

6.如果c0并且d=2,长期预测值会变成二次抛物线

偏自相关系数 partial autocorrelation

自相关系数测量了yt和yt-k的关系。如果yt和yt-1相关,那么yt-1和yt-2肯定也相关。但这样的话,yt和yt-2可能也相关,仅仅只因为他们都跟yt-1相关,而不是因为yt-2中有新的信息可以用于预测yt。

为了解决这个问题,我们可以使用偏自相关系数。这是在移除延迟1,2,3,…,k-1的影响后,测量yt和yt-k之间的关系。

如果差分过后的ACF和PACF图满足以下形式,数据可能是ARIMA(p,d,0)模型:

1.ACF是指数衰减或者正弦式的

2.在PACF中,在延迟p的地方有一个明显的突刺,但后面没有

如果差分过后的ACF和PACF图满足以下形式,数据可能是ARIMA(0,d,q)模型:

3.PACF是指数衰减或者正弦式的

4.在ACF中,在延迟q的地方有一个明显的突刺,但后面没有

最大似然估计 maximum likelihood estimation

估算模型的时候,我们使用最大似然估计。已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值。对于ARIMA模型,MLE通过最小化

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

来获得。对于给定的p,d,q组合,我们可以用python最大化log likelihood来找到合适的p,d,q。

信息准则 information criteria

赤池信息准则(AIC)在选取参数时非常有用,可以写成:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

其中L是数据的likelihood,如果c=0,k=0;如果c0,k=1。

修正赤池信息准则(AICc)可以写成:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

贝叶斯信息准则(BIC)可以写成:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

最小化AIC,AICc或者BIC可以得到较优模型,我们偏向于选择AIC。

pmdarima原理

pmdarima是一个python解决ARIMA和SARIMA模型的包,主要使用了Hyndman-Khandakar算法的变形,组合了单位根检验,最小化AICc和MLE。

用于自动化ARIMA模型拟合的Hyndman-Khandakar算法

重复使用KPSS检测决定差分次数

差分后最小化AICc来选取p和q的值,这种算法使用了阶梯式搜索来遍历模型空间,而不是考虑所有p和q的组合

拟合四个初始模型:

1.ARIMA(0,d,0)

2.ARIMA(2,d,2)

3.ARIMA(1,d,0)

4.ARIMA(0,d,1)

常数项会被考虑进去除非d=2。如果d1,拟合额外的一个模型:

ARIMA(0,d,0)没有常数项

在步骤a中最优的模型(最小的AICc值)会被设置为当前模型

微调当前模型:

1.对p或/和q

2.加入/去除常数项c

新的最优模型变成当前模型

重复步骤c直到没有更小的AICc

SARIMA模型 Seasonal Auto Regressive Integrated Moving Average

ARIMA模型的缺陷在于没有考虑周期性,加入周期项可以得到SARIMA模型:

ARIMA (p,d,q) (P,D,Q)m

非周期性部分 周期性部分

m是每年的观测数量。P,D,Q作为周期性参数,p,d,q作为非周期性参数。

模型的周期性部分和非周期性部分很相似,但包括了周期后移。比如,ARIMA(1,1,1)(1,1,1)4对于季度数据(m=4)可以写成:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

PACF和ACF图中的周期性延迟可以看出AR模型或者MA模型的周期性部分。

比如,SARIMA(0,0,0)(0,0,1)12模型会有以下特性:

1.ACF中延迟12有突刺,但没有其他的明显突刺

2.PACF的周期性延迟有指数衰减,比如在延迟12,24,36的地方

相似的,SARIMA(0,0,0)(1,0,0)12模型会有以下特性:

3.ACF的周期性延迟有指数衰减

4.PACF中延迟12有突刺

另外,根据简约性原则parsimony principle,为佳。

下面的例子可以很好的解释模型拟合的过程:

例子:欧洲季度零售指数

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

这个例子是欧洲零售指数从1996到2011年的数据,我们把它套进SARIMA模型进行预测。

这组数据明显是不平稳的,并有一些周期性,所以我们先进行周期性差分,如下图:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

这看起来还是不平稳,我们再进行一次差分,如下图:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

ACF图中延迟1的明显突刺说明有个非周期性的MA(1)部分,ACF图中延迟4的明显突刺说明有个周期性MA(1)的部分。所以,我们从SARIMA(0,1,1)(0,1,1)4模型开始,得到拟合模型的残差,如下图:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

ACF和PACF都在延迟2有明显突刺,延迟3的突刺也不小,所以模型应该还有额外的非周期性部分。SARIMA(0,1,2)(0,1,1)4模型的AICc是74.36,SARIMA(0,1,3)(0,1,1)4模型的AICc是68.53。其他的AR参数都没有更小的AICc值。所以,我们选择SARIMA(0,1,3)(0,1,1)4,画出该模型的残差:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

所有突刺都在合理范围内,残差值看起来像白噪声了。Ljung-Box测试也显示残差没有自相关性了。

然后,我们就可以用该模型进行预测了:

智汇华云 ——AIOps之动态阈值:SARIMA模型详解

图中显示了预测值以及80%和95%的置信区间。

指标动态阈值原理

我们已经了解了SARIMA模型,并可以对时间序列数据进行预测了。对于动态阈值,我们首先获取历史数据,对数据进行处理,需要对缺失数据进行一些填充。然后我们进行SARIMA模型拟合,得出最优模型之后,对未来指标走势进行预测,通过95%的置信区间生成阈值区间,如果指标超出这个区间,我们认为指标异常,对用户进行告警。每天我们都会重复以上操作,让模型拟合更加准确,从而使动态阈值功能日趋完善。

【本文结束】如需转载请务必注明出处:快科技

责任编辑:文章纠错

  • 支持打赏
  • 支持0

  • 反对

  • 打赏

文章价值打分

当前文章打分0 分,共有0人打分
  • 分享好友:
  • |
本文收录在
#快讯

  • 热门文章
  • 换一波

  • 好物推荐
  • 换一波

  • 关注我们

  • 微博

    微博:快科技官方

    快科技官方微博
  • 今日头条

    今日头条:快科技

    带来硬件软件、手机数码最快资讯!
  • 抖音

    抖音:kkjcn

    科技快讯、手机开箱、产品体验、应用推荐...