近年来,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模型的全称是Seasonal Auto Regressive Integrated Moving Average,中文是周期性自回归差分移动平均。SARIMA模型是一种预测周期性的时间序列效果非常好的模型。SARIMA模型的目标是描述数据的自相关性。要理解SARIMA模型,我们首先需要了解平稳性的概念以及差分时间序列的技术。
总的来说,一个时间序列,如果均值没有系统性的变化(无趋势),方差没有系统变化,且消除了周期性变化,就称之为平稳的。
显然,图(d), (h), (i)有一定的周期性,所以不平稳。图(a), (c), (e), (f), (i)有一定的趋势性,并且图(i)的方差在增长,所以不平稳。只有图(b)和(g)是平稳的。可能大家第一眼看到图(g)觉得有周期性,其实是没有的,因为这是猞猁的代际数量,在长期来看,这并没有周期性,所以这个时间序列是平稳的。
我们可以看到图(a)是谷歌股价图,这是不平稳的。但图(b)是股价每天的变化量,这是平稳的。这就是一种让不平稳的时间序列变为平稳时间序列的方法,计算连续时间数据点之间的差,这就是差分。
类似于取对数log的方法可以使时间序列的方差变平稳,差分通过消除时间序列的变化量,从而使时间序列的平均值变平稳,来达到消除趋势性和周期性。
自相关系数是用来测定时间序列的两个时刻的值的线性关系。比如r1是测量yt和yt-1的关系,r2是测量yt和yt-2的关系。
T是时间序列的长度,k是延迟lag
如果数据有趋势性,那么对于较小的延迟,自相关性趋向于比较大并且为正。当延迟增大时,ACF会慢慢变小。
如果数据有周期性,对于周期性的延迟,自相关性会比较大一些。
如果数据既有周期性又有趋势性,你就会看到两者的结合。
这张图是澳大利亚电力需求图,可以看到这组数据既有周期性,又有趋势性。
可以看到,因为趋势性,当延迟变大时,ACF慢慢变小。因为周期性,图像会有峰谷的感觉。
一个时间序列如果没有任何自相关性就可以称为白噪声。
这是一个白噪声的例子,我们画出它的ACF图:
我们期望所有的ACF值接近于0,但因为一些随机变化,他们不可能正好等于0。对于白噪声,我们期望95%的ACF突刺都在之间,T是时间序列的长度。通常我们会画出这些范围,图上用蓝线表示。如果超过5%的突刺超出了这个范围,这个时间序列就可能不是白噪声。
有时一次差分的数据看起来还是不平稳,这就需要二次差分来获得一个平稳的序列。
周期性差分是一个数据点和前一个周期同一时间的数据点的差。
决定是否需要差分可以用单位根检验。我们这里使用KPSS test,在这个检测中,零假设是数据是平稳的,我们要找出零假设不为真的证据。得到比较小的p值,比如0.05,就可以认为零假设不成立,数据不平稳,我们就需要对时间序列进行差分。
当我们在研究时间序列延迟的时候,后移符号B非常有用。
B用在yt上,是把数据后移一个周期。两次B运算就是把数据后移两个周期。
对于每月采集一次的数据,如果我们想要去年同月的数据,表示为
后移符号对于差分过程的表示非常方便,比如一次差分可以写成:
一次差分可以表示为(1-B),那么同样,二次差分可以写成:
一般来说,d次差分可以写成 。
后移符号在组合差分的时候非常有用,比如,周期性的差分组合一次差分可以写成:
在自回归模型中,我们使用过去变量的线性组合来预测。自回归表示这是对于自身变量的回归。
p阶AR模型可以写成:
这里是白噪声,我们把这个叫做AR(p)模型,p阶自回归模型。
下图展示了AR(1)模型和AR(2)模型:
我们通常会限制AR模型只用于平稳的数据,所以我们对参数有一些限制:
对于p>2,参数限制就非常复杂,我们可以用python的包来搞定。
不像AR模型中使用过去的预测变量,MA模型使用过去的预测误差。
是白噪声。我们把这个叫做MA(q)模型,q阶移动平均模型。
下图展示了MA(1)模型和MA(2)模型:
我们可以把任意平稳的AR(p)模型写成MA()模型。比如,我们可以把AR(1)模型写成:
这是一个MA()模型。
如果我们给MA模型加一些限制,我们可以称MA模型是可逆的,我们可以把任意MA(q)模型写成AR()模型。
可逆性限制和平稳性限制类似:
对于q>2,参数限制就非常复杂,我们可以用python的包来搞定。
如果我们组合AR和MA模型并差分,我们可以得到ARIMA模型。模型可以写成:
是差分过的序列,右侧的预测器包含延迟yt和延迟误差。我们叫这个ARIMA(p,d,q)模型:
有一些特殊的ARIMA模型如下表:
用后移符号,我们可以把ARIMA模型写成:
常数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,长期预测值会变成二次抛物线
自相关系数测量了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的地方有一个明显的突刺,但后面没有
估算模型的时候,我们使用最大似然估计。已知某个随机样本满足某种概率分布,但是其中具体的参数不清楚,参数估计就是通过若干次试验,观察其结果,利用结果推出参数的大概值。对于ARIMA模型,MLE通过最小化
赤池信息准则(AIC)在选取参数时非常有用,可以写成:
修正赤池信息准则(AICc)可以写成:
贝叶斯信息准则(BIC)可以写成:
最小化AIC,AICc或者BIC可以得到较优模型,我们偏向于选择AIC。
重复使用KPSS检测决定差分次数
差分后最小化AICc来选取p和q的值,这种算法使用了阶梯式搜索来遍历模型空间,而不是考虑所有p和q的组合
常数项会被考虑进去除非d=2。如果d1,拟合额外的一个模型:
在步骤a中最优的模型(最小的AICc值)会被设置为当前模型
2.加入/去除常数项c
新的最优模型变成当前模型
重复步骤c直到没有更小的AICc
ARIMA模型的缺陷在于没有考虑周期性,加入周期项可以得到SARIMA模型:
非周期性部分 周期性部分
m是每年的观测数量。P,D,Q作为周期性参数,p,d,q作为非周期性参数。
模型的周期性部分和非周期性部分很相似,但包括了周期后移。比如,ARIMA(1,1,1)(1,1,1)4对于季度数据(m=4)可以写成:
PACF和ACF图中的周期性延迟可以看出AR模型或者MA模型的周期性部分。
1.ACF中延迟12有突刺,但没有其他的明显突刺
2.PACF的周期性延迟有指数衰减,比如在延迟12,24,36的地方
3.ACF的周期性延迟有指数衰减
下面的例子可以很好的解释模型拟合的过程:
例子:欧洲季度零售指数
这个例子是欧洲零售指数从1996到2011年的数据,我们把它套进SARIMA模型进行预测。
这组数据明显是不平稳的,并有一些周期性,所以我们先进行周期性差分,如下图:
这看起来还是不平稳,我们再进行一次差分,如下图:
ACF图中延迟1的明显突刺说明有个非周期性的MA(1)部分,ACF图中延迟4的明显突刺说明有个周期性MA(1)的部分。所以,我们从SARIMA(0,1,1)(0,1,1)4模型开始,得到拟合模型的残差,如下图:
所有突刺都在合理范围内,残差值看起来像白噪声了。Ljung-Box测试也显示残差没有自相关性了。
然后,我们就可以用该模型进行预测了:
图中显示了预测值以及80%和95%的置信区间。
我们已经了解了SARIMA模型,并可以对时间序列数据进行预测了。对于动态阈值,我们首先获取历史数据,对数据进行处理,需要对缺失数据进行一些填充。然后我们进行SARIMA模型拟合,得出最优模型之后,对未来指标走势进行预测,通过95%的置信区间生成阈值区间,如果指标超出这个区间,我们认为指标异常,对用户进行告警。每天我们都会重复以上操作,让模型拟合更加准确,从而使动态阈值功能日趋完善。
部分参考资料来源互联网
申请创业报道,分享创业好点子。,共同探讨创业新机遇!
时间序列为预测未来数据提供了方法。根据先前的值,时间序列可用于预测经济,天气的趋势。时间序列数据的特定属性意味着通常需要专门的统计方法。
在本教程中,我们将首先介绍和讨论自相关,平稳性和季节性的概念,然后继续应用最常用的时间序列预测方法之一,称为ARIMA。
Python中可用的一种用于建模和预测时间序列的未来点的方法称为 SARIMAX,它表示带有季节性回归的 季节性自回归综合移动平均线。在这里,我们将主要关注ARIMA,用于拟合时间序列数据以更好地理解和预测时间序列中的未来点。
为了充分利用本教程,熟悉时间序列和统计信息可能会有所帮助。
要设置我们的时间序列预测环境:
从这里开始,为我们的项目创建一个新目录。
第2步-导入包并加载数据
要开始使用我们的数据,我们将启动Jupyter Notebook:
要创建新的笔记本文件,请 从右上方的下拉菜单中选择“ 新建” >“ Python 3 ”:
我们将使用CO2数据集,该数据集收集了从1958年3月至2001年12月CO2样本。我们可以将这些数据引入如下:
让我们对数据进行一些预处理。每周数据处理起来比较麻烦,因为时间比较短,所以让我们使用每月平均值。我们还可以使用 fillna() 函数 来确保时间序列中没有缺失值。
让我们用数据可视化探索这个时间序列:
当我们绘制数据时,可以发现时间序列具有明显的季节性模式,并且总体趋势呈上升趋势。
现在,我们继续使用ARIMA进行时间序列预测。
第3步-ARIMA时间序列模型
在时间序列预测中使用的最常见的方法是被称为ARIMA模型。ARIMA是可以拟合时间序列数据的模型,以便更好地理解或预测序列中的未来点。
有三种不同的整数(p, d, q)是用来参数化ARIMA模型。因此,ARIMA模型用符号表示 ARIMA(p, d, q)。这三个参数共同说明了数据集中的季节性,趋势和噪声:
在处理季节性影响时,我们使用 季节性 ARIMA(表示为) ARIMA(p,d,q)(P,D,Q)s。这里, (p, d, q) 是非季节参数,尽管 (P, D, Q) 遵循相同的定义,但适用于时间序列的季节分量。该术语 s 是时间序列的周期性(4 季度, 12 每年)。
在下一节中,我们将描述如何为季节性ARIMA时间序列模型自动识别最佳参数的过程。
第4步-ARIMA时间序列模型的参数选择
当希望使用季节性ARIMA模型拟合时间序列数据时,我们的首要目标是找到ARIMA(p,d,q)(P,D,Q)s 可优化目标指标的值 。有许多准则和最佳实践可以实现此目标,但是ARIMA模型的正确参数化可能是艰苦的手动过程,需要领域专业知识和时间。其他统计编程语言(例如) R 提供 解决此问题的自动化方法,但这些方法尚未移植到Python。在本节中,我们将通过编写Python代码以编程方式选择ARIMA(p,d,q)(P,D,Q)s 时间序列模型的最佳参数值来解决此问题 。
我们将使用“网格搜索”来迭代探索参数的不同组合。对于每种参数组合,我们使用 模块中的SARIMAX() 拟合新的季节性ARIMA模型。探索了整个参数范围,我们的最佳参数集便会成为产生最佳性能的一组参数。让我们首先生成我们要评估的各种参数组合:
现在,我们可以使用上面定义的三元组参数来自动化训练和评估不同组合上的ARIMA模型的过程。在统计和机器学习中,此过程称为用于模型选择的网格搜索(或超参数优化)。
在评估和比较不同参数的统计模型时,可以根据其拟合数据的程度或其准确预测未来数据点的能力来对每个模型进行排名。我们将使用 AIC (Akaike Information Criterion)值,该值可通过使用拟合的ARIMA模型方便地返回 statsmodels。AIC 在考虑模型整体复杂性的同时, 测量模型拟合数据的程度。与使用较少特征以达到相同拟合优度的模型相比,在使用大量特征的模型将获得更大的AIC得分。因此,我们寻找产生最低AIC 的模型 。
下面的代码块通过参数组合进行迭代,并使用中的 SARIMAX 函数 statsmodels 来拟合相应的Season ARIMA模型。拟合每个 SARIMAX()模型后,代码将输出出它们各自的 AIC 分数。
上面的代码产生以下结果
代码的输出表明, SARIMAX(1, 1, 1)x(1, 1, 1, 12) 该AIC 值的最低 值为277.78。因此,在我们考虑的所有模型中,我们应该将其视为最佳选择。
步骤5 —拟合ARIMA时间序列模型
使用网格搜索,我们确定了一组参数,这些参数对我们的时间序列数据产生了最佳拟合模型。我们可以继续更深入地分析此模型。
我们将从将最佳参数值插入新 SARIMAX 模型开始:
summary 输出结果产生的 属性 SARIMAX 返回了大量信息,但是我们将注意力集中在系数上。 coef 列显示每个函数的权重(即重要性)以及每个函数如何影响时间序列。 P>|z| 列告知我们每个特征权重的重要性。在这里,每个权重的p值都小于或接近 0.05,因此将所有权重保留在我们的模型中是合理的。
在拟合季节性ARIMA模型时,重要的是运行模型诊断程序,以确保没有违反模型所做的假设。
我们主要关心的是确保模型的残差不相关并且零均值正态分布。如果季节性ARIMA模型不满足这些属性,则表明它可以进一步改善。
在这种情况下,我们的模型诊断建议根据以下内容正态分布模型残差:
这些观察结果使我们得出结论,我们的模型产生了令人满意的拟合度,可以帮助我们理解时间序列数据并预测未来价值。
尽管我们具有令人满意的拟合度,但可以更改季节性ARIMA模型的某些参数以改善模型拟合度。因此,如果扩大网格搜索范围,我们可能会找到更好的模型。
我们已经为时间序列获得了模型,现在可以将其用于产生预测。我们首先将预测值与时间序列的实际值进行比较,这将有助于我们了解预测的准确性。
上面的代码表示预测从1998年1月开始。
我们可以绘制CO2时间序列的实际值和预测值,评估我们的效果。
总体而言,我们的预测与真实值非常吻合,显示出总体增长趋势。
量化我们的预测准确性也很有用。我们将使用MSE(均方误差)来总结我们预测的平均误差。对于每个预测值,我们计算其与真实值的差异并将结果平方。对结果进行平方,在计算总体均值时正/负差不会互相抵消。
我们提前一步进行预测的MSE得出的值为 0.07,因为它接近于0,因此非常低。如果MSE为0,则估算以理想的精度预测参数的观测值,这是理想的情况,但是这通常是不可能的。
但是,使用动态预测可以更好地表示我们的真实预测能力。在这种情况下,我们仅使用时间序列中直到某个特定点的信息,之后,将使用以前的预测时间点中的值生成预测。
在下面的代码块中,我们指定从1998年1月起开始计算动态预测和置信区间。
通过绘制时间序列的观察值和预测值,我们可以看到,即使使用动态预测,总体预测也是准确的。所有预测值(红线)与真实情况(蓝线)非常接近,并且都在我们预测的置信区间内。
我们再次通过计算MSE来量化预测的效果:
从动态预测获得的预测值产生的MSE为1.01。这比前面的略高,这是可以预期的,因为我们所依赖的时间序列的历史数据较少。
提前一步和动态预测都确认此时间序列模型有效。但是,时间序列预测的兴趣在于能够提前预测未来值。
第7步-生成和可视化预测
最后,我们描述了如何利用季节性ARIMA时间序列模型来预测未来数据。
我们可以使用此代码的输出来绘制时间序列并预测其未来值。
现在,我们所生成的预测和相关的置信区间都可以用于进一步了解时间序列并预测预期结果。我们的预测表明,时间序列预计将继续稳定增长。
随着我们对未来的进一步预测,置信区间会越来越大。
在本教程中,我们描述了如何在Python中实现季节性ARIMA模型。展示了如何进行模型诊断以及如何生成二氧化碳时间序列的预测。
您可以尝试以下一些其他操作:
2.python中利用长短期记忆模型lstm进行时间序列预测分析
3.使用r语言进行时间序列(arima,指数平滑)分析
5.r语言copulas和金融时间序列案例
6.使用r语言随机波动模型sv处理时间序列中的随机波动
7.r语言时间序列tar阈值自回归模型
8.r语言k-shape时间序列聚类方法对股票价格时间序列聚类
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
【摘要】:目的探讨季节性时间序列ARIMA预测模型在时间序列资料分析中的应用,建立门诊量的预测模型。方法采用最小二乘法估计模型参数,通过对数转换及差分方法使原始序列平稳,按照残差不相关原则、简洁原则确定模型结构,依据AIC和SBC准则确定模型阶数,建立ARIMA预测模型。结果季节自回归参数有统计学意义。方差估计值为0.001956,AIC=-443.26,SBC=-437.51。对模型进行白噪声残差分析,拟合优度统计量表中表明ARIMA的估计具体模型为:(1-B)(1-B12)Zt=(1-0.24269B)(1-0.30096B12)at是适合的。结论用所建立模型对月门诊量进行预测,结果表明ARIMA是一种短期预测精度较高的预测模型。
|