陳 磊 胡廣朋
(江蘇科技大學(xué)計(jì)算機(jī)學(xué)院 鎮(zhèn)江 212000)
當(dāng)今世界的網(wǎng)絡(luò)信息技術(shù)發(fā)展非常迅速,引領(lǐng)了社會(huì)生產(chǎn)新的變革。但是隨著互聯(lián)網(wǎng)的快速發(fā)展,網(wǎng)絡(luò)安全問題也變得越來越重要,傳統(tǒng)的網(wǎng)絡(luò)安全防御往往要依賴安全專家的知識(shí)廣度和深度。但是在如今海量的應(yīng)用程序和數(shù)據(jù)之下,這種專業(yè)人才的防護(hù)方式逐漸無法滿足需求,人們開始尋求利用自動(dòng)化的方式來應(yīng)對(duì)這個(gè)問題。所以人工智能慢慢成為網(wǎng)絡(luò)安全防御新的熱點(diǎn)。
規(guī)劃識(shí)別是人工智能中的一個(gè)重要分支。規(guī)劃識(shí)別問題,是指從觀測(cè)到的某一智能體的動(dòng)作或動(dòng)作效果入手,推導(dǎo)出該智能體目標(biāo)/規(guī)劃的流程問題[3]。入侵檢測(cè)是通過對(duì)用戶行為、日志記錄或其他相關(guān)數(shù)據(jù)進(jìn)行分析,識(shí)別到對(duì)系統(tǒng)的惡意入侵或入侵的目的的技術(shù)。從二者的概念上講,無論是規(guī)劃識(shí)別還是入侵檢測(cè),它們都是依據(jù)某些特殊的行為來分析出智能體的目的。它們?cè)诤芏喾矫娑加泄餐c(diǎn),比如在應(yīng)用的環(huán)境,對(duì)系統(tǒng)的輸入輸出和最終判定的手段。在入侵檢測(cè)系統(tǒng)中引入規(guī)劃識(shí)別的方法,就可以預(yù)知入侵的發(fā)生,并可以提前采取相應(yīng)措施。
集成學(xué)習(xí)是一種通過結(jié)合構(gòu)建多個(gè)學(xué)習(xí)器來完成任務(wù)的一種學(xué)習(xí)策略[3]。大多數(shù)問題都可以通過這種思想來得到效果上的提升。AdaBoost 算法屬于集成學(xué)習(xí)中的一個(gè)典型代表[4],而且是一種串行的集成學(xué)習(xí)算法,它可以使得整體的效果越來越好。目前AdaBoost應(yīng)用廣泛,它可以和很多機(jī)器算法結(jié)合以此來提高識(shí)別精度,在很多領(lǐng)域都有著廣泛的應(yīng)用。比如在農(nóng)業(yè)方面,康洋等為了解決梯田地形復(fù)雜,提取效果差的問題,使用改進(jìn)的Ada-Boost算法對(duì)梯田特征的提取[5]。在工程方面,胡啟國(guó)等針對(duì)工程結(jié)構(gòu)可靠性設(shè)計(jì)中存在的問題,提出基于MEA-AdaBoost-BP模型的可靠性求解方法[6]。在軍事領(lǐng)域,李園等提出了一種基于AdaBoost的作戰(zhàn)目標(biāo)屬性判定方法[7]。在經(jīng)濟(jì)學(xué)領(lǐng)域,李趙飛等利用基于代價(jià)敏感的Adaboost 算法提高了貸款違約樣本的識(shí)別率[8]。在醫(yī)療方面,高澤倫等提出了一種Bagging-Adaboost-SVM 的多分類診斷模型[9],在針對(duì)糖尿病診斷方面取得了不錯(cuò)的進(jìn)展。
本文將AdaBoost算法引入規(guī)劃識(shí)別,以規(guī)劃識(shí)別方法做為弱預(yù)測(cè)器。由此可建立基于AdaBoost改進(jìn)的規(guī)劃識(shí)別方法,并應(yīng)用于入侵檢測(cè)領(lǐng)域。
Adaboost 算法屬于boosting 算法中的一個(gè)重要代表[10]。它是一種串行的集成學(xué)習(xí)算法。按照boosting算法的思想,要建立多個(gè)模型,并且將它們一個(gè)一個(gè)串聯(lián)在一起,依據(jù)各樣本權(quán)重的改變從而變更基分類器的權(quán)重,最后綜合獲得一個(gè)性能較強(qiáng)的分類器其步驟大致如下:
步驟一:對(duì)每個(gè)樣本賦予相同的權(quán)重,然后劃分類別使得誤差率最低。
步驟二:如果誤分類沒有達(dá)到預(yù)設(shè)值0,那么提高分類錯(cuò)誤的樣本權(quán)重,降低分類正確的樣本權(quán)重。
步驟三:依據(jù)新權(quán)重,再切一刀劃分類別使得誤差率最低。
步驟四:誤分類未達(dá)到0,重復(fù)步驟二。
步驟五:重復(fù)步驟三。
步驟六:誤差率如果已經(jīng)達(dá)到0,整個(gè)過程結(jié)束。
以下用幾張圖來表示這個(gè)過程,如圖1所示。
圖1 Adaboost算法步驟示意圖
Adaboost 的核心思想總地來說是先對(duì)每個(gè)樣本賦予相同的權(quán)重,之后選取當(dāng)前誤差最小的分類器計(jì)算其權(quán)重并且更新其樣本的權(quán)重,對(duì)這些樣本不斷地進(jìn)行迭代訓(xùn)練,模型會(huì)慢慢提高對(duì)這些分錯(cuò)樣本的準(zhǔn)確率,最終可以獲得一個(gè)較好的分類結(jié)果。最后通過集成各個(gè)基分類器共同得到一個(gè)較好的分類模型。
在規(guī)劃識(shí)別系統(tǒng)中,先輸入一個(gè)動(dòng)作序列,在序列輸入時(shí)依據(jù)相關(guān)動(dòng)作對(duì)智能體的預(yù)測(cè)規(guī)劃做出修改[11]。根據(jù)修改后的預(yù)測(cè),規(guī)劃器需要生成對(duì)下一個(gè)行為的預(yù)測(cè)。所以規(guī)劃識(shí)別系統(tǒng)會(huì)產(chǎn)生一系列的預(yù)測(cè)結(jié)果。在這些結(jié)果中,有很多并不滿足新觀察到的實(shí)際情況,識(shí)別器會(huì)對(duì)已生成的預(yù)測(cè)進(jìn)行修改,以滿足實(shí)際觀察到的情況。簡(jiǎn)單來說是先預(yù)測(cè)可能的結(jié)果,然后在有新觀察時(shí)再篩選結(jié)果。按照Kautz 的規(guī)劃識(shí)別方法,可以將它看成一個(gè)邏輯層次結(jié)構(gòu)[12]。在入侵檢測(cè)領(lǐng)域攻擊者往往會(huì)采取一定的入侵手段,并且入侵者的動(dòng)作是一個(gè)線性過程,符合輸入序列的特征[13]。Adaboost算法與大多識(shí)別算法兼容性都很好,以規(guī)劃識(shí)別方法做為弱預(yù)測(cè)器。由此可建立基于AdaBoost 改進(jìn)的規(guī)劃識(shí)別方法,并應(yīng)用于入侵檢測(cè)領(lǐng)域。
針對(duì)復(fù)雜的網(wǎng)絡(luò)環(huán)境及入侵手段,本文提出AdaBoost 改進(jìn)的規(guī)劃識(shí)別方法ABPR(Adaptive boosting planning recognition)。Adaboost 算法作為一種串行的集成算法,其核心思想是通過不斷改變樣本權(quán)重訓(xùn)練弱學(xué)習(xí)器,再將這些弱學(xué)習(xí)器組合使得整體效果越來越好。根據(jù)其原理,我們可以將規(guī)劃識(shí)別方法視為一種弱預(yù)測(cè)器。首先,使用規(guī)劃識(shí)別算法對(duì)樣本進(jìn)行訓(xùn)練和分類,若其在預(yù)設(shè)的誤差范圍之外就不斷更新對(duì)應(yīng)樣本的權(quán)重,再次訓(xùn)練分類,迭代t 次達(dá)到誤差允許范圍內(nèi)。在這個(gè)過程中可以得到T 個(gè)規(guī)劃識(shí)別預(yù)測(cè)器。最后將這T 個(gè)規(guī)劃識(shí)別預(yù)測(cè)器線性組合得到一個(gè)強(qiáng)預(yù)測(cè)器。最終輸出強(qiáng)預(yù)測(cè)器的識(shí)別結(jié)果。
ABPR 方法應(yīng)用于入侵檢測(cè)領(lǐng)域主要有以下四個(gè)部分構(gòu)成,即數(shù)據(jù)預(yù)處理、訓(xùn)練模型調(diào)整相關(guān)參數(shù)、判斷當(dāng)前安全狀態(tài)和對(duì)未來安全狀態(tài)預(yù)測(cè)。數(shù)據(jù)預(yù)處理主要是進(jìn)行冗余數(shù)據(jù)刪除、缺省數(shù)據(jù)填充和對(duì)相關(guān)數(shù)據(jù)規(guī)范化,接著對(duì)數(shù)據(jù)集進(jìn)行劃分并根據(jù)上述流程訓(xùn)練模型調(diào)整相關(guān)參數(shù)。輸入一組信息序列提取相關(guān)目標(biāo),將目標(biāo)分解降低其抽象層并更新擴(kuò)展已有規(guī)劃,不斷重復(fù)這個(gè)過程,直至規(guī)劃中只存在原始動(dòng)作。最后預(yù)測(cè)層對(duì)輸入信息序列做行為預(yù)測(cè)。下面對(duì)整個(gè)算法步驟做一個(gè)詳細(xì)闡述:
1)樣本數(shù)據(jù)選擇并導(dǎo)入訓(xùn)練樣本,初始化樣本權(quán)重分布;
其中m為樣本總數(shù),Di為各樣本初始權(quán)重;
2)設(shè)置弱預(yù)測(cè)器的數(shù)量T 與模型的結(jié)構(gòu),用規(guī)劃識(shí)別算法不斷訓(xùn)練樣本
3)計(jì)算弱預(yù)測(cè)器訓(xùn)練樣本的誤差率ec;
4)將誤差率ec和誤差閾值e比較,重新加權(quán)樣本;
5)計(jì)算第t個(gè)規(guī)劃識(shí)別弱預(yù)測(cè)器誤差率:
F是規(guī)劃識(shí)別弱預(yù)測(cè)器所預(yù)測(cè)的結(jié)果,yi是樣本的實(shí)際值,I是指示函數(shù)。
6)計(jì)算第t個(gè)規(guī)劃識(shí)別弱預(yù)測(cè)器的權(quán)重:
7)計(jì)算下一次迭代的樣本權(quán)重:
Bt:歸一化因子;如果沒有到達(dá)迭代次數(shù),返回第二步繼續(xù)迭代,迭代T次為止;
8)T 次迭代后得到T 個(gè)弱預(yù)測(cè)函數(shù)ft(x)及其各自權(quán)重,通過線性組合得到強(qiáng)規(guī)劃識(shí)別預(yù)測(cè)器。
其流程如圖2所示。
圖2 AdaBoost改進(jìn)的規(guī)劃識(shí)別預(yù)測(cè)流程圖
本節(jié)實(shí)驗(yàn)采用的數(shù)據(jù)集是NSL-KDD,它是由KDD99 數(shù)據(jù)集改進(jìn)而來,該數(shù)據(jù)集中包括正常流量和四類攻擊流量,分別為Normal,DOS,U2R,R2L和Probing attack。Normal 表示正常流量,DOS 是拒絕服務(wù)攻擊,U2R 是提取攻擊,R2L 是遠(yuǎn)程用戶攻擊,Probing attack 是端口掃描攻擊。NSL-KDD 數(shù)據(jù)集的每條記錄都是由41 個(gè)屬性和一個(gè)類別標(biāo)簽構(gòu)成,其中包括9 個(gè)離散特征。這個(gè)類別就是Normal 和Attack。Attack 又依據(jù)數(shù)據(jù)具體特征劃分為上述四種攻擊類別。這四種攻擊又能進(jìn)一步劃分為39 種入侵類型。這39 種攻擊類別只有22 種在訓(xùn)練集中出現(xiàn),其余17 種只存在于測(cè)試集。數(shù)據(jù)集構(gòu)成如圖3。
圖3 NSL-KDD的數(shù)據(jù)構(gòu)成
入侵檢測(cè)的評(píng)價(jià)標(biāo)準(zhǔn)主要有四個(gè)部分,即準(zhǔn)確率(Accuracy),精確率(Precision),召回率(Recall)和F1分?jǐn)?shù)(F1-score)。
表1 混淆矩陣
根據(jù)這些度量,各個(gè)評(píng)價(jià)標(biāo)準(zhǔn)計(jì)算方法如下:
準(zhǔn)確率(Accuracy):分類正確的樣本占樣本總數(shù)的比例。
精確率(Precision):正確識(shí)別為攻擊樣本占模型識(shí)別為攻擊數(shù)量的比例。數(shù)值越大越好。
召回率(Recall):被正確識(shí)別為攻擊的樣本占實(shí)際攻擊樣本的比例。同樣越大越好。
F1分?jǐn)?shù)(F1-score):精確率和召回率的調(diào)和平均。
根據(jù)上述相關(guān)介紹,NSL-KDD 數(shù)據(jù)集中包含41 個(gè)相關(guān)特征屬性,但是并不是每個(gè)特征都對(duì)模型的建立有影響,并且維度過高也不利于相關(guān)計(jì)算,所以采取皮爾遜相關(guān)系數(shù)[14]和線性判別分析[15]對(duì)數(shù)據(jù)進(jìn)行降維,最后得到22 個(gè)相關(guān)特征。將這22 個(gè)相關(guān)特征作為Adaboost 改進(jìn)的規(guī)劃識(shí)別模型的輸入因子考慮,將其作為輸入變量,以此建立基于Adaboost 改進(jìn)的規(guī)劃識(shí)別預(yù)測(cè)模型??梢酝ㄟ^輸入變量數(shù)和輸出變量數(shù)確定相關(guān)輸入輸出節(jié)點(diǎn)。由上述可知,輸入變量為22 個(gè),輸出變量為5個(gè),因此設(shè)置輸入節(jié)點(diǎn)n為22,輸出節(jié)點(diǎn)m為5。可以確定隱含層大致范圍,具體參數(shù)設(shè)置見表2。
表2 規(guī)劃識(shí)別參數(shù)
基于AdaBoost算法的原理,我們把每個(gè)規(guī)劃識(shí)別模型視為一個(gè)弱預(yù)測(cè)器,并設(shè)定規(guī)劃識(shí)別弱預(yù)測(cè)器的個(gè)數(shù)為100,以構(gòu)建一個(gè)改進(jìn)的AdaBoost 規(guī)劃識(shí)別預(yù)測(cè)模型。用規(guī)劃識(shí)別訓(xùn)練樣本數(shù)據(jù),將誤差超過0.005 的樣本設(shè)置為下次加強(qiáng)的訓(xùn)練樣本,變更相應(yīng)的權(quán)重,經(jīng)過迭代訓(xùn)練獲得100 個(gè)弱預(yù)測(cè)器和每一個(gè)預(yù)測(cè)器的相應(yīng)權(quán)重,最終加權(quán)線性組合得到一個(gè)規(guī)劃識(shí)別強(qiáng)預(yù)測(cè)器。用最終得到的預(yù)測(cè)器對(duì)測(cè)試集測(cè)試。其中,沒有改進(jìn)的規(guī)劃識(shí)別預(yù)測(cè)模型的各項(xiàng)參數(shù)與上述參數(shù)相同。
本次實(shí)驗(yàn)是基于五分類的,使用兩種方法分別測(cè)試了22544個(gè)樣本的混淆矩陣。
圖4 PR方法的混淆矩陣
PR 方法測(cè)試集中9711 個(gè)正常樣本有9427 個(gè)被正確識(shí)別,12833 個(gè)異常樣本有11206 個(gè)被正確識(shí)別。根據(jù)上表和上節(jié)的計(jì)算公式可以求得相關(guān)評(píng)價(jià)指標(biāo),這里我們主要分析精確率和召回率,由于訓(xùn)練樣本有限,U2R 和U2L 的分類效果不太好。表3展示了相關(guān)評(píng)價(jià)指標(biāo)。
表3 PR方法各項(xiàng)評(píng)價(jià)指標(biāo)結(jié)果
圖5 ABPR方法的混淆矩陣
使用ABPR 方法,相比PR 方法對(duì)正確樣本的識(shí)別數(shù)量提升到了9624 個(gè),對(duì)異常樣本的識(shí)別提高到了11744 個(gè),對(duì)各種攻擊類別的識(shí)別也有明顯提升,各個(gè)指標(biāo)對(duì)比見表4。
下面主要分析兩種方法的精確率和召回率的比較,如圖6所示。
圖6 精確率比較
圖7 召回率比較
基于ABPR的IDS在精確率和召回率方面都要比PR 方法有所提升,特別表現(xiàn)在樣本較少的情況下。在訓(xùn)練集中數(shù)量較多的三種類型Normal、DOS和Probing 中,都表現(xiàn)出較高的精確率和召回率。在召回率方面Probing 類攻擊,ABPR 相較于PR 方法提升了11.16%,R2L 攻擊提升了10.57%。這兩種攻擊類型改進(jìn)的規(guī)劃識(shí)別方法提升較大。另外幾種提升較小幾乎持平。但是在精確率方面,對(duì)四種攻擊的識(shí)別都有一定的提升。特別是U2R 攻擊類型上。對(duì)于整個(gè)模型的分類準(zhǔn)確率上ABPR 的準(zhǔn)確率94.92%也要略高于PR方法的91.52%。
綜合上述比較,AdaBoost改進(jìn)的規(guī)劃識(shí)別方法相比于傳統(tǒng)規(guī)劃識(shí)別方法在入侵檢測(cè)方面的效果更好,對(duì)各種攻擊的識(shí)別都有一定的提升。
本文介紹了一種AdaBoost 改進(jìn)的規(guī)劃識(shí)別算法并用于入侵檢測(cè)中。該方法的主要思想是把串行的集成算法與傳統(tǒng)的規(guī)劃識(shí)別算法相結(jié)合,將各個(gè)規(guī)劃識(shí)別模型作為弱分類器,先利用規(guī)劃識(shí)別算法對(duì)樣本進(jìn)行訓(xùn)練分類,如果不在設(shè)定的誤差范圍內(nèi)就不斷更新錯(cuò)誤樣本的權(quán)重,再次訓(xùn)練分類,迭代t次達(dá)到誤差允許范圍內(nèi)。最后將這個(gè)過程中得到的T 個(gè)規(guī)劃識(shí)別預(yù)測(cè)器線性組合成一個(gè)強(qiáng)預(yù)測(cè)器。最終輸出強(qiáng)預(yù)測(cè)器的識(shí)別結(jié)果。實(shí)驗(yàn)結(jié)果對(duì)比表明,本文提出的方法相比傳統(tǒng)方法有著更好的識(shí)別效果。