唐海賢李光輝?
(1.江南大學人工智能與計算機學院,江蘇 無錫214122;2.物聯(lián)網(wǎng)技術(shù)應用教育部工程技術(shù)研究中心,江蘇 無錫214122)
傳感器網(wǎng)絡(luò)經(jīng)常被于環(huán)境監(jiān)測領(lǐng)域,傳感器節(jié)點需要不間斷地采集環(huán)境參數(shù),形成隨時間變化的傳感器數(shù)據(jù)流。受監(jiān)測環(huán)境、通信信道或節(jié)點本身等多方面因素的影響,傳感器節(jié)點采集到的原始數(shù)據(jù)流會不可避免地存在缺失、數(shù)據(jù)異常等問題。傳感器數(shù)據(jù)流的異常檢測是為了及時發(fā)現(xiàn)數(shù)據(jù)流中與正常模式有明顯差異的數(shù)據(jù)[1]。檢測到異常數(shù)據(jù)之后,便可以實現(xiàn)對環(huán)境事件的實時報警、異常數(shù)據(jù)修復、節(jié)點故障修復等應用。因此,傳感器數(shù)據(jù)流的異常檢測對于監(jiān)測系統(tǒng)的可靠性保障和管理部門的決策支持均有重要意義[2]。
數(shù)據(jù)流的異常檢測是數(shù)據(jù)科學中非常重要的一方面。近年來,已經(jīng)有大量的研究者利用機器學習方法,提取數(shù)據(jù)流(比如傳感器數(shù)據(jù)流)的特征來進行數(shù)據(jù)流的異常檢測[3]。根據(jù)異常檢測的建模類型,數(shù)據(jù)流的異常檢測方法分為三類[4]:統(tǒng)計建模方法、時序特征建模方法、空間特征建模方法。異常檢測算法按照是否需要人工標注好的數(shù)據(jù)集,則可將數(shù)據(jù)異常檢測算法分為有監(jiān)督學習異常檢測算法和無監(jiān)督學習異常檢測算法。
Wazid等人[5]利用K-means聚類算法檢測無線傳感網(wǎng)絡(luò)(WSN)的入侵異常。他們通過分析數(shù)據(jù)流的統(tǒng)計特征,計算出正常數(shù)據(jù)和異常數(shù)據(jù)的聚類中心。并通過計算WSN數(shù)據(jù)與聚類中心的歐氏距離進行異常檢測,對特定種類的入侵異常有較高的檢測準確率。Lee等人[6]將SOM算法[7]與K-means聚類結(jié)合,實現(xiàn)了在線異常檢測。該算法通過實時更新的網(wǎng)絡(luò)結(jié)構(gòu),并利用新數(shù)據(jù)的適應程度重建異常簇或拆分正常簇,實現(xiàn)了對新型異常的檢測。這類算法在檢測統(tǒng)計異常時具有高的檢測準確率,并且不需要提前標注數(shù)據(jù)集,是無監(jiān)督異常檢測算法,但是它們難以區(qū)分與異常數(shù)據(jù)具有相似分布的正常數(shù)據(jù)。
Wu等人[8]研究了LSTM算法[9]在工業(yè)物聯(lián)網(wǎng)傳感器數(shù)據(jù)流異常檢測中的應用。他們使用LSTM模型預測未來數(shù)據(jù),通過預測值與實際值的誤差檢測異常數(shù)據(jù)。Feng等人[10]利用LSTM模型提取工業(yè)控制系統(tǒng)數(shù)據(jù)的時序特征,并使用Softmax分類異常數(shù)據(jù)。這些方法利用RNN提取數(shù)據(jù)流的時序特征,通過預測算法預測未來數(shù)據(jù),并利用預測值與真實值的誤差檢測異常值;或者使用分類算法檢測異常數(shù)據(jù)。這類算法對于具有確定時序特征的數(shù)據(jù)流有好的檢測準確率,對于不具有確定時序特征的數(shù)據(jù)流無法準確檢測。
Shi等人[11]研究了將CNN與LSTM結(jié)合來預測未來的降水強度。他們利用CNN和LSTM提取數(shù)據(jù)的時間與空間特征[12],使用預測算法預測未來數(shù)據(jù)。Kim等人[13]使用C-LSTM模型檢測網(wǎng)絡(luò)流量數(shù)據(jù)的異常值。該算法利用CNN提取數(shù)據(jù)的空間特征,利用LSTM提取數(shù)據(jù)的時間特征,并利用預測算法或分類算法檢測異常數(shù)據(jù)。該算法對具有明顯時空特征的數(shù)據(jù)具有好的檢測準確率。但是這類有監(jiān)督學習異常檢測算法對于數(shù)據(jù)集的構(gòu)建有很高要求,需要訓練集盡可能包含全部的異常種類,并有足夠的數(shù)據(jù)量。但是現(xiàn)實中,環(huán)境監(jiān)測數(shù)據(jù)流具有正常數(shù)據(jù)和異常數(shù)據(jù)占比不平衡、數(shù)據(jù)隨時間會有較明顯的周期性波動、異常數(shù)據(jù)種類多樣等特點[4],很難對采集的數(shù)據(jù)進行準確的標注,或者很難獲取純凈的數(shù)據(jù)(全部是正常值的數(shù)據(jù)),因此不能有效檢測新型異常。
綜上所述,不需要提前標注數(shù)據(jù)的無監(jiān)督異常檢測算法有很大的局限性,只適合檢測統(tǒng)計異常。有監(jiān)督異常檢測算法可以有效利用環(huán)境監(jiān)測數(shù)據(jù)流的時空特性,對各種異常都有高的檢測準確率,但是難以獲取有效的有標注數(shù)據(jù)集。因此,需要針對環(huán)境監(jiān)測數(shù)據(jù)流研究既能有效檢測具有時空特征的異常數(shù)據(jù),又能有效檢測新型異常數(shù)據(jù)的半監(jiān)督異常檢測算法[6,14]。為實現(xiàn)上述目標,本文針對到達服務器端的環(huán)境監(jiān)測傳感器數(shù)據(jù)流,提出了一種基于C-LSTM的傳感器數(shù)據(jù)流半監(jiān)督在線異常檢測算法(Semi-Supervised Online Anomaly Detection Algorithm of Sensor Data Stream Using C-LSTM Neural Network,簡記為C-LKM)。
C-LSTM模型是一種將卷積神經(jīng)網(wǎng)絡(luò)(CNN)與長短時記憶網(wǎng)絡(luò)(LSTM)相結(jié)合,來分類時序序列的多層前饋網(wǎng)絡(luò)[13],網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。C-LSTM網(wǎng)絡(luò)利用時序序列作為輸入,經(jīng)卷積神經(jīng)網(wǎng)絡(luò)提取高維特征,并將卷積神經(jīng)網(wǎng)絡(luò)最后一層最大池化層(Max Pooling)的輸出作為LSTM網(wǎng)絡(luò)的輸入。將LSTM網(wǎng)絡(luò)提取的特征展開,經(jīng)過全連接層進一步提取輸入數(shù)據(jù)的特征,最終利用Softmax函數(shù),獲取輸入數(shù)據(jù)的預測結(jié)果。
圖1 C-LSTM網(wǎng)絡(luò)模型
其中LSTM網(wǎng)絡(luò)采用加入peephole connection的LSTM模型[15],其特點是在三個控制門的輸入分別加入細胞狀態(tài)信息。其狀態(tài)方程為:
式(1)~式(5)使用的符號:i,f,o分別代表著LSTM的輸入、遺忘門、以及輸出門。式(1)~式(5)使用的符號c、h分別代表著LSTM網(wǎng)絡(luò)一個單元的狀態(tài),以及隱藏層的狀態(tài)。σ為激活函數(shù),比如tanh、Relu函數(shù)。W代表LSTM對應門的權(quán)值矩陣,b為偏置。Pt用于表示LSTM網(wǎng)絡(luò)t時刻的輸入,其輸入為CNN網(wǎng)絡(luò)的池化層在t時刻的輸出。其中符號°表示矩陣Hadamard乘積。LSTM單元為模型提取了傳感器數(shù)據(jù)流在時間上的特征。
使用Softmax函數(shù)對LSTM網(wǎng)絡(luò)的輸出進行判別,判斷結(jié)果為0或1。0代表正常數(shù)據(jù),1代表異常數(shù)據(jù)。
K-means即K均值算法,是一種無監(jiān)督的聚類算法[16]。對于給定樣本D,K-means算法針對聚類所得簇C={c1,c2,c3,c4}最小化平方誤差。這里使用歐氏距離作為兩點之間的距離,進行聚類。
C-LSTM模型使用了CNN和LSTM兩種神經(jīng)網(wǎng)絡(luò),LSTM利用CNN提取的傳感器數(shù)據(jù)流高維特征作為輸入,并繼續(xù)提取其時間特征,最后經(jīng)全連接層壓縮數(shù)據(jù)后,交由Softmax函數(shù)判定是否為異常。CLSTM網(wǎng)絡(luò)的預測結(jié)果為Yclstm。
C-LSTM模型可以根據(jù)實際應用調(diào)整其網(wǎng)絡(luò)結(jié)構(gòu),令其包含不同數(shù)量的卷積層、池化層、LSTM隱藏層。同時,變量數(shù)量也會發(fā)生變化。模型的大小以及變量數(shù)量會影響最終的識別效果以及識別速度。一般來說,模型規(guī)模越大,識別效果越好,識別速度越慢。同時,C-LSTM模型可以適應不同尺度的輸入數(shù)據(jù),在改變輸入數(shù)據(jù)的尺寸(維數(shù)、窗口長度)時,模型需要微調(diào)。
本文的輸入是時間窗口長度l=101的傳感器數(shù)據(jù)流,每條數(shù)據(jù)包含4個屬性,使用兩層卷積加上兩層LSTM的C-LSTM網(wǎng)絡(luò)結(jié)構(gòu)來檢測輸入數(shù)據(jù)的異常信息,每層LSTM網(wǎng)絡(luò)包含64個節(jié)點。其網(wǎng)絡(luò)結(jié)構(gòu)如表1所示。該網(wǎng)絡(luò)結(jié)構(gòu)包含兩個卷積層,兩個池化層,一個LSTM網(wǎng)絡(luò),兩個全連接層,用tanh函數(shù)作為激活函數(shù)。在卷積層,使用的卷積核大小為5,卷積步長為1,對輸入數(shù)據(jù)均不使用padding。在池化層,使用最大池化來壓縮特征數(shù)量,池化核尺寸為2,池化步長為2。使用卷積層最后一層池化層的輸出作為LSTM網(wǎng)絡(luò)的輸入。使用tanh函數(shù)作為C-LSTM網(wǎng)絡(luò)的激活函數(shù)。
表1 C-LSTM網(wǎng)絡(luò)結(jié)構(gòu)
tanh函數(shù)用于將一個實數(shù)映射到[-1,1]范圍內(nèi),當輸入為0時,tanh函數(shù)的輸出也為0。Tanh函數(shù)對中間部分的變化敏感,并可以有效抑制兩端,對分類有利[17]。本文使用tanh函數(shù)作為激活函數(shù),一方面可以在傳感器數(shù)據(jù)流出現(xiàn)異常后,有效地捕捉到傳感器數(shù)據(jù)流的細微變化,另一方面能夠?qū)⒕W(wǎng)絡(luò)輸出數(shù)據(jù)壓縮到[-1,1]之間,使得數(shù)據(jù)在卷積神經(jīng)網(wǎng)絡(luò)的層與層之間傳遞時不發(fā)生擴散,不超限,加速網(wǎng)絡(luò)擬合,增加網(wǎng)絡(luò)的魯棒性。
使用K-means模型更新算法可以使異常檢測算法在遇到數(shù)據(jù)分布變化時(如出現(xiàn)數(shù)據(jù)波動、出現(xiàn)訓練集中沒有的數(shù)據(jù)分布),及時更新模型的權(quán)重,使其學習到新的數(shù)據(jù)分布。
K-means模型的輸入與C-LSTM模型的輸入相同。使用K-means將數(shù)據(jù)聚類為4個簇C={c1,c2,c3,c4},并獲取其四個聚類中心CenterP={cp1,cp2,cp3,cp4},并將其中包含數(shù)據(jù)數(shù)量最少的簇ci設(shè)置為異常簇,其余簇設(shè)置為正常簇。若存在多個包含數(shù)據(jù)數(shù)量最小的簇,則計算各聚類中心到其余簇聚類中心的合向量的模VectorMod={vm1,vm2,vm3,vm4},并將所有包含數(shù)據(jù)數(shù)量最小的簇中合向量的模最大的簇設(shè)置為異常簇,其余簇設(shè)置為正常簇。據(jù)此,獲取新的簇的集合{CP,CN},其中CP為異常簇,CN為正常簇,由此獲得K-means的分類標簽YK-means。
定義1(合向量的模)各聚類中心cpi到其余聚類中心的合向量的模vmi定義如下:
算法1 用K-means獲取分類標簽
定義2分類誤差ε是指,C-LSTM分類結(jié)果Yclstm和K-means分類結(jié)果YK-means不同的數(shù)據(jù)的個數(shù)。
分類誤差的閾值g根據(jù)經(jīng)驗值選取10。如果分類誤差大于閾值g,則認定C-LSTM分類器分類結(jié)果不可信,并執(zhí)行網(wǎng)絡(luò)更新步驟;若分類誤差小于閾值g,則認定C-LSTM分類器分解結(jié)果可信,并將其結(jié)果作為輸出。
本文提出的C-LKM算法網(wǎng)絡(luò)更新,僅更新CLSTM網(wǎng)絡(luò)中的LSTM網(wǎng)絡(luò)。更新方法包含有標注數(shù)據(jù)生成以及網(wǎng)絡(luò)更新兩部分。
有標注數(shù)據(jù)生成方法如下:
首先,認定C-LSTM和K-means分類所得標簽Yclstm與YK-means相同部分對應的數(shù)據(jù)為可信數(shù)據(jù),并對其進行標注;之后,利用K-means算法對不可信數(shù)據(jù)以k=2進行再次聚類,并將聚類所得簇中,數(shù)據(jù)量少的認定為異常簇,數(shù)據(jù)量多的認定為正常簇,并對其進行標注;之后將標注好的數(shù)據(jù)合并,作為CLSTM網(wǎng)絡(luò)的輸入,重新分類。
算法2 標注數(shù)據(jù)
網(wǎng)絡(luò)更新方法如下:
將新生成的有標注數(shù)據(jù)輸入預訓練的CNN提取數(shù)據(jù)的高維特征,并將提取好的特征作為LSTM網(wǎng)絡(luò)的輸入;之后,利用反向傳播不斷更新LSTM網(wǎng)絡(luò)的參數(shù),直到LSTM網(wǎng)絡(luò)的輸出經(jīng)全連接層以及Softmax分類器分類結(jié)果同原始有標注數(shù)據(jù)誤差小于分類誤差閾值g時,結(jié)束迭代,此時異常檢測模型成功學習到新的數(shù)據(jù)分布;若迭代次數(shù)超過20次,結(jié)束迭代,此時異常檢測模型未能學習到新的數(shù)據(jù)分布。至此,網(wǎng)絡(luò)更新結(jié)束。這樣可以有效避免因為數(shù)據(jù)分布變化帶來的異常檢測誤報率上升、檢測精度下降的問題。
C-LKM算法在檢測時不斷以最新獲取的分類誤差較大的數(shù)據(jù)作為網(wǎng)絡(luò)輸入重新訓練LSTM網(wǎng)絡(luò),使其記住最新數(shù)據(jù)的時間特征。
正常情況下,傳感器網(wǎng)絡(luò)采集的數(shù)據(jù)變化平緩,當異常發(fā)生時,某個傳感器的數(shù)據(jù)會表現(xiàn)為較大的波動,當某些傳感器的數(shù)據(jù)超出閾值時,判定為異常。異常可以分為三個類別,孤立點異常、上下文異常、集體異常[4]。這些異常發(fā)生時對應的特征波動相對穩(wěn)定,但是也會出現(xiàn)預先沒有學習到的異常特征波動。這是設(shè)計C-LKM的傳感器數(shù)據(jù)流異常檢測模型的原則。C-LKM的模型結(jié)構(gòu)如圖2所示,整個模型分為預訓練與在線檢測兩大部分。該模型中,程序首先使用有標注的傳感器數(shù)據(jù)流,對CLSTM網(wǎng)絡(luò)進行預訓練,獲取預訓練的C-LSTM網(wǎng)絡(luò),我們稱之為預訓練過程。在線檢測過程中,模型接收并分類無標注的傳感器數(shù)據(jù),并使用K-means無監(jiān)督的優(yōu)化C-LSTM網(wǎng)絡(luò),修正模型誤差。
圖2 C-LKM的模型結(jié)構(gòu)圖
算法3 傳感器數(shù)據(jù)流在線異常檢測算法(C-LKM)
C-LKM模型既考慮了傳感器數(shù)據(jù)流的空間相關(guān)性,也考慮了其時間相關(guān)性,并利用K-means算法實現(xiàn)了模型的半監(jiān)督學習,模型在使用時,只需要少量數(shù)據(jù)進行預訓練,實際預測中,便可依照數(shù)據(jù)特征,自動調(diào)節(jié)網(wǎng)絡(luò)參數(shù),使得模型可以有效分類新型異常數(shù)據(jù)。
本文實驗在一臺安裝了一塊AMD R72700x CPU,一塊NVIDIA GTX1080Ti GPU,32GB 2666MHz DDR4內(nèi)存的電腦上完成。AMD R72700x CPU有8個核心,16個線程,能方便地訓練與運行C-LKM模型,以及本文使用的各種對比模型;32GB內(nèi)存則能保證存儲全部的模型參數(shù)。程序運行在Windows10系統(tǒng),使用numpy 1.18.0以及pandas 0.23.4進行數(shù)據(jù)預處理以及矩陣運算,使用tensorflow2.0.0利用CPU訓練及運行網(wǎng)絡(luò)模型。
為驗證本文提出算法的可行性,使用英特爾伯克利研究室(IBRL)傳感器數(shù)據(jù)集進行實驗驗證。該數(shù)據(jù)集是英特爾伯克利研究室(IBRL)在2004年2月28日至2004年4月5日收集的54個傳感器的真實數(shù)據(jù)。該網(wǎng)絡(luò)中,傳感器每隔31 s收集一組包含溫度、濕度、光照強度、傳感器節(jié)點電壓4個屬性的數(shù)據(jù)[18],傳感器網(wǎng)絡(luò)中的節(jié)點分布如圖3所示。選取31號節(jié)點數(shù)據(jù)作為本文實驗原始數(shù)據(jù)。
圖3 英特爾伯克利研究室(IBRL)傳感器布置圖
英特爾伯克利研究室傳感器數(shù)據(jù)流為無標注的原始采集數(shù)據(jù),數(shù)據(jù)中存在缺失值、異常值,在使用它進行實驗之前需要對數(shù)據(jù)進行預處理。首先,因為采用的31節(jié)點前40000組數(shù)據(jù)中丟失數(shù)據(jù)均為該時刻全部的溫度、濕度、光照以及電壓數(shù)據(jù),且只存在兩段長時間的數(shù)據(jù)丟失情況。所以,忽略長時間丟失數(shù)據(jù)的情況,并對其余缺失值使用線性插值法[19]進行補齊,取補齊后數(shù)據(jù)的前60000組數(shù)據(jù)作為實驗數(shù)據(jù)集,并將預處理后的數(shù)據(jù)標記為正常數(shù)據(jù)。
之后,對數(shù)據(jù)插入異常點。在實驗數(shù)據(jù)集中,隨機選取一些正常點,將其四個屬性值改為異常值[20]。異常值計算方法為,以隨機選取的異常點為中心,以15為時間窗口,計算該時間窗口內(nèi)各屬性的均值,以及方差μi={μti,μhi,μli,μvi},其中分別表示第i個時間窗口內(nèi),溫度、濕度、光照強度、電池電壓的均值;{μti,μhi,μli,μvi}分別表示第i個時間窗口內(nèi),溫度、濕度、光照強度、電池電壓的方差。異常值X′i的計算方法為:
式中:m為計算機生成的隨機數(shù),m為正整數(shù),rm和rv為取值在(0,1]內(nèi)的隨機數(shù)。實驗中,分別向IBRL_31數(shù)據(jù)集中插入1%、2%、5%、10%的異常點,獲取四組異常占比分別為1%、2%、5%、10%的有標注數(shù)據(jù)集,實驗數(shù)據(jù)集如表2所示。
表2 實驗數(shù)據(jù)集
本文將異常檢測作為二分類問題進行解決,最終分類結(jié)果為:異常P、正常N。對于二分類問題,將最終分類結(jié)果劃分為:真正例TP(True Positive)、假正例FP(False Positive)、真反例TN(True Negative)、假反例FN(False Negative),其中正例P為異常數(shù)據(jù),反例N為正常數(shù)據(jù)。異常檢測數(shù)據(jù)集存在正反例占比不均的問題,為準確反映各對比模型的異常檢測性能,采用召回率Recall、精確率Precission、F1-Score作為算法的評價指標。
使用算法方差變化率Rvar檢測K-means模型更新算法對模型預測穩(wěn)定性的提升效果。
定義3算法方差變化率Rvar:
式中:Varr為未用模型更新算法的異常檢測算法異常檢測結(jié)果的方差;Vars為使用模型更新算法后,半監(jiān)督異常檢測模型異常檢測結(jié)果的方差。
為驗證本文算法在長時間范圍上的有效性,在補齊缺失值的IBRL_31數(shù)據(jù)集中選取60000組數(shù)據(jù),分別插入占比1%、2%、5%、10%的異常點,以前5000組數(shù)據(jù)作為訓練集,后55000組數(shù)據(jù)作為訓練集進行試驗。并且記錄模型在每5000組測試數(shù)據(jù)上的異常檢測準確性。分別用CNN、LSTM、CLSTM、CKM、LKM以及C-LKM在這三組異常占比不同的數(shù)據(jù)集上進行試驗,其中CKM、LKM分別為CNN、LSTM應用K-means模型更新算法的半監(jiān)督異常檢測模型。使用召回率和F1-Score作為衡量指標,對比其檢測精度,并計算算法在測試集11個不同時間段上檢測結(jié)果的召回率以及F1-Score的方差,來驗證K-means模型更新算法對異常檢測模型檢測穩(wěn)定性的提升效果。
圖4 CNN、LSTM、C-LSTM、CKM、LKM、C-LKM算法在各時間段上的F1-Score和召回率
表3 算法在不同異常占比數(shù)據(jù)集上的F1-Score和Recall
實驗結(jié)果如表3和圖4所示,圖4橫坐標表示測試區(qū)間。由圖4可知,C-LKM方法較C-LSTM方法在F1-Score和召回率上有明顯提升。當異常占比為1%時,C-LKM在每一段測試集上的F1-Score最高為0.942,召回率最高為0.983,在全部55000組數(shù)據(jù)上的F1-Score均值為0.939,召回率均值為0.954。當異常占比為2%時,C-LKM在每一段測試集上的F1-Score最高為0.956,召回率最高為0.989,在全部55000組數(shù)據(jù)上的F1-Score均值為0.948,召回率均值為0.949。當異常占比為5%時,C-LKM在每一段測試集上的F1-Score最高為0.968,召回率最高為0.980,在全部55000組數(shù)據(jù)上的F1-Score均值為0.965,召回率均值為0.964。當異常占比為10%時,C-LKM在每一段測試集上的F1-Score最高為0.976,召回率最高為0.977,在全部55000組數(shù)據(jù)上的F1-Score均值為0.970,召回率均值為0.954。相較于其他對比算法,C-LKM算法提升了異常點檢測準確度。對比未使用K-means模型更新算法的原算法,使用K-means模型更新算法之后,模型在各區(qū)間上的F1-Score和召回率均獲得明顯提升,其中,K-means模型更新算法對CNN以及LSTM算法提升最明顯。這是由于單獨的CNN無法有效提取傳感器數(shù)據(jù)流的時間特征,單獨的LSTM算法無法有效提取傳感器數(shù)據(jù)流的空間特征,這導致預訓練期間,他們的模型無法有效擬合。隨著輸入數(shù)據(jù)增加,K-means模型更新算法可以利用新獲取的傳感器數(shù)據(jù)繼續(xù)訓練預訓練模型,幫助模型進一步擬合,從而提升模型異常檢測效果。C-LSTM算法本身已經(jīng)可以有效提取傳感器數(shù)據(jù)流的時空特征,在預訓練階段已經(jīng)獲得了較好的擬合效果,但是由于訓練集數(shù)量較少,只有5000組數(shù)據(jù),并且訓練集異常占比低,異常種類不全,導致模型并未完全擬合。之后,K-means模型更新算法依舊可以利用新獲取的傳感器數(shù)據(jù)流繼續(xù)訓練模型,使得模型進一步擬合,提升了模型異常檢測效果,但是提升幅度沒有前兩種模型高。
圖5 CNN、LSTM、C-LSTM、CKM、LKM、C-LKM算法在各數(shù)據(jù)集分組上的F1-Score和召回率箱型圖
為探究K-means模型更新算法對異常檢測算法異常檢測效果及穩(wěn)定性的提升,以及對比異常檢測算法在不同異常占比的數(shù)據(jù)集上的異常檢測效果,使用各異常檢測算法在測試集11個時間段上異常檢測結(jié)果的召回率以及F1-Score作為元數(shù)據(jù),繪制箱型圖。圖5展示了各對比算法在各實驗數(shù)據(jù)集分組上的F1-Score和召回率箱型圖。其中箱體內(nèi)部的線表示異常檢測算法在測試集11個時間段上異常檢測結(jié)果的召回率以及F1-Score的中位數(shù),箱體部分表示實驗結(jié)果第1四分位至第3四分位的數(shù)值范圍,三角形表示實驗結(jié)果的均值。箱體部分范圍越窄,實驗結(jié)果越集中。從圖上可以看出,使用K-means模型更新算法之后,異常檢測結(jié)果的F1-Score和召回率均獲得提升,并且實驗結(jié)果分布更集中,表明隨著新數(shù)據(jù)輸入異常檢測模型,模型成功學習到了新型異常的特征,并檢測出了新型異常,這提升了模型的檢測穩(wěn)定性。隨著異常數(shù)據(jù)占比的提升,異常檢測算法在測試集11個時間段上異常檢測結(jié)果的召回率以及F1-Score的分布,呈集中趨勢,以及上升趨勢,這表明,異常數(shù)據(jù)占比越高,異常檢測算法的異常檢測效果越穩(wěn)定,異常檢測準確度越高。這是由于隨著異常占比的提升,異常檢測數(shù)據(jù)的數(shù)據(jù)分布更為理想(二分類問題理想類別比例為1∶1),模型訓練時可以學習到更多的異常類別的特征,以及正常類別的特征,模型擬合的更好。
進一步,使用原異常檢測算法以及使用Kmeans模型更新算法后的異常檢測算法在每一段異常檢測數(shù)據(jù)集上F1-Score的方差變化率和召回率方差變化率,量化K-means模型更新算法對異常檢測結(jié)果穩(wěn)定性的提升效果。圖6所示為各算法的F1-Score和召回率在每一段測試集上的方差。表4展示了K-means模型更新算法對異常檢測結(jié)果穩(wěn)定性的提升效果。從表中可以看出,使用K-means模型更新算法之后,F1-Score最高提升了73.1%,召回率最高提升了31.1%,并且對F1-Score穩(wěn)定性的提升遠高于對召回率穩(wěn)定性的提升。由于F1-Score是綜合了準確率和召回率的評價指標。因為異常檢測數(shù)據(jù)集中,異常占比低,即使將所有數(shù)據(jù)全部檢測為正常數(shù)據(jù),獲取的準確率也高于90%。原算法的F1-Score波動較大說明原算法的誤報率(FPR)不穩(wěn)定,原算法的異常檢測準確率受正常數(shù)據(jù)在短時間范圍內(nèi)的波動影響較大,這也是由訓練集在總數(shù)據(jù)集上占比小,無法反映完整數(shù)據(jù)集的數(shù)據(jù)分布導致的[21]。K-means模型更新算法使原算法在數(shù)據(jù)流發(fā)生波動時及時調(diào)整權(quán)重,來適應數(shù)據(jù)流在短時間范圍上的波動,并且在遇到未學習到的數(shù)據(jù)分布時及時調(diào)整權(quán)重,從而學習到了新的數(shù)據(jù)分布。表4中部分Recall的穩(wěn)定性變化率為負值,這表明在全部的測試結(jié)果中,召回率的穩(wěn)定性存在變壞的情況。這由兩種情況導致:①模型重訓練時存在過擬合的可能;②K-means模型更新算法將占比最少的簇設(shè)置為異常簇,這使得系統(tǒng)可以利用新的數(shù)據(jù)流重新訓練異常檢測模型,但是這種分類方法不完全可信,可能將某些正常數(shù)據(jù)劃分成異常數(shù)據(jù),導致模型向相反的方向訓練,最終使得召回率穩(wěn)定性下降。
圖6 各算法的F1-Score和召回率在每一段測試集上的方差
表4 K-means模型更新算法對異常檢測結(jié)果穩(wěn)定性的提升 單位:%
為探究K-means模型更新算法對檢測時間上的影響,本文統(tǒng)計并分析CKM、LKM以及C-LKM在線檢測階段(使用測試集)觸發(fā)模型更新的次數(shù),以及模型更新所用的時間,得出的結(jié)論如表5所示。其中觸發(fā)次數(shù)指的是在線檢測階段各實驗模型觸發(fā)模型更新的次數(shù);平均時間指的是完成一次模型更新使用的平均時間,單位是毫秒(ms);失敗次數(shù)指的是在一次模型更新中,模型經(jīng)歷20次迭代之后,其分類誤差依舊超過閾值的次數(shù)。模型更新失敗代表著模型沒有學習到近期數(shù)據(jù)的有效特征。從表5可以看出,三種使用了K-means模型更新算法的模型在在線檢測階段均觸發(fā)了模型更新機制,其中CKM、LKM由于其原始算法CNN、LSTM的檢測準確度低,其觸發(fā)模型更新機制的次數(shù)也很高,其模型更新的失敗次數(shù)也很高說明了這兩種算法的可以有效的學習到新數(shù)據(jù)的特征,但是受限于原始模型的性能,其無法準確學習到新數(shù)據(jù)的特征。C-LKM的模型更新機制觸發(fā)次數(shù)很少,模型更新失敗次數(shù)也很少,說明其可以有效并準確地學習到新數(shù)據(jù)的特征。同時,三種模型在本實驗平臺上,模型更新速度都是毫秒級,實際應用中不會造成性能瓶頸。
表5 模型更新機制統(tǒng)計結(jié)果
本文提出了一種針對到達服務器端的環(huán)境監(jiān)測傳感器數(shù)據(jù)流在線異常檢測的半監(jiān)督學習方法,該方法只需要少量的有標注數(shù)據(jù)集作為訓練集,所提的K-means模型更新算法可以提高原算法在長時間范圍上的檢測準確度以及檢測穩(wěn)定度。在本實驗平臺上,C-LKM算法對于單一節(jié)點數(shù)據(jù)的平均檢測時間在毫秒級,對于以固定時間間隔上報數(shù)據(jù)的環(huán)境監(jiān)測傳感器網(wǎng)絡(luò)的異常檢測應用不會造成性能上的瓶頸。本研究的實證結(jié)論對將現(xiàn)有的有監(jiān)督異常檢測模型轉(zhuǎn)變?yōu)榘氡O(jiān)督模型提供了一種參考。