文/李靜 馮祖洪
主成分分析法改進貝葉斯網絡入侵檢測
文/李靜 馮祖洪
使用主成分分析的方法對數(shù)據(jù)集進行降維,將滑動窗口引入到貝葉斯網絡分類算法中,從而得到改進的貝葉斯網絡分類算法。實驗證明,改進的算法能夠有效地降低分類數(shù)據(jù)的維數(shù),同時該算法建立的入侵檢測模型能夠更好地檢測出已知的入侵攻擊類型。
當今在全球范圍內,對計算機及網絡基礎設施的攻擊已經成為一個越來越嚴重的問題,與此同時,入侵檢測技術也成為人們日益關注的研究課題之一[1]。從當前的一些研究成果來看,已有的一些檢測技術對于已知的入侵行為檢測精度高,誤報率較低,但對于未知攻擊的入侵模式的檢測率和誤報率的結果均不太理想,而且在時效性方面也不能令人滿意。因此如何建立具有較強的有效性、自適應性和可擴展性的入侵檢測模型成為入侵檢測領域中重要的研究課題[2]。
由于貝葉斯網絡具有堅實的數(shù)學理論基礎以及綜合先驗信息和樣本信息的能力,近年來已成為入侵檢測模式分類的研究熱點之一。但是,基于貝葉斯網絡的入侵檢測技術在對數(shù)據(jù)進行檢測時存在兩個問題:其一[3]是貝葉斯網絡結構節(jié)點太多,分類過程中的計算量呈指數(shù)增長,導致分類效率較低;其二是在檢測的過程中沒有考慮到當前的攻擊行為和安全狀態(tài),僅僅是根據(jù)原始訓練數(shù)據(jù)集生成的固定不變的貝葉斯網絡來進行測試,對檢測的精度造成一定的影響。
對于上述第一個問題,本文提出基于主成分分析的特征提取方法。利用主成分分析的降維思想,減少訓練數(shù)據(jù)的變量,進而簡化貝葉斯網絡。對于第二個問題,本文提出滑動窗口機制。該機制將窗口中的數(shù)據(jù)設為訓練數(shù)據(jù)集,具體解釋如下:首先將測試數(shù)據(jù)集追加到訓練數(shù)據(jù)集的尾部,初始窗口為原始訓練數(shù)據(jù)集,每當檢測完N條測試數(shù)據(jù)時,將滑動窗口向下移動N條數(shù)據(jù)(窗口大小保持不變),這樣就可以得到一個不斷更新的訓練數(shù)據(jù)集。由此,訓練得到的貝葉斯網絡就包含系統(tǒng)當前的安全信息。實驗證明,本文提出的方法可以有效地提高分類效率和檢測精度。
主成分分析也稱主分量分析,利用降維的思想,把多指標轉化為少數(shù)幾個綜合指標[4]。
主成分算法的實現(xiàn)如下[5]:
1. 對訓練集矩陣進行標準化處理,
得到矩陣
其中,
2. 求相關矩陣
3. 求R矩陣的特征值和特征向量
由于R是一個對稱矩陣,所以在計算中只要對R的上三角矩陣求特征值和特征向量即可。
4. 求出主成分
將求出的特征值按大小依次排列,便得,
原則確定m,并依次排列特征向量,
就可得到我們所需的主成分。
貝葉斯網絡是一個功能強大的知識表示和不確定條件下的推理工具,由一個有向無環(huán)圖及圖中各個節(jié)點所附加的一張概率表組成[6]。其中,有向無環(huán)圖的各個節(jié)點表示領域中不同的變量,節(jié)點之間的弧表示變量之間的依賴關系。根節(jié)點X所附的是它的邊緣分布P(X),而非根節(jié)點X所附的是條件概率分布P(X|π(X)),其中π(X)代表X的父節(jié)點。簡單地講,有向無環(huán)圖從定性的層面描述變量之間的依賴獨立關系,而概率分布從定量的層面刻畫變量對其父節(jié)點的依賴關系。為方便描述,文章中將有向無環(huán)圖稱作貝葉斯網絡結構,將各個節(jié)點的概率表稱作節(jié)點參數(shù)。
利用主成分分析改進貝葉斯分類算法
從理論上分析,由于貝葉斯網絡具有堅實的數(shù)學理論基礎以及綜合先驗信息和樣本信息的能力,因此比其他分類算法,如樸素貝葉斯、支持向量機等,具有更好的分類精度。但是,已有的貝葉斯網絡算法在對訓練數(shù)據(jù)進行訓練時,并沒有考慮到大量冗余的數(shù)據(jù)屬性會提高數(shù)據(jù)的維數(shù),增加分類計算量,造成分類效率的下降?;谶@樣的情況,本文提出在利用訓練數(shù)據(jù)集進行訓練之前,首先對訓練數(shù)據(jù)集進行特征選擇或者特征提取。常用的特征選擇方法主要有信息增益、信息增益比、距離度量等。雖然采用這些特征選擇算法會大幅度減少計算量,但是由于忽略一部分屬性對分類所起的作用,導致分類精確度不夠理想。文本采用主成分分析的方法對特征屬性進行特征提取,這樣不僅可以大大地減少數(shù)據(jù)維數(shù),減少計算量,同時也可以最大限度地利用原數(shù)據(jù)的分類信息,使得分類精度相對較高。
例如,某數(shù)據(jù)集有特征屬性A1、A2、A3、A4、A5、A6、A7,對分類所起的作用分別為:0.2324、0.208、0.1753、0.1052、0.1038、0.08931、0.0859在通過特征選擇后得到對分類所起作用較大的前四個屬性A1、A2、A3、A4對分類所起的作用之和為0.7209。而在用主成分分析之后得到的結果可能是X1、X2、X3、X4,而根據(jù)主成分分析算法,得到的這四個主成分對分類所起的作用之和一定大于0.85。相比之下,本文選擇主成分分析的方法對訓練數(shù)據(jù)集進行特征提取來減少特征屬性,從而減少計算量,提高檢測效率。
改進貝葉斯分類算法的步驟
設訓練數(shù)據(jù)集為M0,改進貝葉斯分類算法的步驟分別是:
1. 對訓練數(shù)據(jù)集M0進行預處理(如:數(shù)值化處理和離散化處理)得到訓練數(shù)據(jù)集M1。
2. 采用之前提到的主成分分析方法對M1進行主成分分析,得到包含較少屬性的新數(shù)據(jù)集M2。
3. 對數(shù)據(jù)集M2進行離散化處理得到新的數(shù)據(jù)集M 3。
4. 參照基于互信息的貝葉斯網絡結構生成算法[7],對M3進行訓練得到貝葉斯網絡的結構。
5. 利用滑動窗口機制,對測試集中的數(shù)據(jù)進行測試。具體步驟如下:
(1)對訓練數(shù)據(jù)集設置兩個指針,分別為頭指針P1(指向訓練數(shù)據(jù)集的首部)和尾指針P2(指向訓練數(shù)據(jù)集的尾部);同時,對測試數(shù)據(jù)集設置兩個指針,分別為頭指針Q1(指向測試數(shù)據(jù)集的首部)和尾指針 Q2(指向訓練數(shù)據(jù)集的尾部),即P=P1,Q=Q1;
(2)把指針P所指向的數(shù)據(jù)存入數(shù)據(jù)集M中,P=P+1;
(3)重復(1),直到P>P2;
(4)通過數(shù)據(jù)集M計算貝葉斯網絡結構各個節(jié)點的參數(shù)C(即概率表);
(5)用貝葉斯網絡結構和參數(shù)C對訓練數(shù)據(jù)集中指針Q所指向的數(shù)據(jù)進行測試,并將該條數(shù)據(jù)追加到訓練數(shù)據(jù)集M的尾部,P2=P2+1,Q=Q+1;
(6)重復(4)的操作,直到Q=Q1+N或者Q>Q2;
(7)如果Q>Q2,繼續(xù)執(zhí)行下一步;否則,P 1=P 1+N,P=P 1,轉到(1);
(8)測試完畢,計算正確率。
評估指標
本實驗采用F1測試值作為試驗評估指標。F1測試值的具體計算公式如下[8]:
其中,
實驗設計及結果
本實驗采用的數(shù)據(jù)來自KDDCUP1999數(shù)據(jù)集。該數(shù)據(jù)集作為入侵檢測領域中的權威數(shù)據(jù),是在軍事網絡環(huán)境中運用非常廣泛的模擬入侵攻擊試驗得到的。該數(shù)據(jù)集包含490萬條數(shù)據(jù),每條數(shù)據(jù)就是一個網絡連接記錄。其中,每條記錄由41個特征屬性和第42個用來標記該記錄是正常數(shù)據(jù)還是某種攻擊類別的屬性組成[9]。該數(shù)據(jù)集包含的四大攻擊類[10]分別是:DoS(Denial-of-service),拒絕服務攻擊;R2L(Unauthorized access from a remote machine to a local machine),是來自于遠程主機的未授權訪問;U2R(Unauthorized access to local super user privileges by a local unprivileged us未er)授權的本地超級用戶特權訪問;Probing(surveillance and probing)端口監(jiān)視或掃描。本文從該數(shù)據(jù)集中抽取12萬條記錄,其中50%作為訓練集,剩余50%作為測試集。
通過對6萬條訓練數(shù)據(jù)進行分析,得知41個特征屬性中的8個屬性(is_hot_login,num_outbound_cmd,root_shell,land,su_attempted,urgent,num_shells,num_failed_logins)對分類幾乎不起作用(其99%以上的屬性值是相同的)。本實驗對剩余的33個屬性進行主成分分析,得到12個主成分,并對其離散化。
數(shù)據(jù)離散化后,將這12個主成分作為前12個變量,并將原訓練數(shù)據(jù)集中的第42個屬性(標記類別的屬性)作為第13個變量組成新的訓練數(shù)據(jù)。運用參考文獻中的算法對新訓練數(shù)據(jù)進行訓練得到如圖1所示的貝葉斯網絡結構。計算得到網絡節(jié)點參數(shù),即變量的先驗概率表或條件概率表。由于各個變量的取值較多,導致概率表龐大,文章中僅截取節(jié)點3和節(jié)點6的概率表,如表1、表2所示。
表1 結點3的概率表X3 X3P(X3)0.03%1.68%0.48%44 45 46 40 41 42 43 P(X3)0.06%0.31%78.23%19.21%
表2 結點6的條件概率表X6 X6 33 34 54 33 34 30 34 X50001122 P(X6|X5)88.89%5.55%5.56%44.44%55.56%1.82%94.54%X6 48 49 34 35 43 37 38 X52233466 P(X6|X5)1.82%1.82%92.98%7.02%100.00%25.00%25.00%39 35 36 37 35 0 X5677785 4 P(X6|X5)50.00%92.02%7.89%0.09%100.00%100.00%
表3 F1值對比算法記錄類型(%)未加入滑動窗口的貝葉斯網絡算法加入滑動窗口的貝葉斯網絡算法Normal 92.46 93.7292.5681.3289.3690.21 Dos 90.29 Probing 79.86 R2L 87.58 U2R 88.96
貝葉斯網絡生成之后,用已有的貝葉斯網絡分類算法和基于滑動窗口的貝葉斯網絡分類算法進行比較。通過多次試驗證明,當滑動窗口的大小為1000時,分類效果較好。算法采用Matlab編程實現(xiàn),并分別計算出兩個不同算法的準確率和查全率。試驗后得到兩種不同算法針對每個類具體的F1值,如表3所示。
實驗結論
1. 與直接用標準數(shù)據(jù)集中的數(shù)據(jù)訓練貝葉斯網絡相比較,用主成分分析方法對數(shù)據(jù)集進行特征提取會大大減少貝葉斯網絡訓練過程中的計算量;
2. 由表2可知,使用滑動窗口可以明顯提高貝葉斯網絡的檢測精度。
本文在對KDD CUP 1999數(shù)據(jù)集進行分析的基礎上,使用主成分分析的方法對數(shù)據(jù)集進行降維,將滑動窗口引入到貝葉斯網絡分類算法中,從而得到改進的貝葉斯網絡分類算法。試驗證明,改進的算法能夠有效地降低分類數(shù)據(jù)的維數(shù),同時該算法建立的入侵檢測模型能夠更好地檢測出已知的入侵攻擊類型。但對于未知的攻擊,檢測效果還不是很理想,這也是本文下一步要考慮的問題。
擴展閱讀:
[1]楊德剛.基于模糊C均值聚類的網絡入侵檢測算法.計算機科學,2005,32(1):86-91.
[3]李冰寒,高曉利,劉三陽,李戰(zhàn)國.利用互信息學習貝葉斯網絡結構[J].智能系統(tǒng)學報,2011,6(1):68-71.
[4]張堯庭等.多元統(tǒng)計分析引論[M].北京:科學出版社,1982.
[5]于濤.主成分分析及其算法[J].金筑大學學報,1996,22(2):75-78.
[6]張連文,郭海鵬.貝葉斯網引論[M].北京:科學出版社,2006.
[7]Jie Cheng,David A.Bell,Weiru Liu,et al.Learning belief networks from data: an information theory based approach[C]. In Proceedings of the Sixth ACM International Conference on Information and Knowledge Management,325-331.
[8]王衛(wèi)玲,劉培玉,初建崇.一種改進的基于條件互信息的特征選擇算法[J].計算機應用,2007,27(2):433-435.
[9]楊鋒.基于數(shù)據(jù)挖掘的入侵檢測技術研究[D].哈爾濱:哈爾濱工程大學,2006.
[10]王越,譚淑秋,劉亞輝.基于互信息的貝葉斯網絡結構學習算法[J].計算機工程,2011,37(7):62-64.
(作者單位為北方民族大學計算機科學與工程學院)