仇 媛,常相茂*,仇 倩,彭 程,蘇善婷
(1.南京航空航天大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京211106; 2.河北工業(yè)大學(xué)人工智能與數(shù)據(jù)科學(xué)學(xué)院,天津300401)
(?通信作者電子郵箱xiangmaoch@nuaa.edu.cn)
隨著傳感器、監(jiān)視測(cè)量技術(shù)的廣泛應(yīng)用和網(wǎng)絡(luò)交易、安全監(jiān)控、電信管理等應(yīng)用的不斷發(fā)展,產(chǎn)生了大量高速實(shí)時(shí)數(shù)據(jù)的無界序列,稱為數(shù)據(jù)流。這些數(shù)據(jù)流中的數(shù)據(jù)被稱為流數(shù)據(jù)[1-2]。在對(duì)流數(shù)據(jù)的分析處理中,異常檢測(cè)一直是被廣大研究人員重點(diǎn)關(guān)注的領(lǐng)域,特別是工業(yè)設(shè)備的監(jiān)控、軍事項(xiàng)目管理或是網(wǎng)絡(luò)安全監(jiān)測(cè)等,如果異常沒有被及時(shí)發(fā)現(xiàn),更是可能會(huì)造成破壞性的后果[3]。現(xiàn)階段,流數(shù)據(jù)的大量增加也為數(shù)據(jù)的異常檢測(cè)提出了新的要求。
流數(shù)據(jù)通常數(shù)量巨大且生成迅速,因此要求針對(duì)它的異常檢測(cè)方法必須是實(shí)時(shí)的;其次,系統(tǒng)的統(tǒng)計(jì)數(shù)據(jù)可能會(huì)隨著時(shí)間的推移而發(fā)生變化,這種現(xiàn)象被稱為概念漂移[1]。傳統(tǒng)的利用正常數(shù)據(jù)訓(xùn)練完成的模型進(jìn)行異常檢測(cè)的方法不再適用,模型必須做到及時(shí)更新來保證模型的檢測(cè)有效。本文提出了一種基于長(zhǎng)短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)的異常檢測(cè)方法,通過LSTM網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)預(yù)測(cè)和異常識(shí)別,并利用滑動(dòng)窗口對(duì)預(yù)測(cè)差值進(jìn)行分布建模,為每個(gè)數(shù)據(jù)分配更加精準(zhǔn)的異常分?jǐn)?shù),從而實(shí)現(xiàn)更加精準(zhǔn)的異常檢測(cè)。
異常是與歷史模式不一致或偏離預(yù)期的一般比較罕見的事件,以至于懷疑它是由與正常數(shù)據(jù)不同的機(jī)制產(chǎn)生的,而異常值檢測(cè)就被定義為“發(fā)現(xiàn)”這些與其他觀察結(jié)果偏離的觀察結(jié)果。到目前為止,異常檢測(cè)的方法有很多。根據(jù)檢測(cè)類別的不同可以將異常檢測(cè)分為異常序列檢測(cè)、異常子序列檢測(cè)和單個(gè)異常點(diǎn)檢測(cè)[4],因?yàn)橄胍页隽鲾?shù)據(jù)中的異常點(diǎn),且為每個(gè)數(shù)據(jù)分配一個(gè)合理的異常分?jǐn)?shù)來展示它是異常的可能性,所以本文要實(shí)現(xiàn)的是單個(gè)異常點(diǎn)的檢測(cè)。此外,根據(jù)檢測(cè)方法的不同[5],異常檢測(cè)還可以分為基于統(tǒng)計(jì)的檢測(cè)方法[6-7]、基于距離的檢測(cè)方法[8-9]、基于密度的檢測(cè)方法[10-11]、基于聚類的檢測(cè)方法[12-13]、基于分類的檢測(cè)方法[14-15]等。這些方法各自有各自的優(yōu)勢(shì)和適用領(lǐng)域,但正如之前所說,絕大多數(shù)異常檢測(cè)算法適用于批量處理數(shù)據(jù),而由于流數(shù)據(jù)生成迅速、數(shù)量龐大和概念漂移的特點(diǎn),這些傳統(tǒng)的異常檢測(cè)方法不能直接應(yīng)用于流數(shù)據(jù)。
當(dāng)然,近幾年也提出了一些針對(duì)流數(shù)據(jù)的異常檢測(cè)方法。一些在線異常檢測(cè)方法,如大多數(shù)聚類算法、分布式分組匹配算法[16]、數(shù)據(jù)流多類學(xué)習(xí)算法[17]等,雖然可以滿足流數(shù)據(jù)異常檢測(cè)所需的實(shí)時(shí)性,但它們無法解決流數(shù)據(jù)的概念漂移問題。此外,Yu等[18]根據(jù)網(wǎng)絡(luò)流量模式變化的特點(diǎn)提出了針對(duì)于交通模式變化的異常檢測(cè)方法,該算法基于半監(jiān)督技術(shù),利用數(shù)據(jù)流模型訓(xùn)練檢測(cè)模型來進(jìn)行檢測(cè)。這屬于針對(duì)特定領(lǐng)域開發(fā)的基于模型的方法,需要明確的領(lǐng)域知識(shí),適用性不高,不易推廣??柭鼮V波技術(shù)也屬于特定領(lǐng)域的方法,因?yàn)樗枰鄳?yīng)領(lǐng)域的知識(shí)來調(diào)整參數(shù)并選擇對(duì)應(yīng)的殘差模型[19]。除此之外,還有一些輕量級(jí)的統(tǒng)計(jì)方法,比如指數(shù)平滑[20]、變換點(diǎn)檢測(cè)[21]等,但這些方法大都集中檢測(cè)空間異常,在具有時(shí)間依賴性的應(yīng)用中可用性不高,而針對(duì)時(shí)間序列建模的整合移動(dòng)平均自回歸模型(Autoregressive Integrated Moving Average model,ARIMA)[22]是用季節(jié)性來進(jìn)行時(shí)態(tài)數(shù)據(jù)建模,適合常規(guī)的每日或每周模式檢測(cè)數(shù)據(jù)中的異常,但如果數(shù)據(jù)沒有這種季節(jié)周期性就不再適用。
基于此,本文提出了一種基于LSTM網(wǎng)絡(luò)和滑動(dòng)窗口的異常檢測(cè)方法。LSTM是神經(jīng)網(wǎng)絡(luò)的一種,可以進(jìn)行數(shù)據(jù)預(yù)測(cè),相較于其他網(wǎng)絡(luò),LSTM可以快速學(xué)習(xí)數(shù)據(jù)的新特征,實(shí)時(shí)更新調(diào)整網(wǎng)絡(luò),保證模型的有效性,避免因流數(shù)據(jù)概念漂移問題導(dǎo)致的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)不準(zhǔn)確。此外,選取一個(gè)滑動(dòng)窗口,將窗口內(nèi)所有差值進(jìn)行分布建模來為每個(gè)數(shù)據(jù)分配異常分?jǐn)?shù),可以直觀地觀察每個(gè)數(shù)據(jù)是異常的可能性大小。
用xt表示t時(shí)刻模型接收到的實(shí)時(shí)數(shù)據(jù),xt可能是來自于傳感器網(wǎng)路的傳感器數(shù)據(jù)、各種服務(wù)器的CPU使用率、零售業(yè)交易數(shù)據(jù)、帶寬的測(cè)量值等,因此,模型的輸入為xt,xt+1,xt+2,…。
本文所要解決的問題就是如何檢測(cè)流數(shù)據(jù)中的異常數(shù)據(jù),以及如何使數(shù)據(jù)分析人員可以更加直觀地觀察出每個(gè)數(shù)據(jù)的異??赡苄?。為了定義該異??赡苄?,本方法為每一個(gè)輸入數(shù)據(jù)xt分配異常分?jǐn)?shù)ASt(ASt∈[0,1]),ASt越大,xt為異常數(shù)據(jù)的可能性就越大。為了標(biāo)記異常數(shù)據(jù),為每一個(gè)輸入數(shù)據(jù)xt分配異常屬性值at,將得到的異常分?jǐn)?shù)ASt跟閾值T比較:大于閾值則xt為異常數(shù)據(jù),at=1;否則,xt為正常數(shù)據(jù),at=0。at為xt是否為異常的判斷輸出,僅有0或1兩個(gè)取值。
LSTM是神經(jīng)網(wǎng)絡(luò)的一種,神經(jīng)網(wǎng)絡(luò)是一種通過自身相互連接的神經(jīng)元們來進(jìn)行函數(shù)近似,從而進(jìn)行機(jī)器學(xué)習(xí)或模式識(shí)別的自適應(yīng)系統(tǒng)。它可以通過輸入大量訓(xùn)練數(shù)據(jù)進(jìn)行多次迭代來調(diào)整自身參數(shù),得到一個(gè)學(xué)習(xí)到訓(xùn)練數(shù)據(jù)特征的模型。當(dāng)有新數(shù)據(jù)輸入該模型時(shí),模型便可根據(jù)參數(shù)計(jì)算相應(yīng)的輸出,完成分類或是預(yù)測(cè)任務(wù)。神經(jīng)網(wǎng)絡(luò)通常由輸入層、隱含層和輸出層組成,參數(shù)調(diào)整指的便是各個(gè)層之間神經(jīng)元的連接函數(shù)中參數(shù)的改變。
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),如循環(huán)神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN),隱含層只有一個(gè)狀態(tài),對(duì)短期的輸入十分敏感,存在梯度消失的問題,不適合處理長(zhǎng)序列數(shù)據(jù),特別是時(shí)間序列數(shù)據(jù)。LSTM網(wǎng)絡(luò)在隱含層中層加了一個(gè)狀態(tài)來存儲(chǔ)長(zhǎng)期狀態(tài),避免了RNN的梯度消失。因此,LSTM特別適合處理時(shí)間序列數(shù)據(jù),廣泛應(yīng)用于時(shí)間序列數(shù)據(jù)的預(yù)測(cè)和異常檢測(cè)[23]。
LSTM單元的邏輯架構(gòu)示意圖如圖1所示。當(dāng)t時(shí)刻的數(shù)據(jù)xt輸入LSTM時(shí),便與t-1時(shí)刻的長(zhǎng)期狀態(tài)c t-1和輸出h t-1一起作為輸入?yún)⑴c運(yùn)算,得到t時(shí)刻LSTM的輸出h t,h t經(jīng)過維度轉(zhuǎn)化后便為所求的t時(shí)刻的預(yù)測(cè)數(shù)據(jù)。
圖1 LSTM單元邏輯架構(gòu)示意圖Fig.1 Schematic diagramof LSTMunit logical architecture
LSTM的關(guān)鍵之處就在于控制長(zhǎng)期狀態(tài)c t,令網(wǎng)絡(luò)的每一個(gè)輸出都是長(zhǎng)期狀態(tài)參與運(yùn)算之后的結(jié)果,避免梯度消失問題。為此,LSTM設(shè)置了3個(gè)門:遺忘門、輸入門和輸出門。先是遺忘門,它用來控制LSTM是否以一定概率遺忘上一層隱藏細(xì)胞狀態(tài)。其次是輸入門,它用來處理當(dāng)前序列位置的輸入,當(dāng)前時(shí)刻的單元狀態(tài)c t在該階段得到更新,c t的計(jì)算公式如式(1)所示:
經(jīng)過這個(gè)階段,LSTM當(dāng)前記憶與長(zhǎng)期記憶組合完成了單元狀態(tài)c t的更新。最后是輸出門,它用來計(jì)算當(dāng)前序列位置的輸出,在該階段,計(jì)算當(dāng)前時(shí)刻的輸出h t,h t的計(jì)算公式如式(2)所示:
輸出門和單元狀態(tài)c t共同確定了LSTM的輸出。
圖1僅是LSTM單元的邏輯架構(gòu)圖,實(shí)際上每處運(yùn)算均由λ個(gè)神經(jīng)元參與(λ為隱含層神經(jīng)元的數(shù)量),LSTM的輸出也為λ維向量,因此,LSTM模型需要最后連接一個(gè)全連接層,將LSTM層的輸出進(jìn)行維度變化,使結(jié)果呈現(xiàn)想要的維度。
與其他神經(jīng)網(wǎng)絡(luò)相同,堆疊隱含層可以使模型更加深入,從而得到更加準(zhǔn)確的輸出。多個(gè)LSTM層組成的LSTM模型稱為堆疊式LSTM模型,其模型結(jié)構(gòu)如圖2所示。
圖2 堆疊式LSTM模型結(jié)構(gòu)Fig.2 Stacked LSTMmodel structure
為了解決1.1節(jié)中提出的問題,本文提出了基于LSTM和滑動(dòng)窗口的流數(shù)據(jù)異常檢測(cè)方法SDLS(Stream data anomaly Detection method based on LSTM and Sliding window)。運(yùn)用LSTM網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)預(yù)測(cè),且由于LSTM單元具有遺忘門,網(wǎng)絡(luò)可以快速學(xué)習(xí)數(shù)據(jù)的新特征,實(shí)時(shí)更新調(diào)整網(wǎng)絡(luò),避免因流數(shù)據(jù)概念漂移問題導(dǎo)致的神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)不準(zhǔn)確。此外,對(duì)于每一個(gè)數(shù)據(jù),本方法不直接將預(yù)測(cè)差值作為其異常分?jǐn)?shù),而是選取一個(gè)合適大小的滑動(dòng)窗口,將窗口內(nèi)所有差值進(jìn)行分布建模,再根據(jù)差值在分布內(nèi)的概率密度值來分配當(dāng)前數(shù)據(jù)的異常分?jǐn)?shù)大小,解決流數(shù)據(jù)概念漂移問題導(dǎo)致的異常分?jǐn)?shù)匹配不合理現(xiàn)象。圖3顯示了SDLS的架構(gòu)。
圖3 SDLS方法整體架構(gòu)示意圖Fig.3 Schematic diagramof overall architectureof SDLSmethod
本文選擇堆疊式LSTM網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)預(yù)測(cè)。LSTM的預(yù)測(cè)過程如下所示:
1)xt作為輸入進(jìn)入第一個(gè)LSTM層;
2)xt與h t-1,1進(jìn)行連接,得到 [xt,h t-1,1],[xt,h t-1,1]與矩陣W(f1)進(jìn)行矩陣點(diǎn)乘,得到結(jié)果矩陣f t,1,f t,1再進(jìn)行 sigmod操作,得到 sigmod(f t,1)。
3)[xt,h t-1,1]與矩陣W(i1)進(jìn)行矩陣點(diǎn)乘,得到結(jié)果矩陣i t,1,i t,1再進(jìn)行 sigmod 操作,得到 sigmod(i t,1);[xt,h t-1,1]與矩陣W(j1)進(jìn)行矩陣點(diǎn)乘,得到結(jié)果矩陣j t,1,j t,1再進(jìn)行 tanh 操作,得到 tanh(j t,1);最后根據(jù)式(1)計(jì)算當(dāng)前時(shí)刻的單元狀態(tài)c t,1。
4)[xt,h t-1,1]與矩陣W(o1)進(jìn)行矩陣點(diǎn)乘,得到結(jié)果矩陣o t,1,o t,1再進(jìn)行 sigmod 操作,得到 sigmod(o t,1)。最后根據(jù)式(2)計(jì)算當(dāng)前時(shí)刻的輸出h t,1。
5)h t,1作為輸入傳入第下一個(gè)LSTM層,重復(fù)進(jìn)行步驟2)~4),直到得到h t,m(m為L(zhǎng)STM隱含層的層數(shù))。
6)h t,m輸入全連接層,進(jìn)行維度轉(zhuǎn)換,得到t+1時(shí)刻的預(yù)測(cè)輸出xˉt+1。
通常情況下,計(jì)算預(yù)測(cè)值xˉt與實(shí)際值xt的差值dt,將差值d t轉(zhuǎn)化為統(tǒng)一度量的異常分?jǐn)?shù)ASt(ASt∈[0,1]),dt越大,異常分?jǐn)?shù)ASt越大,然后將異常分?jǐn)?shù)與規(guī)定的閾值T比較,大于T的為異常數(shù)據(jù)。但是,由于流數(shù)據(jù)的概念漂移現(xiàn)象,正常數(shù)據(jù)和異常數(shù)據(jù)的模式都會(huì)發(fā)生變化,單純地將以差值的大小來計(jì)算異常分?jǐn)?shù)會(huì)使得發(fā)生概念漂移之后的異常分?jǐn)?shù)不準(zhǔn)確。因此,選取一個(gè)合適大小的滑動(dòng)窗口,將滑動(dòng)窗口區(qū)間內(nèi)差值序列建模為正態(tài)分布,再計(jì)算差值dt在該分布內(nèi)的概率密度值作為xt的異常分?jǐn)?shù)ASt。這樣,xt的異常分?jǐn)?shù)取決于在t時(shí)刻及其之前一段時(shí)間內(nèi)的預(yù)測(cè)差值分布,異常分?jǐn)?shù)的分配可以隨著流數(shù)據(jù)的變化而變化,準(zhǔn)確性更高。
對(duì)于每一個(gè)數(shù)據(jù)xt,計(jì)算異常分?jǐn)?shù)首先要為其選取合適大小的滑動(dòng)窗口。因?yàn)楫惓?shù)據(jù)的出現(xiàn)通常代表數(shù)據(jù)出現(xiàn)與之前不一致的模式,本方法選取倒數(shù)第n個(gè)異常所在時(shí)刻tan到t時(shí)刻的區(qū)間作為建模分布的區(qū)間,即[tan,t]。維持這個(gè)區(qū)間可以令滑動(dòng)窗口區(qū)間內(nèi)差值序列的分布建模更加符合流數(shù)據(jù)的實(shí)時(shí)數(shù)據(jù)模式,從而得到更加適合的分布函數(shù)。然而,如果某段時(shí)間內(nèi)出現(xiàn)連續(xù)不斷的異常,那么最后n個(gè)異常所在區(qū)間會(huì)非常小,用該區(qū)間進(jìn)行建模也會(huì)令得到的分布函數(shù)因數(shù)據(jù)量過小而準(zhǔn)確率不高,因此,本方法規(guī)定了滑動(dòng)窗口的最小長(zhǎng)度l,如果tan≥t-l,則選取[t-l,t]作為滑動(dòng)窗口的區(qū)間范圍?;瑒?dòng)窗口的選取有兩個(gè)標(biāo)準(zhǔn):第一個(gè)標(biāo)準(zhǔn)是t時(shí)刻之前最后n個(gè)異常所在的區(qū)間[tan,t];第二個(gè)標(biāo)準(zhǔn)為t時(shí)刻之前固定長(zhǎng)度的區(qū)間[t-l,t],t'=min{tan,t-l},[t',t]作為最終的滑動(dòng)窗口區(qū)間。
舉例來說明該過程。圖4為一個(gè)時(shí)間序列異常分?jǐn)?shù)的分布示意圖,令閾值T為0.5,則AS值在虛線以上的數(shù)據(jù)為異常數(shù)據(jù)。令t=50,n=10,l=30,則按照第一個(gè)標(biāo)準(zhǔn)選出的滑動(dòng)窗口區(qū)間是50 s之前最后10個(gè)異常所在的區(qū)間,即為圖中S2區(qū)間;按照第二個(gè)標(biāo)準(zhǔn)選出的滑動(dòng)窗口區(qū)間是20~50 s區(qū)間,即圖中S1區(qū)間,因?yàn)?0 s<30 s,本文?。?0 s,50 s]作為最終的滑動(dòng)窗口區(qū)間。
圖4 計(jì)算t=50時(shí)數(shù)據(jù)的異常分?jǐn)?shù)時(shí)按照兩個(gè)標(biāo)準(zhǔn)選取的滑動(dòng)區(qū)間Fig.4 Sliding intervals selected according to two criterias when calculating abnormal score of data at time t=50
選擇好滑動(dòng)窗口后,計(jì)算[t',t]區(qū)間內(nèi)差值序列[d t',dt]的平均值μ和方差σ2,再用μ與σ2進(jìn)行正態(tài)分布建模,得到F(x)=N~(μ,σ2),再計(jì)算差值d t在該分布內(nèi)的概率密度值F(dt),F(xiàn)(dt)便為xt的異常分?jǐn)?shù)ASt。
確定完異常分?jǐn)?shù)后,將異常分?jǐn)?shù)與閾值T進(jìn)行比較,大于閾值是異常數(shù)據(jù),否則為正常數(shù)據(jù)。由此,完成了異常數(shù)據(jù)的識(shí)別。
綜上,異常數(shù)據(jù)檢測(cè)算法的偽代碼如下所示。
算法1 異常數(shù)據(jù)檢測(cè)。
輸入 流數(shù)據(jù)序列xt,xt+1,…;
輸出流數(shù)據(jù)異常判定序列:at,at+1,…,ai∈{0,1}(0為正常,1為異常),及流數(shù)據(jù)異常分?jǐn)?shù)序列ASt,ASt+1,…。
1)將 流 數(shù) 據(jù) 序 列xt,xt+1,… 輸 入 LSTM,得 到 預(yù) 測(cè) 數(shù) 據(jù),,…
2)計(jì)算預(yù)測(cè)差值,di=|xˉi-xi|,i=t,t+1,…
3)記錄最初的n個(gè)異常值所在時(shí)刻:h0,h1,…,hn-1,此時(shí)直接將預(yù)測(cè)差值d轉(zhuǎn)化為異常分?jǐn)?shù)AS再與閾值比較來判斷是否為異常值。
本文使用液壓系統(tǒng)狀態(tài)檢測(cè)數(shù)據(jù)集[24]中的壓力傳感器數(shù)據(jù)來評(píng)估本文方法的性能。該數(shù)據(jù)集是用液壓實(shí)驗(yàn)臺(tái)實(shí)驗(yàn)獲得的,實(shí)驗(yàn)臺(tái)由一個(gè)主要工作和一個(gè)二次冷卻過濾回路組成,它們通過油箱連接。系統(tǒng)每60 s一個(gè)循環(huán),同時(shí)測(cè)量循環(huán)過程中的壓力、溫度等數(shù)據(jù)值,在系統(tǒng)運(yùn)行過程中,4個(gè)液壓部件(冷卻器、閥門、泵和蓄能器)的狀態(tài)會(huì)發(fā)生改變,數(shù)據(jù)的走勢(shì)也會(huì)隨之發(fā)生改變。
首先將數(shù)據(jù)輸入LSTM來得到預(yù)測(cè)數(shù)據(jù),本實(shí)驗(yàn)所用LSTM含有3個(gè)隱含層,其中的神經(jīng)元個(gè)數(shù)分別為128、64、16,時(shí)間步長(zhǎng)設(shè)置為150。傳感器數(shù)據(jù)通常包含三種噪聲[25],本文在原始數(shù)據(jù)中添加這三種類型噪聲制造含噪聲數(shù)據(jù),之后將含噪聲數(shù)據(jù)輸入LSTM,并改變?cè)肼暟俜直葋碓u(píng)估LSTM的預(yù)測(cè)精度,本文使用式(3)來評(píng)估訓(xùn)練的SDAE的擬合精度,Acu越大說明準(zhǔn)確率越高。
其中:xt為原始數(shù)據(jù),xˉt是LSTM通過含噪聲數(shù)據(jù)預(yù)測(cè)的數(shù)據(jù),L為時(shí)間序列長(zhǎng)度。通過圖5可以看到,雖然隨著噪聲百分比的增大,Acu也隨之下降變大,但Acu始終在90%以上,說明LSTM預(yù)測(cè)擬合數(shù)據(jù)的能力很好。
圖5 LSTM在不同噪聲百分比下預(yù)測(cè)擬合數(shù)據(jù)的AcuFig.5 Acu of fitted data predicted by LSTM at different noise percentages
通過圖6,可以直觀地看到LSTM的預(yù)測(cè)能力,它可以很好地預(yù)測(cè)數(shù)據(jù)且可以很大程度上避免噪聲的影響,因此,它的預(yù)測(cè)差值可以用來檢測(cè)異常值。
在實(shí)驗(yàn)中,設(shè)置l=80,n=20,T=0.5,若ASt≥ 0.5則說明xt為異常值。
為了評(píng)估檢測(cè)SDLS檢測(cè)異常數(shù)據(jù)、確定異常分?jǐn)?shù)的能力,本文將SDLS與直接差值異常檢測(cè)法(Predicted Difference,PD)和另一種應(yīng)用于流數(shù)據(jù)的異常檢測(cè)方法——異常數(shù)據(jù)分布建模法(Abnormal Data distribution Modeling,ADM)[19]進(jìn)行比較,PD直接將預(yù)測(cè)差值的大小轉(zhuǎn)化為異常分?jǐn)?shù),預(yù)測(cè)差值越大,則異常分?jǐn)?shù)越大。ADM為另一種用滑動(dòng)窗口內(nèi)的預(yù)測(cè)差值進(jìn)行分布建模計(jì)算異常分?jǐn)?shù)的方法,但ADM進(jìn)行分布建模時(shí)僅考慮窗口內(nèi)那些已經(jīng)被判定為異常的數(shù)據(jù),并且使用Q函數(shù)來計(jì)算異常分?jǐn)?shù)。本文使用曲線下面積(Area Under Curve,AUC)來評(píng)估算法的性能,這是一種廣泛使用的度量標(biāo)準(zhǔn),用于評(píng)估離群值檢測(cè)的性能[26]。當(dāng)AUC較大時(shí),算法的性能更好。
圖6 LSTM對(duì)含噪聲數(shù)據(jù)進(jìn)行預(yù)測(cè)的效果Fig.6 Effect of LSTM predicting noisy data
圖7顯示了三種方法在應(yīng)用于具有不同噪聲百分比的數(shù)據(jù)時(shí)檢測(cè)異常數(shù)據(jù)的性能比較,可以看到,SDLS一直優(yōu)于其他兩種方法。SDLS的平均AUC值與PD和ADM相比分別提高了0.187和0.05(SDLS方法的平均值為0.915 527,PD方法的平均值為0.865 537,ADM方法的平均值為0.728 742)。ADM表現(xiàn)不佳,因?yàn)锳DM僅對(duì)異常數(shù)據(jù)進(jìn)行分布建模,適用于有大量嘈雜的異常數(shù)據(jù)的應(yīng)用,因此在異常數(shù)據(jù)較少時(shí),AUC值不高。
圖7 三種流數(shù)據(jù)異常檢測(cè)方法的AUC性能對(duì)比Fig.7 AUCperformancecomparison of threestreamdata anomaly detection methods
針對(duì)流數(shù)據(jù)存在概念漂移的問題,本文提出了一種基于LSTM和滑動(dòng)窗口的流數(shù)據(jù)異常檢測(cè)方法SDLS。首先通過LSTM進(jìn)行數(shù)據(jù)預(yù)測(cè)求出預(yù)測(cè)差值,再將滑動(dòng)窗口內(nèi)的差值序列進(jìn)行分布建模,動(dòng)態(tài)地為每個(gè)數(shù)據(jù)分配更加合適的異常分?jǐn)?shù),提高流數(shù)據(jù)異常檢測(cè)的準(zhǔn)確率。本文利用真實(shí)實(shí)驗(yàn)數(shù)據(jù)構(gòu)造含有噪聲的測(cè)試數(shù)據(jù),利用基于測(cè)試數(shù)據(jù)的實(shí)驗(yàn)驗(yàn)證了該方法的有效性。