1. 創(chuàng)業(yè)頭條
  2. 前沿領(lǐng)域
  3. 大數(shù)據(jù)
  4. 正文

智匯華云 ——AIOps之動態(tài)閾值:SARIMA模型詳解

 2019-06-05 12:12  來源:互聯(lián)網(wǎng)  我來投稿 撤稿糾錯

  域名預(yù)訂/競價,好“米”不錯過

近年來,IT運(yùn)維人工智能(AIOps)已成為了應(yīng)對IT系統(tǒng)與日俱增的復(fù)雜性的很好的解決方案。AIOps基于大數(shù)據(jù)、數(shù)據(jù)分析和機(jī)器學(xué)習(xí)來提供洞察力,并為管理現(xiàn)代基礎(chǔ)設(shè)施和軟件所需的任務(wù)提供更高水平的自動化(不依賴于人類操作員)。

因此,AIOps具有巨大的價值。展望未來,AIOps將在IT團(tuán)隊(duì)提高效率方面發(fā)揮關(guān)鍵作用。它還會使應(yīng)用復(fù)雜的下一代技術(shù)成為可能,而且那些技術(shù)的復(fù)雜性是傳統(tǒng)解決方案無法勝任的。

華云數(shù)據(jù)“智匯華云”專欄將為您奉上“AIOps之動態(tài)閾值—SARIMA模型詳解”。

通過使用數(shù)據(jù)收集、數(shù)據(jù)分析和機(jī)器學(xué)習(xí)相結(jié)合的完整AIOps解決方案,IT Ops團(tuán)隊(duì)可以支持以下幾個關(guān)鍵使用場景:

1.異常檢測。也許AIOps最基本的使用案例就是檢測數(shù)據(jù)中的異常,然后根據(jù)需要對它們做出反應(yīng)。

2.原因分析。AIOps還可幫助IT Ops團(tuán)隊(duì)自動執(zhí)行根本原因分析,從而快速解決問題。

3.預(yù)測。AIOps可以讓工具能對未來進(jìn)行自動預(yù)測,例如用戶流量在特定的時間點(diǎn)可能會怎樣的變化,然后做出相應(yīng)的反應(yīng)。

4.報警管理。AIOps在幫助IT Ops團(tuán)隊(duì)?wèi)?yīng)對他們必須處理的大量警報,以支持正常的運(yùn)營方面發(fā)揮著越來越重要的作用。

5.智能修復(fù)。AIOps通過自動化工具驅(qū)動閉環(huán)的故障修復(fù),而不依賴于運(yùn)維人員。

異常檢測

異常檢測以定位問題并了解基礎(chǔ)架構(gòu)和應(yīng)用程序中的趨勢是AIOps的一個關(guān)鍵用例。檢測可以讓工具探測出異常行為(例如某個服務(wù)器響應(yīng)速度比平時慢,或受黑客攻擊而出現(xiàn)異常的網(wǎng)絡(luò)行為)并作出相應(yīng)的反饋。

在很多情況下,在現(xiàn)代軟件環(huán)境中進(jìn)程異常檢測,對于AIOps而言還是特別具有挑戰(zhàn)性。因?yàn)樵谠S多情況下,并沒有通用的方法去定義合理的觸發(fā)條件。例如對于在整個環(huán)境中的網(wǎng)絡(luò)流量、內(nèi)存和存儲空間消耗而言,它們的波動還是會很大的。那么活躍用戶量或應(yīng)用程序?qū)嵗彩侨绱?。在這些情況下進(jìn)行有效監(jiān)測需要AIOps能采用足夠智能的工具來設(shè)置動態(tài)基線。動態(tài)基線(閾值)為工具設(shè)置特定的情況下(例如一天中的時段和應(yīng)用程序的注冊用戶數(shù))正?;顒拥姆秶?,然后檢測與動態(tài)基線不匹配的數(shù)據(jù)或事件。

SARIMA模型

下面,就給大家講解一下我們這次用到的SARIMA模型,用于預(yù)測指標(biāo)動態(tài)閾值,從而檢測異常。

SARIMA模型的全稱是Seasonal Auto Regressive Integrated Moving Average,中文是周期性自回歸差分移動平均。SARIMA模型是一種預(yù)測周期性的時間序列效果非常好的模型。SARIMA模型的目標(biāo)是描述數(shù)據(jù)的自相關(guān)性。要理解SARIMA模型,我們首先需要了解平穩(wěn)性的概念以及差分時間序列的技術(shù)。

平穩(wěn)性 stationarity

總的來說,一個時間序列,如果均值沒有系統(tǒng)性的變化(無趨勢),方差沒有系統(tǒng)變化,且消除了周期性變化,就稱之為平穩(wěn)的。

顯然,圖(d), (h), (i)有一定的周期性,所以不平穩(wěn)。圖(a), (c), (e), (f), (i)有一定的趨勢性,并且圖(i)的方差在增長,所以不平穩(wěn)。只有圖(b)和(g)是平穩(wěn)的。可能大家第一眼看到圖(g)覺得有周期性,其實(shí)是沒有的,因?yàn)檫@是猞猁的代際數(shù)量,在長期來看,這并沒有周期性,所以這個時間序列是平穩(wěn)的。

差分 differencing

我們可以看到圖(a)是谷歌股價圖,這是不平穩(wěn)的。但圖(b)是股價每天的變化量,這是平穩(wěn)的。這就是一種讓不平穩(wěn)的時間序列變?yōu)槠椒€(wěn)時間序列的方法,計算連續(xù)時間數(shù)據(jù)點(diǎn)之間的差,這就是差分。

類似于取對數(shù)log的方法可以使時間序列的方差變平穩(wěn),差分通過消除時間序列的變化量,從而使時間序列的平均值變平穩(wěn),來達(dá)到消除趨勢性和周期性。

自相關(guān)系數(shù) autocorrelation

自相關(guān)系數(shù)是用來測定時間序列的兩個時刻的值的線性關(guān)系。比如r1是測量yt和yt-1的關(guān)系,r2是測量yt和yt-2的關(guān)系。

T是時間序列的長度,k是延遲lag

ACF(autocorrelation function)圖是一種非常有效的來判斷時間序列平穩(wěn)性的方法。

如果數(shù)據(jù)有趨勢性,那么對于較小的延遲,自相關(guān)性趨向于比較大并且為正。當(dāng)延遲增大時,ACF會慢慢變小。

如果數(shù)據(jù)有周期性,對于周期性的延遲,自相關(guān)性會比較大一些。

如果數(shù)據(jù)既有周期性又有趨勢性,你就會看到兩者的結(jié)合。

這張圖是澳大利亞電力需求圖,可以看到這組數(shù)據(jù)既有周期性,又有趨勢性。

畫出ACF圖如下:

可以看到,因?yàn)橼厔菪裕?dāng)延遲變大時,ACF慢慢變小。因?yàn)橹芷谛裕瑘D像會有峰谷的感覺。

白噪聲 white noise

一個時間序列如果沒有任何自相關(guān)性就可以稱為白噪聲。

這是一個白噪聲的例子,我們畫出它的ACF圖:

我們期望所有的ACF值接近于0,但因?yàn)橐恍╇S機(jī)變化,他們不可能正好等于0。對于白噪聲,我們期望95%的ACF突刺都在之間,T是時間序列的長度。通常我們會畫出這些范圍,圖上用藍(lán)線表示。如果超過5%的突刺超出了這個范圍,這個時間序列就可能不是白噪聲。

隨機(jī)漫步模型 random walk

二次差分 second-order differencing

有時一次差分的數(shù)據(jù)看起來還是不平穩(wěn),這就需要二次差分來獲得一個平穩(wěn)的序列。

周期性差分 seasonal differencing

周期性差分是一個數(shù)據(jù)點(diǎn)和前一個周期同一時間的數(shù)據(jù)點(diǎn)的差。

這里的m是周期的數(shù)量。這也叫做”lag-m differences”。

單位根檢驗(yàn) unit root tests

決定是否需要差分可以用單位根檢驗(yàn)。我們這里使用KPSS test,在這個檢測中,零假設(shè)是數(shù)據(jù)是平穩(wěn)的,我們要找出零假設(shè)不為真的證據(jù)。得到比較小的p值,比如0.05,就可以認(rèn)為零假設(shè)不成立,數(shù)據(jù)不平穩(wěn),我們就需要對時間序列進(jìn)行差分。

后移符號 backshift notation

當(dāng)我們在研究時間序列延遲的時候,后移符號B非常有用。

B用在yt上,是把數(shù)據(jù)后移一個周期。兩次B運(yùn)算就是把數(shù)據(jù)后移兩個周期。

對于每月采集一次的數(shù)據(jù),如果我們想要去年同月的數(shù)據(jù),表示為

后移符號對于差分過程的表示非常方便,比如一次差分可以寫成:

一次差分可以表示為(1-B),那么同樣,二次差分可以寫成:

一般來說,d次差分可以寫成 。

后移符號在組合差分的時候非常有用,比如,周期性的差分組合一次差分可以寫成:

AR模型 Auto Regressive

在自回歸模型中,我們使用過去變量的線性組合來預(yù)測。自回歸表示這是對于自身變量的回歸。

p階AR模型可以寫成:

這里是白噪聲,我們把這個叫做AR(p)模型,p階自回歸模型。

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

#FormatImgID_15#

對于AR(1)模型:

我們通常會限制AR模型只用于平穩(wěn)的數(shù)據(jù),所以我們對參數(shù)有一些限制:

對于p>2,參數(shù)限制就非常復(fù)雜,我們可以用python的包來搞定。

MA模型 Moving Average

不像AR模型中使用過去的預(yù)測變量,MA模型使用過去的預(yù)測誤差。

是白噪聲。我們把這個叫做MA(q)模型,q階移動平均模型。

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

我們可以把任意平穩(wěn)的AR(p)模型寫成MA()模型。比如,我們可以把AR(1)模型寫成:

這是一個MA()模型。

如果我們給MA模型加一些限制,我們可以稱MA模型是可逆的,我們可以把任意MA(q)模型寫成AR()模型。

可逆性限制和平穩(wěn)性限制類似:

對于q>2,參數(shù)限制就非常復(fù)雜,我們可以用python的包來搞定。

ARIMA模型 Auto Regressive Integrated Moving Average

如果我們組合AR和MA模型并差分,我們可以得到ARIMA模型。模型可以寫成:

是差分過的序列,右側(cè)的預(yù)測器包含延遲yt和延遲誤差。我們叫這個ARIMA(p,d,q)模型:

p自回歸階數(shù)

d差分次數(shù)

q移動平均階數(shù)

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

白噪聲ARIMA(0,0,0)

隨機(jī)漫步ARIMA(0,1,0)

帶偏移量的隨機(jī)漫步ARIMA(0,1,0)帶常數(shù)

自回歸ARIMA(p,0,0)

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

用后移符號,我們可以把ARIMA模型寫成:

常數(shù)c在長期預(yù)測中十分重要:

1.如果c=0并且d=0,長期預(yù)測值會趨向于0

2.如果c=0并且d=1,長期預(yù)測值會趨向于非零常數(shù)

3.如果c=0并且d=2,長期預(yù)測值會變成一條直線

4.如果c0并且d=0,長期預(yù)測值會趨向于數(shù)據(jù)的平均值

5.如果c0并且d=1,長期預(yù)測值會變成一條直線

6.如果c0并且d=2,長期預(yù)測值會變成二次拋物線

偏自相關(guān)系數(shù) partial autocorrelation

自相關(guān)系數(shù)測量了yt和yt-k的關(guān)系。如果yt和yt-1相關(guān),那么yt-1和yt-2肯定也相關(guān)。但這樣的話,yt和yt-2可能也相關(guān),僅僅只因?yàn)樗麄兌几鷜t-1相關(guān),而不是因?yàn)閥t-2中有新的信息可以用于預(yù)測yt。

為了解決這個問題,我們可以使用偏自相關(guān)系數(shù)。這是在移除延遲1,2,3,…,k-1的影響后,測量yt和yt-k之間的關(guān)系。

如果差分過后的ACF和PACF圖滿足以下形式,數(shù)據(jù)可能是ARIMA(p,d,0)模型:

1.ACF是指數(shù)衰減或者正弦式的

2.在PACF中,在延遲p的地方有一個明顯的突刺,但后面沒有

如果差分過后的ACF和PACF圖滿足以下形式,數(shù)據(jù)可能是ARIMA(0,d,q)模型:

3.PACF是指數(shù)衰減或者正弦式的

4.在ACF中,在延遲q的地方有一個明顯的突刺,但后面沒有

最大似然估計 maximum likelihood estimation

估算模型的時候,我們使用最大似然估計。已知某個隨機(jī)樣本滿足某種概率分布,但是其中具體的參數(shù)不清楚,參數(shù)估計就是通過若干次試驗(yàn),觀察其結(jié)果,利用結(jié)果推出參數(shù)的大概值。對于ARIMA模型,MLE通過最小化

來獲得。對于給定的p,d,q組合,我們可以用python最大化log likelihood來找到合適的p,d,q。

信息準(zhǔn)則 information criteria

赤池信息準(zhǔn)則(AIC)在選取參數(shù)時非常有用,可以寫成:

其中L是數(shù)據(jù)的likelihood,如果c=0,k=0;如果c0,k=1。

修正赤池信息準(zhǔn)則(AICc)可以寫成:

貝葉斯信息準(zhǔn)則(BIC)可以寫成:

最小化AIC,AICc或者BIC可以得到較優(yōu)模型,我們偏向于選擇AIC。

pmdarima原理

pmdarima是一個python解決ARIMA和SARIMA模型的包,主要使用了Hyndman-Khandakar算法的變形,組合了單位根檢驗(yàn),最小化AICc和MLE。

用于自動化ARIMA模型擬合的Hyndman-Khandakar算法

重復(fù)使用KPSS檢測決定差分次數(shù)

差分后最小化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)

常數(shù)項(xiàng)會被考慮進(jìn)去除非d=2。如果d1,擬合額外的一個模型:

ARIMA(0,d,0)沒有常數(shù)項(xiàng)

在步驟a中最優(yōu)的模型(最小的AICc值)會被設(shè)置為當(dāng)前模型

微調(diào)當(dāng)前模型:

1.對p或/和q

2.加入/去除常數(shù)項(xiàng)c

新的最優(yōu)模型變成當(dāng)前模型

重復(fù)步驟c直到?jīng)]有更小的AICc

SARIMA模型 Seasonal Auto Regressive Integrated Moving Average

ARIMA模型的缺陷在于沒有考慮周期性,加入周期項(xiàng)可以得到SARIMA模型:

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

非周期性部分 周期性部分

m是每年的觀測數(shù)量。P,D,Q作為周期性參數(shù),p,d,q作為非周期性參數(shù)。

模型的周期性部分和非周期性部分很相似,但包括了周期后移。比如,ARIMA(1,1,1)(1,1,1)4對于季度數(shù)據(jù)(m=4)可以寫成:

PACF和ACF圖中的周期性延遲可以看出AR模型或者M(jìn)A模型的周期性部分。

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

1.ACF中延遲12有突刺,但沒有其他的明顯突刺

2.PACF的周期性延遲有指數(shù)衰減,比如在延遲12,24,36的地方

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

3.ACF的周期性延遲有指數(shù)衰減

4.PACF中延遲12有突刺

另外,根據(jù)簡約性原則parsimony principle,為佳。

下面的例子可以很好的解釋模型擬合的過程:

例子:歐洲季度零售指數(shù)

這個例子是歐洲零售指數(shù)從1996到2011年的數(shù)據(jù),我們把它套進(jìn)SARIMA模型進(jìn)行預(yù)測。

這組數(shù)據(jù)明顯是不平穩(wěn)的,并有一些周期性,所以我們先進(jìn)行周期性差分,如下圖:

這看起來還是不平穩(wěn),我們再進(jìn)行一次差分,如下圖:

ACF圖中延遲1的明顯突刺說明有個非周期性的MA(1)部分,ACF圖中延遲4的明顯突刺說明有個周期性MA(1)的部分。所以,我們從SARIMA(0,1,1)(0,1,1)4模型開始,得到擬合模型的殘差,如下圖:

ACF和PACF都在延遲2有明顯突刺,延遲3的突刺也不小,所以模型應(yīng)該還有額外的非周期性部分。SARIMA(0,1,2)(0,1,1)4模型的AICc是74.36,SARIMA(0,1,3)(0,1,1)4模型的AICc是68.53。其他的AR參數(shù)都沒有更小的AICc值。所以,我們選擇SARIMA(0,1,3)(0,1,1)4,畫出該模型的殘差:

所有突刺都在合理范圍內(nèi),殘差值看起來像白噪聲了。Ljung-Box測試也顯示殘差沒有自相關(guān)性了。

然后,我們就可以用該模型進(jìn)行預(yù)測了:

圖中顯示了預(yù)測值以及80%和95%的置信區(qū)間。

指標(biāo)動態(tài)閾值原理

我們已經(jīng)了解了SARIMA模型,并可以對時間序列數(shù)據(jù)進(jìn)行預(yù)測了。對于動態(tài)閾值,我們首先獲取歷史數(shù)據(jù),對數(shù)據(jù)進(jìn)行處理,需要對缺失數(shù)據(jù)進(jìn)行一些填充。然后我們進(jìn)行SARIMA模型擬合,得出最優(yōu)模型之后,對未來指標(biāo)走勢進(jìn)行預(yù)測,通過95%的置信區(qū)間生成閾值區(qū)間,如果指標(biāo)超出這個區(qū)間,我們認(rèn)為指標(biāo)異常,對用戶進(jìn)行告警。每天我們都會重復(fù)以上操作,讓模型擬合更加準(zhǔn)確,從而使動態(tài)閾值功能日趨完善。

部分參考資料來源互聯(lián)網(wǎng)

申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點(diǎn)子。點(diǎn)擊此處,共同探討創(chuàng)業(yè)新機(jī)遇!

相關(guān)文章

編輯推薦