王智遠(yuǎn),陳 榕,任崇廣
(山東理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山東 淄博 255000)
云計(jì)算與大數(shù)據(jù)技術(shù)為分布式計(jì)算提供了一種解決方案。對(duì)于大型的分布式系統(tǒng),出現(xiàn)異常或請(qǐng)求超時(shí)可能帶來(lái)巨大的損失,而由于系統(tǒng)規(guī)模較大,復(fù)雜度較高,給系統(tǒng)維護(hù)人員帶來(lái)了巨大挑戰(zhàn)。監(jiān)測(cè)告警對(duì)于保證云平臺(tái)的高效性與可用性至關(guān)重要,如何全面、精準(zhǔn)地定位異常點(diǎn)越來(lái)越受到工業(yè)界與學(xué)術(shù)界的關(guān)注。
異常點(diǎn)檢測(cè)是找出被檢測(cè)樣本中行為很不同于預(yù)期值的樣本,這些樣本叫異常點(diǎn)或離群點(diǎn)。常見(jiàn)的離群點(diǎn)檢測(cè)算法包括基于機(jī)器學(xué)習(xí)的檢測(cè)模型、基于統(tǒng)計(jì)的檢測(cè)模型、基于線(xiàn)性或非線(xiàn)性的檢測(cè)模型、基于距離的檢測(cè)模型等[1]?;诮y(tǒng)計(jì)的檢測(cè)模型將違背正常數(shù)據(jù)分布的樣本判為異常點(diǎn);基于距離的檢測(cè)模型將遠(yuǎn)離其它對(duì)象的樣本判為異常點(diǎn)[2-4];基于線(xiàn)性與非線(xiàn)性的檢測(cè)模型將違背數(shù)據(jù)相關(guān)性的樣本判為異常點(diǎn)[5,6];基于機(jī)器學(xué)習(xí)的檢測(cè)模型將不在超平面內(nèi)的樣本判為異常點(diǎn)[7,8]。
傳統(tǒng)基于閾值的異常點(diǎn)檢測(cè)方法存在適用場(chǎng)景單一、誤報(bào)率或漏報(bào)率高等問(wèn)題,本文提出了一種基于集成學(xué)習(xí)的異常點(diǎn)檢測(cè)系統(tǒng),對(duì)于異常點(diǎn)檢測(cè)有一定的通用性與有效性。通過(guò)監(jiān)測(cè)相似序列的聚類(lèi)、監(jiān)測(cè)序列的預(yù)處理、監(jiān)測(cè)序列特征化、異常點(diǎn)檢測(cè)器構(gòu)建、結(jié)果評(píng)估幾個(gè)流程對(duì)工業(yè)界帶有標(biāo)注的監(jiān)測(cè)序列進(jìn)行異常點(diǎn)檢測(cè),實(shí)驗(yàn)結(jié)果表明,基于集成學(xué)習(xí)的異常點(diǎn)檢測(cè)系統(tǒng)效果優(yōu)于單一檢測(cè)系統(tǒng)。
集成學(xué)習(xí),有時(shí)也被稱(chēng)為多分類(lèi)器系統(tǒng),通過(guò)構(gòu)建并結(jié)合多個(gè)弱檢測(cè)器來(lái)完成檢測(cè)任務(wù)。集成學(xué)習(xí)先產(chǎn)生一組弱檢測(cè)器,再按某種策略將它們結(jié)合,常可獲得比弱檢測(cè)器顯著優(yōu)越的泛化性能。集成學(xué)習(xí)方法大致可分為兩大類(lèi):第一Boosting,該方法弱檢測(cè)器間存在強(qiáng)依賴(lài)關(guān)系,需串行生成;第二類(lèi)是Bagging,該方法弱檢測(cè)器間不存在強(qiáng)依賴(lài)關(guān)系,可并行生成[9]。
(1)
(2)
Xgboost對(duì)于式(2)利用泰勒公式進(jìn)行二階近似展開(kāi)得到式(3),求解后得到式(4),確定樹(shù)的結(jié)構(gòu)后可用式(4) 求相應(yīng)的權(quán)重值
(3)
(4)
求樹(shù)的結(jié)構(gòu)時(shí)采用貪心算法,求在分裂前后使式(5)減小最大的特征為分裂節(jié)點(diǎn)
(5)
其中,ObjnoSplit代表按某個(gè)檢測(cè)特征分裂前的損失,ObjSplit代表按某個(gè)檢測(cè)特征分裂后的損失,GL,GR代表分裂后弱檢測(cè)器的左子樹(shù)與右子樹(shù)上被檢測(cè)樣本損失的一階導(dǎo)數(shù)和,HL,HR代表分裂后弱檢測(cè)器左子樹(shù)與右子樹(shù)相應(yīng)被檢測(cè)樣本損失的二階導(dǎo)數(shù)和,Tsplit,Tnosplit代表弱檢測(cè)器分裂前后葉節(jié)點(diǎn)的個(gè)數(shù),γ為常數(shù)項(xiàng)。
Bagging通過(guò)構(gòu)造多個(gè)相互獨(dú)立的弱檢測(cè)器來(lái)提高泛化能力,基本思想是從m個(gè)被檢測(cè)樣本中有放回地抽樣m個(gè)樣本得到一個(gè)訓(xùn)練集,采樣T次得到T個(gè)訓(xùn)練集,訓(xùn)練T個(gè)檢測(cè)器,基于一定的投票策略產(chǎn)生最終結(jié)果。本文使用了Bagging流派的隨機(jī)森林[11],對(duì)其基本原理進(jìn)行分析。
隨機(jī)森林是Bagging的一個(gè)變體,加入了隨機(jī)特征選擇的思想,傳統(tǒng)決策樹(shù)在分類(lèi)時(shí)采用式(6)衡量純度,在所有特征中選擇使式(7)增益最大的特征分裂。而隨機(jī)森林的每個(gè)弱檢測(cè)器隨機(jī)選取k個(gè)檢測(cè)特征進(jìn)行樹(shù)的構(gòu)建,最終結(jié)果由多個(gè)弱檢測(cè)器投票產(chǎn)生
(6)
其中,D代表被檢測(cè)樣本,Ck代表第k個(gè)類(lèi)別的樣本,K代表所有類(lèi)的總數(shù)
(7)
其中,A代表檢測(cè)特征,D1、D2代表按相應(yīng)檢測(cè)特征劃分后的樣本,Gini的計(jì)算方式為式(6)。
Stacking[12]從原始被檢測(cè)樣本集中訓(xùn)練第一級(jí)檢測(cè)器,由第一級(jí)檢測(cè)器生成新的被檢測(cè)樣本集用于訓(xùn)練第二級(jí)檢測(cè)器。在新的被檢測(cè)樣本集中,第一級(jí)檢測(cè)器的輸出作為第二級(jí)檢測(cè)器的輸入,第二級(jí)的標(biāo)注與第一級(jí)相同。檢測(cè)器構(gòu)建階段,直接將第一級(jí)檢測(cè)器的結(jié)果作為第二級(jí)檢測(cè)器的輸入容易過(guò)擬合,采用k折交叉驗(yàn)證生成第二級(jí)的檢測(cè)集。圖1顯示了一個(gè)檢測(cè)器生成訓(xùn)練集,測(cè)試集的過(guò)程,5折交叉驗(yàn)證,其中的一折與其它4折交替,訓(xùn)練預(yù)測(cè)5次后構(gòu)成了Model1的次級(jí)訓(xùn)練數(shù)據(jù),n個(gè)檢測(cè)器最終會(huì)構(gòu)造出m×n的訓(xùn)練集與p×n的預(yù)測(cè)集,其中m,p為原訓(xùn)練集,測(cè)試集的樣本個(gè)數(shù),利用次級(jí)訓(xùn)練測(cè)試數(shù)據(jù)進(jìn)行學(xué)習(xí)得到最終結(jié)果。
圖1 Stacking融合過(guò)程
監(jiān)測(cè)序列特征化是一個(gè)數(shù)據(jù)處理過(guò)程,通過(guò)各種運(yùn)算將原始監(jiān)測(cè)序列處理成異常點(diǎn)檢測(cè)器可直接訓(xùn)練的數(shù)據(jù),特征化是為了更好地捕捉異常值特征,提高檢測(cè)精度。與原始監(jiān)測(cè)序列相比,特征化的監(jiān)測(cè)序列檢測(cè)精度有顯著提高,特征化過(guò)程包括監(jiān)測(cè)序列預(yù)處理、監(jiān)測(cè)序列特征化、監(jiān)測(cè)序列特征選擇。不同監(jiān)測(cè)序列表現(xiàn)出不同的特性,直接使用原始監(jiān)測(cè)序列構(gòu)造檢測(cè)器會(huì)造成誤報(bào),需要將相同特性的監(jiān)測(cè)序列歸為一類(lèi),同一類(lèi)序列統(tǒng)一訓(xùn)練檢測(cè)。原始的監(jiān)測(cè)序列值不能很好捕獲序列的特性,需要從多個(gè)方面構(gòu)建特征減少誤報(bào)漏報(bào),更好捕獲異常特性。現(xiàn)實(shí)場(chǎng)景中異常極少發(fā)生,導(dǎo)致標(biāo)注為異常的樣本遠(yuǎn)少于標(biāo)注為正常的樣本,使用不平衡數(shù)據(jù)訓(xùn)練的檢測(cè)器將導(dǎo)致檢測(cè)器向正常類(lèi)傾斜,不平衡樣本的過(guò)采樣可以在一定程度上解決正常樣本遠(yuǎn)大于異常樣本的問(wèn)題。將原始監(jiān)測(cè)序列轉(zhuǎn)換成監(jiān)測(cè)序列特征后,需要對(duì)監(jiān)測(cè)特征進(jìn)行特征篩選,使用發(fā)揮作用較大的監(jiān)測(cè)特征可提高訓(xùn)練速度與檢測(cè)速度。對(duì)篩選后的監(jiān)測(cè)特征進(jìn)行主成分分析,消除特征之間的線(xiàn)性關(guān)系。
不同特性的監(jiān)測(cè)序列異常表現(xiàn)方式不一樣,直接使用原始監(jiān)測(cè)序列構(gòu)造統(tǒng)一的檢測(cè)器不能適用于所有場(chǎng)景,因此需要將相同特性的監(jiān)測(cè)序列歸為一類(lèi),同一類(lèi)序列統(tǒng)一訓(xùn)練檢測(cè)。
監(jiān)測(cè)序列X=[x1,x2…xn] 與監(jiān)測(cè)序列Y=[y1,y2,…,yn] 之間的相似度定義為式(8),m條監(jiān)測(cè)序列的相似度矩陣定義為式(10),將相似度矩陣作為監(jiān)測(cè)序列聚類(lèi)的輸入
(8)
其中,X,Y代表監(jiān)測(cè)序列,φi(X) 的定義為式(9),Cov代表協(xié)方差,Var代表方差,n代表監(jiān)測(cè)序列的長(zhǎng)度,i∈[-n+1,n+1]
(9)
其中,Xn代表監(jiān)測(cè)序列的值
(10)
其中,Cij代表第i個(gè)監(jiān)測(cè)序列與第j個(gè)監(jiān)測(cè)序列的相似度。
自組織映射(self-organizing maps)算法是一種無(wú)導(dǎo)師的聚類(lèi)方法,可以將多維度的監(jiān)測(cè)序列映射成二維離散變量。SOM網(wǎng)絡(luò)在樣本聚類(lèi)、樣本的組合優(yōu)化等問(wèn)題上有著廣泛的應(yīng)用,具有優(yōu)良的自組織、自適應(yīng)等特性。SOM網(wǎng)絡(luò)沒(méi)有中間層,只有監(jiān)測(cè)序列輸入層與輸出層,網(wǎng)絡(luò)將監(jiān)測(cè)序列類(lèi)別映射到輸出層的某個(gè)神經(jīng)元。在訓(xùn)練階段,各神經(jīng)元競(jìng)爭(zhēng)學(xué)習(xí),每個(gè)監(jiān)測(cè)序列通過(guò)計(jì)算到神經(jīng)元之間的距離得到激活結(jié)點(diǎn)。計(jì)算出激活結(jié)點(diǎn)后,對(duì)相關(guān)結(jié)點(diǎn)的參數(shù)迭代更新;在測(cè)試階段,計(jì)算待分類(lèi)的監(jiān)測(cè)序列與各神經(jīng)元之間的距離,距離最小的神經(jīng)元為該測(cè)試序列的類(lèi)別。
監(jiān)測(cè)序列相似度矩陣的每行Ci=[Ci1,Ci2…Cin](i=1,2…n) 代表SOM網(wǎng)絡(luò)的一個(gè)待訓(xùn)練監(jiān)測(cè)序列,Wj=[Wi1,Wi2…Win](j=1,2…l,l為輸出層神經(jīng)元的總量)代表輸出層神經(jīng)元的權(quán)重向量,通過(guò)式(11)計(jì)算出與待訓(xùn)練監(jiān)測(cè)序列最匹配的神經(jīng)元k。計(jì)算出最匹配的神經(jīng)元k后,通過(guò)式(12)找到獲勝神經(jīng)元的鄰域半徑,用式(13)對(duì)最匹配的神經(jīng)元及其鄰域內(nèi)的神經(jīng)元進(jìn)行權(quán)值更新。對(duì)上述操作進(jìn)行多次迭代,直到映射關(guān)系不在發(fā)生顯著變化
(11)
其中,k代表最匹配神經(jīng)元的編號(hào),Wj表示與第j個(gè)神經(jīng)元相關(guān)的權(quán)值系數(shù) (j=1,2…l,l代表輸出層的總量),Ci代表式(10)的一行
(12)
式中:neighbor_redius代表鄰域半徑,neighbor0代表鄰域的初始值,neighbor_para代表鄰域參數(shù),t代表網(wǎng)絡(luò)迭代更新的次數(shù)
(13)
式中:wk(t) 代表最匹配的神經(jīng)元節(jié)點(diǎn)更新后的權(quán)值,wk(t-1) 代表最匹配神經(jīng)元節(jié)點(diǎn)上次一更新的權(quán)值系數(shù),Ci代表式(10)中的一行,ηt代表學(xué)習(xí)速率,式(14)為ηt的計(jì)算公式,式(11)為dk的計(jì)算公式,式(15)為σt的計(jì)算公式
(14)
其中,learn0為初始的學(xué)習(xí)速率,learn_para為學(xué)習(xí)速率參數(shù),t代表迭代次數(shù)
(15)
其中,σ0代表鄰域函數(shù)的初始值,neighbor_para代表鄰域參數(shù),t代表網(wǎng)絡(luò)迭代更新的次數(shù)。
與K-Means相比,監(jiān)測(cè)序列采用SOM神經(jīng)網(wǎng)絡(luò)進(jìn)行聚類(lèi)有以下優(yōu)點(diǎn):①在聚類(lèi)之前,K-Means方法需要確定監(jiān)測(cè)序列的類(lèi)別總量(K值),而監(jiān)測(cè)序列的類(lèi)別總量與SOM神經(jīng)網(wǎng)絡(luò)輸出層神經(jīng)元個(gè)數(shù)是多對(duì)多的關(guān)系,無(wú)需指定該值,因此K值對(duì)K-Means方法影響較大;②監(jiān)測(cè)序列使用K-Means聚類(lèi)后,只對(duì)相應(yīng)簇的中心迭代更新,而SOM神經(jīng)網(wǎng)絡(luò)聚類(lèi)會(huì)迭代更新最匹配神經(jīng)元及鄰域神經(jīng)元的權(quán)重系數(shù),因此,SOM神經(jīng)網(wǎng)絡(luò)聚類(lèi)相對(duì)于K-Means聚類(lèi)不易受噪聲點(diǎn)的影響,抗干擾性更強(qiáng);③SOM神經(jīng)網(wǎng)絡(luò)輸出層的拓?fù)潢P(guān)系較明確,可視化較好。
監(jiān)測(cè)數(shù)據(jù)在采集的過(guò)程中不可避免的會(huì)出現(xiàn)漏采的現(xiàn)象,因此需要對(duì)數(shù)據(jù)的缺失值進(jìn)行填充。本文利用牛頓插值法進(jìn)行缺失數(shù)據(jù)處理,先求出f(x)的各階差商,再利用式(16)進(jìn)行缺失值填充。
對(duì)于異常檢測(cè),監(jiān)測(cè)序列的標(biāo)注大部分是正常的,只有少量序列的標(biāo)注為異常。在檢測(cè)器構(gòu)建階段,如果標(biāo)注為異常的監(jiān)測(cè)序列較少,檢測(cè)器從異常類(lèi)學(xué)習(xí)到的信息就少,很難檢測(cè)異常類(lèi)。直接使用原始數(shù)據(jù)建模會(huì)導(dǎo)致模型偏向于正常一類(lèi),導(dǎo)致異常點(diǎn)的漏報(bào)與誤報(bào)。本文對(duì)監(jiān)測(cè)序列進(jìn)行SMOTE過(guò)采樣操作,采樣之后正常監(jiān)測(cè)序列的數(shù)量:異常監(jiān)測(cè)序列的數(shù)量≈1∶1。
由于異常對(duì)象多種多樣,直接使用原始值檢測(cè)器的效果較差,需要考慮監(jiān)測(cè)序列的數(shù)據(jù)結(jié)構(gòu)與一些隱含特性,從多方面對(duì)原始序列進(jìn)行特征轉(zhuǎn)換。本文參考Opprentice框架[13]和動(dòng)態(tài)數(shù)列提取特征的方法,對(duì)原始監(jiān)測(cè)序列進(jìn)行統(tǒng)計(jì)特征轉(zhuǎn)換、擬合特征轉(zhuǎn)換、分解特征轉(zhuǎn)換
f(x)=f(x0)+f[x0,x1](x-x0)+
f[x0,x1,x2](x-x0)(x-x1)+…+
f[x0,x1,…,xn-2,xn-1](x-x0)(x-x1)…
(x-xn-2)(x-xn-1)+f[x0,x1,…,xn-1,xn]
(x-x0)(x-x1)…(x-xn-1)(x-xn)
(16)
監(jiān)測(cè)序列是在時(shí)間維度上呈現(xiàn)一定規(guī)律性的動(dòng)態(tài)序列,對(duì)原始監(jiān)測(cè)序列進(jìn)行統(tǒng)計(jì)特征轉(zhuǎn)換、擬合特征轉(zhuǎn)換、分解特征轉(zhuǎn)換,具體的特征見(jiàn)表1。
表1 特征
監(jiān)測(cè)序列的統(tǒng)計(jì)特征對(duì)業(yè)務(wù)人員關(guān)注的指標(biāo)進(jìn)行統(tǒng)計(jì)方面的刻畫(huà)。如果監(jiān)測(cè)的業(yè)務(wù)指標(biāo)出現(xiàn)非常大或非常小的反常變化,該業(yè)務(wù)指標(biāo)在反常值的時(shí)間點(diǎn)可能出現(xiàn)了異常。業(yè)務(wù)指標(biāo)的z-score值代表監(jiān)測(cè)序列的每個(gè)點(diǎn)相對(duì)于整體基線(xiàn)的偏離程度,距離基線(xiàn)越遠(yuǎn)越有可能是異常,很多現(xiàn)實(shí)的業(yè)務(wù)一天一周期,因此計(jì)算整體基線(xiàn)時(shí)以天為單位。業(yè)務(wù)指標(biāo)的同比差分反映了現(xiàn)時(shí)刻與上一周期同時(shí)刻的差值情況,環(huán)比差分反映了現(xiàn)時(shí)刻與上一時(shí)刻的差值情況,同比差分或環(huán)比差分值越大,越有可能是異常。
監(jiān)測(cè)序列的分解特征將序列分解成周期序列、趨勢(shì)序列、隨機(jī)序列,如果分解后的序列存在非常大或非常小的反常變化,該業(yè)務(wù)指標(biāo)在反常值的時(shí)段可能出現(xiàn)了異常。在文件系統(tǒng)中,磁盤(pán)利用率是業(yè)務(wù)人員很關(guān)注的一個(gè)指標(biāo),將該指標(biāo)分解后可從趨勢(shì)序列分析使用情況,趨勢(shì)序列陡增或持續(xù)增加考慮異?;驍U(kuò)容,趨勢(shì)序列陡降或一直很低考慮異?;蚩s容;對(duì)于具有周期性的業(yè)務(wù)指標(biāo),分解后對(duì)周期序列進(jìn)行分析,如果某個(gè)周期序列相對(duì)于其它周期非常大或非常小,則該業(yè)務(wù)指標(biāo)在反常值的時(shí)間點(diǎn)可能出現(xiàn)了異常。每個(gè)業(yè)務(wù)指標(biāo)都有隨機(jī)成分,如果分解后的隨機(jī)序列存在非常大的波動(dòng),則該業(yè)務(wù)指標(biāo)在反常值的時(shí)間點(diǎn)可能出現(xiàn)了異常。小波分解對(duì)業(yè)務(wù)指標(biāo)進(jìn)行頻率方面的刻畫(huà),按天將監(jiān)測(cè)序列分解為高頻、中頻、低頻3個(gè)序列,高頻序列對(duì)監(jiān)測(cè)指標(biāo)短期內(nèi)的陡升或陡降類(lèi)異常識(shí)別較好,低頻序列對(duì)監(jiān)測(cè)指標(biāo)長(zhǎng)期內(nèi)的持續(xù)升高類(lèi)異常識(shí)別較好。
監(jiān)測(cè)序列的擬合特征綜合序列的趨勢(shì)性、周期性、歷史性對(duì)序列的期望值進(jìn)行預(yù)測(cè),真實(shí)值與期望值差別差值越大,相應(yīng)的指標(biāo)在異常值的時(shí)間點(diǎn)可能出現(xiàn)了異常。監(jiān)測(cè)序列是動(dòng)態(tài)數(shù)列,在時(shí)間維度上具有一定的規(guī)律性,預(yù)測(cè)點(diǎn)受相鄰點(diǎn)的變化規(guī)律影響較大,距離越遠(yuǎn)的點(diǎn)對(duì)預(yù)測(cè)的貢獻(xiàn)度越小。監(jiān)測(cè)序列的指數(shù)平滑預(yù)測(cè)法可以消除毛刺,通過(guò)平滑系數(shù)控制歷史值對(duì)當(dāng)前預(yù)測(cè)值的影響,對(duì)持續(xù)上升或持續(xù)下降類(lèi)的業(yè)務(wù)異常識(shí)別效果較好;監(jiān)測(cè)序列的移動(dòng)均值法將窗口內(nèi)的序列均值作為期望值,序列值與期望值差值越大越有可能是異常,移動(dòng)均值預(yù)測(cè)法可以消除序列的隨機(jī)噪聲;序列的三次指數(shù)平滑預(yù)測(cè)法綜合趨勢(shì)、周期、隨機(jī)因素對(duì)期望值做出預(yù)測(cè),距離預(yù)測(cè)點(diǎn)越遠(yuǎn)對(duì)預(yù)測(cè)點(diǎn)的影響越小,序列值與期望值差值越大越有可能是異常;ARIMA對(duì)原始序列進(jìn)行差分操作去除序列不平穩(wěn)因素,結(jié)合歷史值與歷史噪聲值對(duì)期望值進(jìn)行預(yù)測(cè),序列值與期望值差值越大越有可能是異常。
監(jiān)測(cè)序列特征化后,某些特征對(duì)于檢測(cè)的貢獻(xiàn)度較小或有冗余特征,為了降低時(shí)間復(fù)雜度進(jìn)行特征選擇與特征降維。序列標(biāo)注與特征之間的互信息描述了特征包含標(biāo)注的信息量,將互信息作為貢獻(xiàn)度,計(jì)算出貢獻(xiàn)度后本文選取貢獻(xiàn)較大的度前70%特征作為候選特征。檢測(cè)器進(jìn)行異常檢測(cè)時(shí)可能存在冗余特征,需要對(duì)候選特征進(jìn)行降維處理,采用PCA進(jìn)行主成分提取(主成分占比90%)。
圖2是基于集成學(xué)習(xí)的異常點(diǎn)檢測(cè)算法的基本框架,檢測(cè)流程包括離線(xiàn)訓(xùn)練檢測(cè)器、在線(xiàn)使用檢測(cè)器、檢測(cè)器迭代更新。離線(xiàn)訓(xùn)練階段,將具有相同特性的監(jiān)測(cè)序列歸為一類(lèi)形成該類(lèi)的訓(xùn)練集,利用訓(xùn)練集訓(xùn)練出該類(lèi)的最優(yōu)檢測(cè)器。在線(xiàn)檢測(cè)階段,根據(jù)訓(xùn)練好的網(wǎng)絡(luò)識(shí)別出待測(cè)試監(jiān)測(cè)序列的所屬類(lèi)別,用相應(yīng)類(lèi)的檢測(cè)器進(jìn)行檢測(cè)。檢測(cè)器迭代更新階段,將檢測(cè)器檢測(cè)為異常但標(biāo)注為正常的監(jiān)測(cè)序列、檢測(cè)器檢測(cè)為正常但標(biāo)注為異常的監(jiān)測(cè)序列、新收集的監(jiān)測(cè)序列作為回注訓(xùn)練集,定期用回注訓(xùn)練集對(duì)檢測(cè)器迭代更新。離線(xiàn)檢測(cè)器構(gòu)建提供檢測(cè)器是正反饋,在線(xiàn)檢測(cè)器提供錯(cuò)檢、漏檢樣本是負(fù)反饋,檢測(cè)的整個(gè)流程是閉環(huán),隨著迭代輪數(shù)的增加,異常點(diǎn)檢測(cè)系統(tǒng)的準(zhǔn)度逐漸增加,抗干擾能力逐漸增強(qiáng),直至達(dá)到一定程度的收斂。
圖2 異常點(diǎn)檢測(cè)框架
對(duì)監(jiān)測(cè)序列進(jìn)行歸屬類(lèi)計(jì)算、預(yù)處理、特征化、篩選降維、樣本均衡后,形成離群點(diǎn)檢測(cè)器所需要的數(shù)據(jù)格式,每個(gè)簇采用相同的訓(xùn)練方式。對(duì)每個(gè)簇按8∶2劃分離線(xiàn)訓(xùn)練集與在線(xiàn)測(cè)試集,在離線(xiàn)訓(xùn)練集上進(jìn)行訓(xùn)練,在線(xiàn)測(cè)試集上進(jìn)行檢測(cè)。單檢測(cè)器的結(jié)構(gòu)為Xgboost檢測(cè)器、Random forest檢測(cè)器、Bagging檢測(cè)器(基學(xué)習(xí)器為L(zhǎng)ogistic回歸)、Bagging檢測(cè)器(基學(xué)習(xí)器為神經(jīng)網(wǎng)絡(luò)),使用網(wǎng)格搜索進(jìn)行參數(shù)調(diào)優(yōu)。
檢測(cè)器融合綜合考慮不同模型的優(yōu)缺點(diǎn),將它們的結(jié)果融合到一起對(duì)于檢測(cè)結(jié)果的提高有一定幫助。檢測(cè)器融合的優(yōu)點(diǎn)有:①減少因誤選單檢測(cè)器而導(dǎo)致泛化性能不佳的風(fēng)險(xiǎn);②降低陷入局部極小點(diǎn)的風(fēng)險(xiǎn);③可以擴(kuò)大假設(shè)空間,得到更好的近似。
本文考慮到Random forest檢測(cè)器是低方差的模型,Xgboost檢測(cè)器是低偏差的模型,利用Stacking方法將兩者融合,可能會(huì)在低方差與低偏差之間找到最優(yōu)解。設(shè)計(jì)了兩層Stacking模型,第一層包含3個(gè)低方差模型:Random forest檢測(cè)器、Bagging檢測(cè)器(基檢測(cè)器為邏輯回歸)和Bagging檢測(cè)器(基檢測(cè)器為神經(jīng)網(wǎng)絡(luò)),在生成監(jiān)測(cè)序列樣本時(shí)每個(gè)檢測(cè)器進(jìn)行5輪交叉驗(yàn)證;融合模型的第二層是Xgboost檢測(cè)器,第二層利用第一層生成的監(jiān)測(cè)樣本訓(xùn)練與預(yù)測(cè)。融合結(jié)構(gòu)如圖3所示。
圖3 檢測(cè)器融合
本文采用真實(shí)場(chǎng)景帶標(biāo)記的數(shù)據(jù)集(http://iops.ai/,數(shù)據(jù)量約300兆)進(jìn)行檢測(cè),異常樣本標(biāo)記為1,正常樣本標(biāo)記為0,共26個(gè)監(jiān)測(cè)指標(biāo)。聚類(lèi)后形成6類(lèi)序列,每類(lèi)序列分為離線(xiàn)檢測(cè)器訓(xùn)練數(shù)據(jù)和在線(xiàn)檢測(cè)器使用數(shù)據(jù)(隨機(jī)劃分),劃分比例為8∶2,離線(xiàn)檢測(cè)器訓(xùn)練數(shù)據(jù)分為訓(xùn)練集和模型選擇驗(yàn)證集(隨機(jī)劃分),劃分比列為7∶3。
實(shí)驗(yàn)環(huán)境為:英特爾i7 8700K(3.7GHz,六核心),金士頓內(nèi)存條(16 G)。
檢測(cè)器構(gòu)建階段采用ROC曲線(xiàn)對(duì)訓(xùn)練的結(jié)果評(píng)估,ROC曲線(xiàn)是反映敏感度和特異度連續(xù)變量的綜合指標(biāo),ROC曲線(xiàn)的橫坐標(biāo)為FPR(false positive rate),縱坐標(biāo)為T(mén)PR(true positive rate),計(jì)算方式為式(17)
(17)
其中,TP(true positive)為真陽(yáng)性,代表數(shù)據(jù)集的標(biāo)注為異常且檢測(cè)器檢測(cè)為異常的個(gè)數(shù);FP(false positive)為假陽(yáng)性,代表數(shù)據(jù)集的標(biāo)注為正常且檢測(cè)器檢測(cè)為異常的個(gè)數(shù);TN(true negative)為真負(fù)性,代表數(shù)據(jù)集的標(biāo)注為正常且檢測(cè)器檢測(cè)為正常的個(gè)數(shù);FN(false negative)為假負(fù)性,代表數(shù)據(jù)集的標(biāo)注為異常且檢測(cè)器檢測(cè)為正常的個(gè)數(shù)。
每個(gè)監(jiān)測(cè)序列的異常概率值可以作為檢測(cè)閾值,得到一組FPR和TPR,利用所有組繪制得到ROC曲線(xiàn)。計(jì)算ROC曲線(xiàn)與水平軸之間的面積可以得到AUC,AUC的范圍為[0,1],AUC≈1,說(shuō)明檢測(cè)器檢測(cè)結(jié)果接近完美,AUC在0.7-0.9之間,說(shuō)明檢測(cè)器檢測(cè)精度較高,AUC=0.5,說(shuō)明檢測(cè)器檢測(cè)效果很差。
訓(xùn)練后序列1在離線(xiàn)驗(yàn)證集上融合前后的ROC如圖4(其它的簇的AUC值波動(dòng)在[-0.02,0.03],融合后的檢測(cè)器AUC值均優(yōu)于單檢測(cè)器)所示。
圖4 融合檢測(cè)模型與單一檢測(cè)模型ROC曲線(xiàn)
利用在線(xiàn)測(cè)試數(shù)據(jù)評(píng)估各檢測(cè)器的效果,評(píng)估的標(biāo)準(zhǔn)為式(18)F1-score,表2為各檢測(cè)器的F1-score均值(在6類(lèi)監(jiān)測(cè)序列的測(cè)試結(jié)果上取了均值),表中效果最好的是融合檢測(cè)器,表明檢測(cè)器的融合對(duì)于檢測(cè)結(jié)果的提升有非常大的幫助
(18)
其中,precision為檢測(cè)的準(zhǔn)確率,recall為檢測(cè)的召回率。
表2 在線(xiàn)檢測(cè)結(jié)果
準(zhǔn)確率precision的計(jì)算方式如下
(19)
其中,TP(true positive)為真陽(yáng)性,代表數(shù)據(jù)集的標(biāo)注為異常且檢測(cè)器檢測(cè)為異常的個(gè)數(shù);FP(false positive)為假陽(yáng)性,代表數(shù)據(jù)集的標(biāo)注為正常且檢測(cè)器檢測(cè)為異常的個(gè)數(shù)。
召回率recall的計(jì)算方式如下
(20)
其中,F(xiàn)N(false negative)為假負(fù)性,代表數(shù)據(jù)集的標(biāo)注為異常且檢測(cè)器檢測(cè)為正常的個(gè)數(shù)。
本文設(shè)計(jì)了一個(gè)異常點(diǎn)檢測(cè)系統(tǒng),系統(tǒng)由檢測(cè)器的構(gòu)建、檢測(cè)器的使用、檢測(cè)器的迭代更新構(gòu)成。離線(xiàn)檢測(cè)器構(gòu)建提供檢測(cè)器是正反饋,在線(xiàn)檢測(cè)器提供錯(cuò)檢、漏檢樣本是負(fù)反饋,隨著迭代次數(shù)的增加,系統(tǒng)的精度會(huì)逐漸提高;異常點(diǎn)檢測(cè)系統(tǒng)的特征構(gòu)建階段可以增加與修改特征,擴(kuò)展性較好。對(duì)異構(gòu)的檢測(cè)器進(jìn)行基于委員會(huì)的學(xué)習(xí),提高了異常點(diǎn)檢測(cè)的精度與泛化性。實(shí)驗(yàn)中的隨機(jī)森林與Xgboost均可并行計(jì)算,對(duì)于工業(yè)界的大數(shù)據(jù)具有適用性。異常點(diǎn)檢測(cè)特征依賴(lài)于人的先驗(yàn)知識(shí),如何利用深度學(xué)習(xí)模型自動(dòng)學(xué)習(xí)特征是本文下一步的研究重點(diǎn)[14]。