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