摘 ?要:時(shí)間序列相關(guān)性分析是時(shí)間序列數(shù)據(jù)挖掘的重要手段,序列間相互影響與關(guān)聯(lián),其隱藏的相關(guān)信息可以用于識(shí)別、解釋異常問題。目前大多數(shù)方法對(duì)隱藏的相關(guān)信息分析能力不足,各有缺陷,文章提出了一種多算法融合的方法,通過多種相關(guān)系數(shù)組合分析序列間的線性或非線性關(guān)系,同時(shí)對(duì)序列異常檢測(cè)后的結(jié)果進(jìn)行波動(dòng)分析。真實(shí)數(shù)據(jù)表明,該方法能夠精確發(fā)現(xiàn)序列間的相關(guān)性,實(shí)現(xiàn)根因定位。
關(guān)鍵詞:時(shí)間序列;異常檢測(cè);相關(guān)性分析;相關(guān)系數(shù);DTW
中圖分類號(hào):O211.61;O151.21 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)13-0005-04
Abstract:Time series correlation analysis is an important means of time series data mining. The correlation between time series affects and correlates with each other,and the hidden related information can be used to identify and explain abnormal problems. At present,most of the methods have insufficient ability to analyze hidden related information,and each has its own shortcomings. This article proposes a method of multi-algorithm fusion,we analyze the linear or non-linear relationship between time series by a variety of correlation coefficient combination,and the fluctuation analysis of the sequence anomaly detection results is carried out. The real data show that this method can accurately find the correlation between sequences and realize root cause location.
Keywords:time series;anomaly detection;correlation analysis;correlation coefficient;DTW
0 ?引 ?言
時(shí)間序列是指將同一統(tǒng)計(jì)指標(biāo)的數(shù)值按其發(fā)生的時(shí)間先后順序排列而成的數(shù)列,廣泛存在于各個(gè)領(lǐng)域,比如電商平臺(tái)的商品銷售記錄、金融市場(chǎng)的股票數(shù)據(jù)、互聯(lián)網(wǎng)公司的監(jiān)控性能指標(biāo)等。隨著大數(shù)據(jù)時(shí)代的到來,時(shí)間序列的規(guī)模也日趨增大,對(duì)時(shí)間序列進(jìn)行分析,可以揭示事物運(yùn)動(dòng)、變化和發(fā)展的內(nèi)在規(guī)律,對(duì)于人們正確認(rèn)識(shí)事物并作出科學(xué)的決策具有重要的現(xiàn)實(shí)意義。上海鐵路局非常重視大數(shù)據(jù)和算法結(jié)合提升業(yè)務(wù)和IT運(yùn)維能力,已經(jīng)先后在業(yè)務(wù)預(yù)測(cè)、業(yè)務(wù)分析、數(shù)據(jù)中心智能運(yùn)維等方向投入大量研究和項(xiàng)目實(shí)踐。筆者作為上海鐵路局大數(shù)據(jù)運(yùn)維的負(fù)責(zé)人,全程參與并主導(dǎo)了上述研究和項(xiàng)目的進(jìn)行,并且已經(jīng)產(chǎn)生了多項(xiàng)研究成果。
時(shí)間序列的異常檢測(cè)[1]是檢測(cè)與時(shí)間序列中其他絕大多數(shù)模式不同的數(shù)據(jù)模式。目前,關(guān)于時(shí)間序列的異常檢測(cè)方法主要分為三大類:第一類是基于規(guī)則的檢測(cè)方法,如固定閾值、動(dòng)態(tài)閾值等;第二類基于統(tǒng)計(jì)學(xué)[2]的檢測(cè)方法,如3Sigma、移動(dòng)加權(quán)平均法、ARIMA[3]等;第三類是基于機(jī)器學(xué)習(xí)的檢測(cè)方法,如聚類、AutoEncoder[4]、RF[5]等。本文在對(duì)時(shí)間序列進(jìn)行異常檢測(cè)時(shí),根據(jù)時(shí)間序列的特征選取不同的方法進(jìn)行異常檢測(cè)。
相關(guān)性分析[6]常用來研究不同對(duì)象屬性之間的相互關(guān)系,反映時(shí)間序列在某段時(shí)間內(nèi)個(gè)數(shù)據(jù)點(diǎn)呈相同或相似波動(dòng)情況的相關(guān)程度,相關(guān)方法主要包括相關(guān)系數(shù)、協(xié)方差[7]、最大互信息數(shù)[8]、DTW[9]和基于數(shù)據(jù)降維的相似性度量等。時(shí)間序列的相關(guān)性分析主要可以概括成三個(gè)問題:序列間是否相關(guān)?序列的波動(dòng)是否經(jīng)常一起出現(xiàn)?如果波動(dòng)經(jīng)常一起出現(xiàn),波動(dòng)之間是否存在關(guān)聯(lián)性?例如在運(yùn)維領(lǐng)域[10],當(dāng)服務(wù)發(fā)生故障時(shí),與故障原因相關(guān)的許多監(jiān)控指標(biāo)也會(huì)出現(xiàn)異常的波動(dòng),這種相關(guān)性分析可以幫助運(yùn)維人員進(jìn)行故障排查。本項(xiàng)研究已經(jīng)被用于數(shù)據(jù)中心智能運(yùn)維項(xiàng)目中,用于實(shí)現(xiàn)業(yè)務(wù)指標(biāo)異常時(shí)對(duì)基礎(chǔ)架構(gòu)指標(biāo)的關(guān)聯(lián)分析及故障定位。
1 ?相關(guān)理論基礎(chǔ)
1.1 ?Spearman相關(guān)系數(shù)
在統(tǒng)計(jì)學(xué)中,斯皮爾曼(Spearman)等級(jí)相關(guān)系數(shù)[11]用來估計(jì)變量X、Y之間的相關(guān)性,變量之間的相關(guān)性可以用單調(diào)函數(shù)來描述,其計(jì)算公式為:
其中,N為數(shù)據(jù)個(gè)數(shù),d為兩個(gè)變量分別排序后成對(duì)的變量位置差,與兩個(gè)相關(guān)變量的具體值無關(guān),僅與其值之間的大小關(guān)系有關(guān),適用于不同數(shù)量級(jí)時(shí)間序列間的相關(guān)性分析。
1.2 ?最大互信息系數(shù)
互信息[12]是用來評(píng)價(jià)一個(gè)事件的出現(xiàn)對(duì)于另一個(gè)事件的出現(xiàn)所貢獻(xiàn)的信息量,計(jì)算公式如下:
其中,p(X,Y)為兩個(gè)變量之間的聯(lián)合概率,最大互信息系數(shù)(MIC)的想法是針對(duì)兩個(gè)變量之間的關(guān)系,將其以散點(diǎn)的形式離散在二維空間中,查看散點(diǎn)在各區(qū)間的分布計(jì)算出聯(lián)合概率,解決互信息中難求聯(lián)合概率的問題。MIC系數(shù)不限定于特定的函數(shù)類型,能夠捕捉變量間各種各樣線性或非線性的關(guān)聯(lián)。
1.3 ?動(dòng)態(tài)時(shí)間規(guī)整算法
動(dòng)態(tài)時(shí)間規(guī)整算法(DTW)基于動(dòng)態(tài)規(guī)劃[13]的思想,可以衡量?jī)蓚€(gè)長度不一致的時(shí)間序列的相似度。假設(shè)有兩個(gè)時(shí)間序列Q和C,長度分別為n和m,那么DTW算法計(jì)算過程如下:
(1)構(gòu)建大小為n×m的矩陣D,矩陣元素d(i,j)=dist(qi,cj)為Q與C對(duì)應(yīng)元素間的歐幾里得距離;
(2)在矩陣D中搜索從d(1,1)到d(n,m)的最短路徑作為Q和C的相似度,最短路徑的搜索不是任意的,需滿足以下三個(gè)約束條件:?jiǎn)握{(diào)性,任何一個(gè)時(shí)間序列的先后順序不能改變,所以所選的路徑必須是隨著時(shí)間單調(diào)進(jìn)行的;連續(xù)性,路徑必須是連續(xù)的,即搜索時(shí)不能跨過某個(gè)點(diǎn)去匹配,只能和自己相鄰的點(diǎn)對(duì)齊,保證兩個(gè)序列里的所有點(diǎn)都被匹配到;邊界條件確定性,兩個(gè)時(shí)間序列的發(fā)生有前有后,且其各部分的先后次序不可能改變,因此所選的路徑必定是從左下角d(1,1)出發(fā),往右上角d(n,m)結(jié)束。
實(shí)際場(chǎng)景下的相關(guān)時(shí)間序列間通常存在一定的相位差,DTW系數(shù)能夠衡量由于時(shí)間錯(cuò)位或長度不等的時(shí)間序列間的相似性。
1.4 ?異常度
異常度是指時(shí)間序列中異常點(diǎn)的異常程度,每一個(gè)時(shí)間序列經(jīng)過異常檢測(cè)后都存在與之對(duì)應(yīng)的異常度曲線,如圖1所示。
因此時(shí)間序列的相關(guān)性分析可以從原始序列和異常度序列兩個(gè)維度進(jìn)行,通過分析原始序列得到序列間的統(tǒng)計(jì)相關(guān)性,通過異常度序列可以得到序列間的波動(dòng)關(guān)聯(lián)。
2 ?相關(guān)性分析
假設(shè)有兩個(gè)時(shí)間序列Q和C,對(duì)Q和C分別進(jìn)行異常檢測(cè)得到各自的異常度曲線Q1和C1,那么Q和C的相關(guān)得分如下:
score=w1(coe(Q,C))+(1-w1)(coe(Q1,C1))
其中,w1為權(quán)重參數(shù),coe(Q,C)通過Spearman相關(guān)系數(shù)、MIC系數(shù)和DTW距離綜合評(píng)定。
算法總流程如圖2所示,對(duì)于待分析的時(shí)間序列,首先需對(duì)原始序列進(jìn)行異常檢測(cè),得到對(duì)應(yīng)的原始值序列和異常度序列,然后利用本文提出的相關(guān)性評(píng)分機(jī)制,融合Spearman相關(guān)系數(shù)、MIC系數(shù)和DTW系數(shù)進(jìn)行相關(guān)性評(píng)分,分別計(jì)算出原始序列間和異常度序列間的相關(guān)性,最后通過加權(quán)平均得到總的相關(guān)性得分。
3 ?實(shí)驗(yàn)過程
3.1 ?實(shí)例分析
實(shí)驗(yàn)首先選取了某一交易系統(tǒng)2020年6月4日13:00 —18:02的監(jiān)控?cái)?shù)據(jù),包括交易量、不同服務(wù)器下的響應(yīng)時(shí)間、CPU占用率等6個(gè)指標(biāo)。在該時(shí)間段內(nèi)此交易系統(tǒng)發(fā)生了多次故障。
圖3為6個(gè)指標(biāo)在該時(shí)間段的時(shí)序圖,通過分析性能指標(biāo)K2~K6與業(yè)務(wù)交易量指標(biāo)K1間的相關(guān)性定位故障根因。其中K1是交易量,K2是通道端的響應(yīng)時(shí)間,K3為支付端的響應(yīng)時(shí)間,K4為支付端的CPU占用率,K5為通道端的CPU占用率,K6為支付端的成功率。
我們首先需要對(duì)這6個(gè)指標(biāo)進(jìn)行異常檢測(cè),獲取異常度曲線,如圖4所示。
以K1為主要分析指標(biāo),分析K2~K6與K1的相關(guān)性,分別計(jì)算Spearman相關(guān)系數(shù)、MIC系數(shù)和DTW系數(shù),結(jié)果如表1所示。
其中,S1、M1、D1表示原始序列的Spearman相關(guān)系數(shù)、MIC系數(shù)和DTW系數(shù),S2、M2、D2表示異常度序列的Spearman相關(guān)系數(shù)、MIC系數(shù)和DTW系數(shù),R表示本文算法的相關(guān)性評(píng)分結(jié)果,以上系數(shù)及本文算法的結(jié)果均表示相關(guān)性大小,在0~1之間,值越大,相關(guān)性越高。
從表1中可以看出,原始序列曲線特征各異(例如不同的周期性、平穩(wěn)性、趨勢(shì)等),相關(guān)性分析會(huì)受到不同序列數(shù)據(jù)特征的干擾,而本文通過對(duì)原始序列進(jìn)行異常檢測(cè),得到的異常度曲線更能反映不同序列間的相似波動(dòng)。另外,Spearman相關(guān)系數(shù)、MIC系數(shù)和DTW系數(shù)均有其獨(dú)特的適用場(chǎng)景及優(yōu)勢(shì),因此本文對(duì)這幾種相關(guān)系數(shù)進(jìn)行了融合,從多個(gè)角度挖掘出序列間的相關(guān)信息,提供實(shí)用價(jià)值。具體來看,與指標(biāo)K1相關(guān)的Spearman相關(guān)系數(shù)和MIC系數(shù)排名為K3、K5、K4、K6、K2,曲線越平穩(wěn),相關(guān)系數(shù)越高,因此這兩種系數(shù)需要基于時(shí)間序列平穩(wěn)的假設(shè);與指標(biāo)K1相關(guān)的DTW系數(shù)排名為K5、K6、K2、K3、K4,DTW系數(shù)對(duì)于時(shí)間序列滯前或滯后的容忍度高,但無法識(shí)別正負(fù)相關(guān)性。本文方法相關(guān)性評(píng)分排名為K5、K2、K3、K4、K6,經(jīng)驗(yàn)證,K5為通道端服務(wù)器下的CPU指標(biāo),K2為通道端的響應(yīng)時(shí)間,K3為支付端的響應(yīng)時(shí)間,與真實(shí)故障的根因和傳播方向一致,驗(yàn)證了本文方法的有效性。
3.2 ?數(shù)據(jù)集驗(yàn)證
實(shí)驗(yàn)數(shù)據(jù)集選取了某微服務(wù)應(yīng)用系統(tǒng)下半年的真實(shí)監(jiān)控?cái)?shù)據(jù),包括1個(gè)業(yè)務(wù)訪問量指標(biāo)和4臺(tái)服務(wù)器下的10個(gè)性能指標(biāo)(CPU、MEM、IO、SWaP、響應(yīng)時(shí)間等),共發(fā)生了30次故障,每次故障均由服務(wù)器下的性能指標(biāo)導(dǎo)致,根因指標(biāo)由人工標(biāo)注給出。本文通過對(duì)每次故障時(shí)間段的訪問量指標(biāo)和40個(gè)性能指標(biāo)進(jìn)行相關(guān)性分析來定位根因指標(biāo)。為了驗(yàn)證本文方法的準(zhǔn)確性,我們計(jì)算根因定位成功數(shù)量和成功率,公式如下:
success_num=sum(root in top3)
success_rate=
其中,root為人工標(biāo)注的根因指標(biāo),top3為進(jìn)行相關(guān)性分析后與訪問量指標(biāo)相關(guān)性最高的3個(gè)指標(biāo),success_num表示成功定位的數(shù)量,即滿足top3分析結(jié)果中存在人工標(biāo)注的根因,即為成功定位,success_rate為成功率,total_num=30。并與傳統(tǒng)的Pearson系數(shù)、格蘭杰因果關(guān)系檢驗(yàn)等方法進(jìn)行對(duì)比,對(duì)比結(jié)果如表2所示。
從表中可以看出,Pearson系數(shù)由于只能衡量時(shí)間序列間的線性相關(guān)性,成功率遠(yuǎn)低于其他方法;Spearman相關(guān)系數(shù)、MIC系數(shù)和格蘭杰因果關(guān)系檢驗(yàn)相較于Pearson系數(shù)相對(duì)可靠,但受時(shí)間序列平穩(wěn)性的影響較大;DTW由于識(shí)別正負(fù)相關(guān)性能力較弱,成功率也較低;本文算法融合了幾種有效的分析手段,成功率最高,算法開放了不同分析方法的權(quán)重參數(shù),能夠靈活地應(yīng)對(duì)不同的分析場(chǎng)景。
4 ?應(yīng)用案例
上海鐵路局在數(shù)據(jù)中心智能運(yùn)維項(xiàng)目中,對(duì)業(yè)務(wù)應(yīng)用的性能指標(biāo)——訪問量、訪問延時(shí)及訪問成功率進(jìn)行異常檢測(cè),在發(fā)現(xiàn)異常后采用本文的研究成果對(duì)上述指標(biāo)和對(duì)應(yīng)業(yè)務(wù)系統(tǒng)基礎(chǔ)架構(gòu)(如服務(wù)器)的性能指標(biāo)進(jìn)行關(guān)聯(lián)波動(dòng)相關(guān)性分析,從而發(fā)現(xiàn)和應(yīng)用性能指標(biāo)最相關(guān)的基礎(chǔ)架構(gòu)性能指標(biāo),實(shí)現(xiàn)快速的根因定位。
5 ?結(jié) ?論
本文通過對(duì)時(shí)間序列進(jìn)行異常檢測(cè)提取波動(dòng)特征,融合Spearman和MIC相關(guān)系數(shù)分析序列間的線性或非線性關(guān)系,同時(shí)利用DTW算法分析序列間的波動(dòng)關(guān)系。經(jīng)過實(shí)驗(yàn)證明,該方法能從多個(gè)角度挖掘出序列間的相關(guān)信息,精準(zhǔn)地發(fā)現(xiàn)故障根因,提供實(shí)用價(jià)值。
參考文獻(xiàn):
[1] 閆偉,張軍.基于時(shí)間序列分析的網(wǎng)絡(luò)流量異常檢測(cè) [J].吉林大學(xué)學(xué)報(bào)(理學(xué)版),2017,55(5):1249-1254.
[2] 曹晨曦,田友琳,張昱堃,等.基于統(tǒng)計(jì)方法的異常點(diǎn)檢測(cè)在時(shí)間序列數(shù)據(jù)上的應(yīng)用 [J].合肥工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2018,41(9):1284-1288.
[3] 陳小玲.基于ARIMA模型與神經(jīng)網(wǎng)絡(luò)模型的股價(jià)預(yù)測(cè) [J].經(jīng)濟(jì)數(shù)學(xué),2017,34(4):30-34.
[4] LI Z Y,CHEN W X,PEI D. Robust and Unsupervised KPI Anomaly Detection Based on Conditional Variational Autoencoder [C]//2018 IEEE 37th International Performance Computing and Communications Conference (IPCCC). IEEE,2018.
[5] 張西寧,張?chǎng)?,周融通,?采用單類隨機(jī)森林的異常檢測(cè)方法及應(yīng)用 [J].西安交通大學(xué)學(xué)報(bào),2020,54(2):1-8+ 157.
[6] 丁小歐,于晟健,王沐賢,等.基于相關(guān)性分析的工業(yè)時(shí)序數(shù)據(jù)異常檢測(cè) [J].軟件學(xué)報(bào),2020,31(3):726-747.
[7] 王特.均值未知的單變量時(shí)間序列自協(xié)方差函數(shù)的無偏估計(jì)及其應(yīng)用 [D].濟(jì)南:山東大學(xué),2018.
[8] 張春濤,劉學(xué)飛,向瑞銀,等.基于最大互信息的混沌時(shí)間序列多步預(yù)測(cè) [J].控制與決策,2012,27(6):941-944.
[9] ZUO L L,YAN L. A Weighted DTW Approach for Similarity Matching over Uncertain Time Series [J]. Journal of computing and information technology,2018,26(3):179-190.
[10] 宋旭翃,逄鈺.網(wǎng)絡(luò)運(yùn)維數(shù)據(jù)的異常檢測(cè) [J].有線電視技術(shù),2018(2):92-94.
[11] 徐唐先.關(guān)于等級(jí)相關(guān)中斯皮爾曼公式的性質(zhì)問題 [J].統(tǒng)計(jì)與決策,1995(11):22-23.
[12] 趙鴻,柴路,王浩,等.互信息在時(shí)間序列分析中的應(yīng)用 [J].應(yīng)用科學(xué)學(xué)報(bào),1996(1):48-52.
[13] KIM S,PARK S,CHU W W. An Index-Based Approach for Similarity Search Supporting Time Warping in Large Sequence Databases [C]//Proceedings of the 17th International Conference on Data Engineering,Washington,DC:IEEE Computer Society,2001:607-614.
[14] 蔣華,張紅福,羅一迪,等.基于KL距離的自適應(yīng)閾值網(wǎng)絡(luò)流量異常檢測(cè) [J].計(jì)算機(jī)工程,2019,45(4):108-113+ 118.
作者簡(jiǎn)介:陳剛(1976.11—),男,漢族,安徽阜陽人,科長,高級(jí)工程師,工程碩士,研究方向:大數(shù)據(jù)運(yùn)維。