張?zhí)煨?/p>
摘 要:選用HMM在原模型的基礎(chǔ)上針對算法下溢、概率轉(zhuǎn)移矩陣過大、計算結(jié)果P(O|Ψ)值過小等問題分別進(jìn)行優(yōu)化。使用優(yōu)化后的HMM對訓(xùn)練集進(jìn)行訓(xùn)練,并根據(jù)訓(xùn)練結(jié)果,調(diào)整部分參數(shù)使模型正確率得到提高。實驗結(jié)果證明HMM在通信流量時間序列異常檢測方面效果更好。HMM作為異常檢測的基本算法,因其不需要針對每種類型的異常點分別進(jìn)行優(yōu)化,從而降低了復(fù)雜度,且對未知異常值也有一定的檢測能力。
關(guān)鍵詞:異常檢測; HMM; 時間序列
Abstract: The optimized HMM is used to train the training set, and some parameters are adjusted to improve the accuracy of the model according to the training results. The experimental results show that the accuracy of HMM is better than that of ARIMA model. As the basic algorithm of anomaly detection, HMM reduces the complexity because it does not need to optimize the exception point for each type, and also has certain detection ability for the unknown outliers. This paper uses distributed Euclidean distance algorithm, distributed ARIMA optimization model and distributed HMM optimization model to detect abnormal test set data. In order to compare the differences of distributed algorithms, a comparative experiment is designed and implemented.
Key words: anomaly detection; Hidden Markov Model; Time series
引言
一直以來,通信流量數(shù)據(jù)的分析是一個熱門話題,很多網(wǎng)絡(luò)管理人員都很注重通信流量的異常檢測。在很多大公司以及企業(yè)中,主機(jī)的通信流量異??芍苯幼鳛闄z測主機(jī)通信故障的依據(jù)。因此,如何快速發(fā)現(xiàn)和定位主機(jī)通信流量中的異常成為時下的一個熱門研究課題。近年來有些研究人員提出了一種新的主機(jī)通信流量異常檢測方法,該方法的原理是通過一定的方法將時域流量信息轉(zhuǎn)變到頻域,并根據(jù)頻域的特征來進(jìn)行異常檢測[1-2]。也有研究人員提出可以利用小波分析理論的結(jié)果來進(jìn)行通信流量異常檢測,實質(zhì)上該結(jié)果為類異常檢測的結(jié)果。但該理論有其局限性,因為使用的算法實現(xiàn)起來極其復(fù)雜,所以在處理海量數(shù)據(jù)實時計算方面效果不盡人意。除了域變換的方法,也有研究人員提出可以利用通信流量數(shù)據(jù)自相似性的特征來進(jìn)行異常流量檢測,根據(jù)流量的參數(shù)變化情況來判斷該時刻是否出現(xiàn)異常。但是這種方法準(zhǔn)確性不是很穩(wěn)定,在網(wǎng)絡(luò)繁忙且樣本量大的時候檢測結(jié)果較為準(zhǔn)確,而當(dāng)網(wǎng)絡(luò)處于空閑時段時,由于流量的自相似性不強(qiáng),其精度會有所下降[3]。
1 HMM模型及算法研究
應(yīng)用HMM異常檢測的一般步驟可以分為以下4點[4-5]:
(1)對數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理,可以使用Min-Max或者Z-Score標(biāo)準(zhǔn)化方法。
(2)構(gòu)建HMM,初始化模型。
(3)反復(fù)訓(xùn)練確定模型參數(shù)以及閾值。
(4)檢測測試集,給出分析檢驗結(jié)果。HMM異常檢測步驟如圖1所示。
在時間序列的異常檢測中引入五元組的HMM,Ψ=(S,O,A,B,π)。異常檢測中狀態(tài)有2個值0或1,0為正常狀態(tài),1為異常狀態(tài)。
其中:S為馬爾科夫鏈中的狀態(tài)數(shù);O為觀察值集合;A為狀態(tài)轉(zhuǎn)移矩陣;B為給定狀態(tài)下觀察值概率矩陣;π為初始化概率。
基于HMM的異常檢測方法在對訓(xùn)練集數(shù)據(jù)學(xué)習(xí)時使用的是Baum-Welch算法和Viterbi算法,異常檢測時使用的是前向算法。
1.1 數(shù)據(jù)預(yù)處理
本文使用的數(shù)據(jù)是主機(jī)通信流量數(shù)據(jù),其中異常點均有標(biāo)注。將數(shù)據(jù)存儲于MySQL中,通信流量序列的每點之間的時間間隔為5 s,即在樣本采集時每隔5 s采集一次通信流量值。主要內(nèi)容是類似于(20151028142645,520 697)這樣的鍵值對,該組數(shù)據(jù)表示2015年10月28日14時26分45秒時該主機(jī)的通信流量為520 697。由于通信流量數(shù)據(jù)是周期性變化的數(shù)據(jù),如圖2所示,通過觀察數(shù)據(jù)的特征以及異常值的分布情況,發(fā)現(xiàn)其異常點均在峰值時出現(xiàn)。
圖2為使用部分?jǐn)?shù)據(jù)繪制的通信流量時序圖,可以明顯觀察到數(shù)據(jù)具有周期性的特點,并且通過觀察被標(biāo)為異常的點,會發(fā)現(xiàn)異常值均出現(xiàn)在波峰的位置,即黑色實線以上部分。
在Viterbi算法中,也會出現(xiàn)算法下溢的情況,在連續(xù)相乘之后,用于判斷是否為最優(yōu)序列的P(O|Ψ)值會越來越小,因為該值僅代表一個衡量的標(biāo)準(zhǔn),并不代表真實的概率數(shù)值,所以將該值取對數(shù)后,再參與比較。
因為在該數(shù)據(jù)集中存在很多種不同類別的異常點,例如:加性異常點、水平位移異常點、革新異常點、暫時變化異常點以及組合異常點,而異常點所占的比例很小,大概為1.8%左右。如果對每一種異常點單獨建立模型的話樣本數(shù)量是遠(yuǎn)遠(yuǎn)不夠的,因此這里假設(shè)訓(xùn)練集中的點均為正常點,僅對正常點建模,模型建好之后,只要確定該模型的一個合適的閾值,使用這個閾值來區(qū)分正常點和異常點即可。在本次實驗的建模過程中不對異常點和正常點進(jìn)行區(qū)分。
假定為理想狀態(tài),序列中無異常值,那么初始狀態(tài)轉(zhuǎn)移矩陣A(°){0, 1, 1, 0}。 表示不管當(dāng)前為何種狀態(tài),下一步均跳轉(zhuǎn)到正常態(tài)。那么初始概率分布為π{1,0}, 表示100%的正常點。
本文采用的數(shù)據(jù)為訓(xùn)練集數(shù)據(jù)。訓(xùn)練的過程是先初始化模型,然后使用Viterbi算法求得第一次計算后的狀態(tài)序列,再經(jīng)過Baum-Welch算法求得第一次計算后的五元組模型參數(shù),最后經(jīng)過重估公式的判斷,進(jìn)行迭代運(yùn)算,求得最優(yōu)五元組模型,建模步驟如圖4所示。
s
2 實驗
對于窗口大小和閾值的選擇,使用訓(xùn)練集數(shù)據(jù)做出如下實驗。為了找到合適大小的閾值,用五組只包含正常點的序列和五組只包含異常點的序列進(jìn)行實驗,計算每個序列的平均P(O|Ψ)值??紤]到在數(shù)據(jù)集中異常值所占比例極小,序列長度不宜選擇過長,所以這里選取觀察序列長度為L=10的固定長度序列,見表2,其中W為窗口寬度。
通過觀察全部為正常點序列的實驗結(jié)果,可以發(fā)現(xiàn)正常序列與異常序列之間存在明顯的閾值,全部為正常點序列的平均值均在0.055以上,所以得到結(jié)論:在使用該模型對通信流量時間序列數(shù)據(jù)進(jìn)行異常檢測的時候,計算某段待測序列的平均P(O|Ψ)值,如果P(O|Ψ)>0.055,說明該序列為正常序列,反之為異常序列,即該序列中包含異常點。
對于滑動窗口大小的選擇,由于HMM計算量比較大,同時會占用很大的內(nèi)存空間。本文中,采用列舉的方法,通過比較檢出率來尋找適當(dāng)?shù)拇翱诘膶挾戎?。見?,其中L為觀察序列長度,W為滑動窗口寬度。
可以看出,L對實驗的影響不大,檢出率隨著W增大而略有增大,但由于實際問題中的計算量會比較大,所以選擇窗口大小因?qū)嶋H需求而定。
通過實驗結(jié)果來看HMM效果很好,正確率在90%以上,HMM作為異常檢測的基本算法,其不需要針對每種類型的異常點分別進(jìn)行優(yōu)化,即降低了復(fù)雜度,且對未知異常值也有一定的檢測能力。
3 結(jié)束語
本文主要工作是構(gòu)建HMM,根據(jù)數(shù)據(jù)特點采取優(yōu)化方案以及調(diào)整參數(shù)。HMM首先使用的是Baum-Welch算法和Viterbi算法對訓(xùn)練集數(shù)據(jù)進(jìn)行訓(xùn)練,對訓(xùn)練中出現(xiàn)的算法下溢和概率矩陣過大等問題,分別采取了相應(yīng)的優(yōu)化方法。通過訓(xùn)練計算出模型的最佳參數(shù),確定五元組模型Ψ=(S,O,A,B,π)。在對通信流量時間序列數(shù)據(jù)異常監(jiān)測部分,使用前向算法,但由于其隨著觀測序列的不斷增加,計算量會越來越大,并且其計算結(jié)果會越來越小,這不利于對異常點做出判斷,所以采用添加滑動窗口的方法來固定序列長度。通過對訓(xùn)練集數(shù)據(jù)進(jìn)行訓(xùn)練,調(diào)整閾值和窗口寬度,使模型的正確率得到提升。
參考文獻(xiàn)
[1] 劉文. 海量時間序列數(shù)據(jù)處理的關(guān)鍵技術(shù)研究[D]. 大連:大連理工大學(xué),2017.
[2] 宋若寧. 海量數(shù)據(jù)環(huán)境下的網(wǎng)絡(luò)流量異常檢測的研究[D]. 北京:北京郵電大學(xué),2015.
[3] 馬衛(wèi),熊偉. 基于協(xié)同神經(jīng)網(wǎng)絡(luò)的網(wǎng)絡(luò)流量異常檢測[J]. 華中師范大學(xué)學(xué)報(自然科學(xué)版),2012,46(5):537-539,568.
[4] 蒲天銀,秦拯. 基于Netflow的流量異常檢測技術(shù)研究[J]. 計算機(jī)與數(shù)字工程,2009,37(7):115-118.
[5] LANE T D. Machine learning techniques for the computer security domain of anomaly detection[M]. Indiana, USA: Purdue University,2000.