衡紅軍,劉 靜
(中國民航大學 計算機科學與技術學院,天津 300300)
異常點檢測在汽車駕駛安全領域具有重要作用。在汽車駕駛過程中,準確并高效地檢測出異常點對駕駛員意義重大。在現實情境中,異常數據常以多維時間序列的形式表示,異常行為通常表現為一段時間內相應參數的數據值發(fā)生異常變化。異常點檢測是指對不符合預期模式或數據集中其他項目、事件或觀測值的識別[1]。近些年,專家學者針對時間序列的異常檢測提出一系列解決方案[2]。國外也有學者總結了異常檢測領域的各類方法[3-5]。文獻[6-7]介紹使用K最近鄰(K Nearest Neighbor,KNN)模型來檢測時間序列數據異常點。該方法是基于密度的檢測方法,密度通常使用每個實例到第K個最近鄰的距離進行度量。當距離大于閾值時,則判定為異常點。該方法的缺點是參數魯棒性差,計算量大。文獻[8-9]提出基于一類支持向量機(One-Class Support Vector Machine,OCSVM)的異常點檢測算法。OCSVM的訓練是基于正常類數據,將訓練好的模型輸入待分類數據,實現異常點檢測。文獻[10]利用多分類支持向量機檢測網絡入侵的異常行為。該方法廣泛應用于時間序列的異常檢測中,其缺點是對噪音數據敏感,容易過擬合。文獻[11]利用遞歸神經網絡(Recurrent Neural Network,RNN)檢測飛行數據中會導致飛行風險的異常值。文獻[12]利用多層感知機(Multi-Layer Perceptron,MLP)和長短時記憶(Long Short Term Memory,LSTM)網絡相結合識別汽車行駛數據傳遞過程中的虛假數據。這類算法需要大量數據訓練模型,異常數據占比通常較少,數據類別不平衡現象嚴重。文獻[13]提出一種利用深度卷積神經網絡進行時間序列異常檢測,通過構建具有4層隱藏層的卷積神經網絡檢測異常數據。該方法有效提高了數據檢測準確性,但模型復雜度較高。文獻[14]提出基于實例的遷移時間序列異常檢測算法。該算法通過構造有效的遷移決策函數來遷移實例,在帶標簽的源數據域進行決策,較好地解決了異常數據標記難的問題,在該算法中源域的選擇非常關鍵。文獻[15]提出一種基于孤立森林(isolation Forest,iForest)的異常點檢測方法。該方法將異常點定義為分布稀疏且離密度高的群體較遠的點。這類點在放入孤立森林中檢測時,其到達的孤立樹的深度通常低于正常值。該方法根據根節(jié)點至葉子節(jié)點的路徑長度建立異常指數完成異常檢測,雖然在異常檢測中應用廣泛,運行效率高,但其對噪聲數據的容忍度較高,在檢測中會忽略一些異常點。
本文提出一種結合自動編碼器與孤立森林的異常點檢測模型(LAIF),其主要分為數據預處理和異常點檢測兩部分,其中數據預處理包括數據特征提取和數據重構。LAIF利用滑動窗口計算原始多維時間序列范數和范數變化值以及相關統(tǒng)計信息值,以獲得特征數據,并采用自動編碼器重構特征數據,從而準確地檢測出異常點。
自動編碼器是一種自監(jiān)督學習方法,可以處理高維度的數據信息,在保留重要表示信息的前提下,為數據去噪并重構數據。自動編碼器由編碼器和解碼器組成。自動編碼器模型的訓練是通過多層神經網絡實現,編碼器、解碼器分別為神經網絡的兩個隱藏層,標簽為輸入數據。自動編碼器的工作流程為:輸入訓練數據,經過編碼器將數據壓縮,再經過解碼器將數據解壓縮,形成重構后的輸出數據,并通過最小化損失函數值來訓練模型,直至算法收斂。自動編碼器如圖1所示。
圖1 自動編碼器工作流程
遞歸神經網絡是在BP神經網絡的基礎上進行的改進。傳統(tǒng)神經網絡從輸入層至隱藏層再到輸出層,層與層之間是全連接,但每層的神經元無連接。而遞歸神經網絡使隱藏層間的神經元相互連接,使隱藏層上一時刻的輸出會影響下一時刻的輸入,如圖2、圖3所示。其中,X代表輸入層,H代表隱藏層,Y代表輸出層。在圖3中,c為數據經過隱藏層處理后的值,根據遞歸神經網絡結構,其值會影響下一時刻隱藏層的輸入。
圖2 遞歸神經網絡簡單結構
圖3 遞歸神經網絡展開結構
遞歸神經網絡在利用梯度下降算法進行反向傳播訓練時,容易出現梯度爆炸或梯度消失的現象,導致模型難以收斂。因此,研究學者提出長短時記憶網絡。長短時記憶網絡是將遞歸神經網絡中的隱藏層神經元做了改進,替換為記憶細胞結構[16]。記憶細胞的原理是在原本的隱藏層神經元中添加了門結構,其分別為輸入門、輸出門、遺忘門,如圖4所示。在現有研究中發(fā)現,因將遞歸神經網絡的神經元替換為記憶細胞的結構,長短時記憶網絡較好地克服了遞歸神經網絡原有的缺陷,并在關于時間序列的處理方面具有較好的效果。因此,本文選擇基于長短時記憶網絡的自動編碼器進行數據重構。
圖4 長短時記憶網絡中的記憶細胞結構
Fig.4 Structure of memory cells in a long short term memory network
孤立森林是一種基于集成學習的快速異常檢測算法,適合多維數據的異常檢測。孤立森林由一組孤立樹組成。孤立樹是一種滿二叉樹,其構造過程為:隨機采樣數據集D得到其子集D’,選取D’的特征集F中的一個屬性f及其值value,將D’中每條記錄分類。若第i條數據di的f屬性值小于value,di置入左節(jié)點,若大于等于value,則置入右節(jié)點。遞歸該步驟直至數據集只有一條或多條相同記錄,或者樹的高度達到閾值高度。按上述步驟構建多棵孤立樹,形成孤立森林,然后根據根節(jié)點至葉子節(jié)點的路徑長度建立異常指數。異常指數值越接近0,該點為正常點的可能性越高;越接近1,該點為異常點的可能性越高。異常因子的計算如式(1)所示。
S(x,n)=2-h(x)/c(n)
(1)
c(n)=2H(n-1)-2(n-1)/n
(2)
H(k)=lnk+γ
(3)
其中,γ=0.577 215 66為歐拉常數。
本文提出一種結合自動編碼器與孤立森林的異常點檢測模型,如圖5所示。該模型利用基于長短時記憶網絡的自動編碼器對數據進行重構,使得數據異常點更易于識別,再利用孤立森林算法檢測異常點。
圖5 LAIF模型
異常行為通常是數據項之間的變化出現異于平常波動的一段數據。在多維時間序列中,通常表現為s個時間步內的數據項變化異于正常數據項在s個時間步內的變化。通過對原始數據的加工處理,提取數據的變化特征,形成能更好反映數據項間變化的多維時間序列。
將m維時間序列表示為:T={T1,T2,…,Tn-1,Tn},其中,Ti為第i時刻的數據,Ti={ti1,ti2,…,tim-1,tim},tij為數據的第i時刻、第j項參數的值。
2.1.1 特征提取
時間序列的數據異常波動是異常檢測中捕捉的核心要素,基于此構建LAIF數據特征空間。為獲取s個時間步內數據的變化,引入兩個滑動窗口,計算滑動窗口內各項數據的統(tǒng)計值。滑動窗口w1,計算w1個時間步內的數據范數(N)和范數變化率(DN),得到新的數據集D1;滑動窗口w2,計算w2個時間步內D1中數據項的各個統(tǒng)計特征值,即均值(mean)、標準差(std)、最小值(min)、最大值(max)、四分位數(quars)、極差值(range),得出處理后的原始數據的多維特征時間序列Tp。設Ts={Ti,Ti+1,…,Ti+s-1},得到:
(4)
(5)
w1=3和w2=2且時間步長均為1時的特征提取計算過程如圖6、圖7所示。
圖6 w1=3時的特征提取計算過程
圖7 w2=2時的特征提取計算過程
2.1.2 數據重構
自動編碼器能使得隱藏層更好地學習到輸入數據的特征,常用于數據去噪。本文選用自動編碼器重構數據,旨在使數據特征更明顯,以便下一步檢測異常點。因為異常數據通常是與之前的數據變化相關,所以選用長短時記憶網絡作為自動編碼器中的編碼器和解碼器結構。數據具體處理過程如式(6)~式(12)所示。
輸入單元:
z=tanh(Wg(xt,ht-1))
(6)
門控單元:
zi=σ(Wi(xt,ht-1))
(7)
zf=σ(Wf(xt,ht-1)
(8)
zo=σ(Wo(xt,ht-1))
(9)
記憶單元:
ht=zo⊙tanh(Ct)
(10)
Ct=zf⊙Ct-1+zi⊙z
(11)
輸出單元:
yt=σ(Wtht)
(12)
其中,W為權值矩陣,x為輸入值,h為隱藏層值,z為各門結構的輸出值,C為記憶單元輸出值,xt為t時刻的輸入數據項,輸入數據集為Tp,在自動編碼器中,輸入數據的標簽就是輸入數據本身,重構后的數據集為Tr。
在孤立森林中,異常點定義為分布稀疏且離密度高的群體較遠的點。異常點檢測算法的思想為異常點到達孤立檢測樹的路徑小于正常點。本文利用自動編碼器重構數據,以達到使異常點更突出的效果,這將有助于提升算法檢測異常點的性能。孤立森林算法的實現如算法1、算法2、算法3所示[15],其中輸入數據集為Tr。
算法1孤立樹構造iTree(X,e,len)
輸入子采樣后的數據集X、當前樹高e、樹高閾值len
輸出孤立樹
1.if e >= len or |X|<=1 then
2.return exNode{size←|X|}
3.else
F←X的參數項列表
隨機選取一個參數項 f∈F
隨機選取值value∈[fmin,fmax]
Xl←filter(X,f Xr←filter(X,f>=value) return inNode{Left←iTree(Xl),Right←iTree(Xr), SplitAttribute←f,SplitValue←value} 4.end if 算法2孤立森林構造iForest(X,n,size) 輸入數據集X、孤立樹的數量n、子采樣的規(guī)格size、當前樹高e、樹高閾值len 輸出n棵隨機樹 1.Initialize Forest 2.for i=1 to t do 3.X’←sample(X,size) 4.Forest←Forest∪iTree(X’,e,len) 5.end for 6.return Forest 算法3路徑計算PathLength(x,T,len,e) 輸入待測實例x,孤立樹T,樹高閾值len,當前樹高e 輸出孤立樹的路徑長度x 1.if T is an external node or e>=len then 2.returne+c(T.size) 3.end if 4.a←T.splitAttribute 5.if xa < T.splitValue then 6.return PathLength(x,T.left,len,e+1) 7.else { xa >= T.splitValue } 8.return PathLength(x,T.right,len,e+1) 9.end if LAIF模型捕捉時間序列變化的異常波動,并進行多維時間序列的異常檢測。首先提取原始數據特征,通過滑動窗口計算相鄰時間步間范數值和范數變化率及其基本統(tǒng)計信息值,構成特征數據。然后LAIF利用基于LSTM的自動編碼器對時間序列良好的去噪能力,重構特征數據。最后LAIF基于孤立森林進行多維時間序列的異常檢測。 本文使用UAH-DriveSet數據集[17]進行實驗。UAH-DriveSet是一個提供大量駕駛數據的公共數據集。該數據集包含6個駕駛員在3種不同狀態(tài)下(正常normal、困倦drowsy、不正常aggressive)駕駛車輛的數據信息,數據采樣頻率為1 Hz。本文僅選取駕駛員在兩種狀態(tài)下的數據信息,即正常與不正常,共計10 320條數據,實驗使用關于汽車行駛過程中的3個參數,分別為速度、方向和加速度。 在實驗過程中,本文提出的LAIF模型與局部異常因子模型(Local Outlier Factor,LOF)[18]、一類支持向量機(OCSVM)、基于深度神經網絡的異常點檢測模型(LSTM-AE)進行對比[19]。不同異常點檢測模型的性能比較如表1、表2所示。實驗結果表明,本文模型在駕駛數據中具有更好的綜合性能。 表1 5種異常點檢測模型的性能比較結果 Table 1 Comparison result of performance of five outlierdetection models 駕駛員編號指標LOFOCSVMiForestLSTM-AELAIF1精確率0.866 40.970 10.921 30.843 90.876 8召回率0.906 30.566 70.855 50.841 20.993 7F1度量值0.885 90.715 40.887 20.842 60.931 62精確率0.118 70.069 20.091 00.290 90.115 1召回率0.834 80.266 00.568 80.296 20.888 9F1度量值0.208 00.109 80.156 90.293 50.203 83精確率0.556 70.497 50.527 60.716 10.568 2召回率0.886 70.444 40.747 20.706 80.969 8F1度量值0.684 00.469 50.618 50.711 40.716 64精確率0.366 70.344 30.360 90.359 20.372 0召回率0.907 40.465 60.794 00.352 90.999 8F1度量值0.522 30.395 90.496 20.356 00.541 05精確率0.293 10.362 40.307 50.163 40.296 3召回率0.893 10.602 50.833 30.142 80.966 3F1度量值0.441 30.452 60.449 30.152 40.453 66精確率0.529 80.522 70.524 60.563 00.528 5召回率0.915 70.507 30.806 30.553 70.843 0F1度量值0.671 20.514 90.635 60.558 30.649 7 表2 5種模型精確率、召回率和F1度量值的均值比較結果 Table 2 Comparison result of average values of accuracy,recall and F1 measure of five models 指標LOFOCSVMiForestLSTM-AELAIF精確率0.455 20.461 00.455 50.489 40.459 4召回率0.890 70.688 30.767 50.482 30.943 6F1度量值0.568 80.443 00.540 60.485 70.582 7 實驗結果的評估選取了精確率、召回率、F1度量值3個指標,如圖8~圖11所示。實驗結果表明,在精確率方面,LAIF略有提高;在召回率方面,LAIF至少提高6%,至多提高48%;在F1度量值方面,LAIF至少提高2.4%,至多提高31.5%。雖然LAIF的精確率沒有在所有情況下都保持最高水準,但是召回率在5種情況下都是最高的,表明針對實際情況中出現異常的數據點,LAIF檢測準確率較高。對于汽車安全駕駛來說,這一點非常重要。而且在精確率高于LAIF的模型中,均是針對某一種情況檢測結果最好,不具備泛化能力。F1度量值是兼顧精確率與召回率的分類評價指標,本文選其評估模型的綜合性能。實驗結果表明,相較于其他異常點檢測模型,LAIF具有更好的泛化能力,其綜合性能最優(yōu)。 圖8 5種模型召回率對比結果 圖9 5種模型精確率對比結果 圖10 5種模型F1度量值對比結果 圖11 5種模型性能指標均值對比結果 Fig.11 Comparison result of average values of performance indicators of five models 針對多維時間序列的異常診斷問題,提出一種基于自動編碼器與孤立森林的異常檢測模型(LAIF),通過計算統(tǒng)計信息提取數據特征,利用自動編碼器重構特征數據,使得數據更易于識別,再使用孤立森林算法診斷異常點。實驗結果表明,LAIF模型的綜合性能較優(yōu)。下一步可將LAIF模型用于航空領域QAR飛行數據的異常點檢測中,擴展其應用領域。3 實驗結果與分析
4 結束語