易琳,王欣
(中國民用航空飛行學(xué)院計算機學(xué)院,廣漢618307)
由于人們對于網(wǎng)絡(luò)接觸的愈來愈多,如何保證網(wǎng)絡(luò)中的安全成為人民關(guān)注的重點?,F(xiàn)在網(wǎng)絡(luò)入侵檢測的相關(guān)技術(shù)已經(jīng)逐漸成為在網(wǎng)絡(luò)安全的第一防線和重要手段。網(wǎng)絡(luò)入侵的技術(shù)越來愈多,針對網(wǎng)絡(luò)入侵相關(guān)檢測技術(shù)要求以及標(biāo)準(zhǔn)也在不斷提升。對于網(wǎng)絡(luò)入侵檢測技術(shù)而言,其首要任務(wù)便是將入侵檢測逐漸轉(zhuǎn)變成為分類問題以及模式識別兩個部分來進行處理。利用機器學(xué)習(xí)技術(shù)將網(wǎng)絡(luò)流量的特征行為劃分為正常流量和異常流量進行數(shù)據(jù)采集、預(yù)處理、建模和分類?,F(xiàn)階段,針對網(wǎng)絡(luò)入侵相關(guān)檢測技術(shù)主要通過機器學(xué)習(xí)來完成,同時深度學(xué)習(xí)在檢測網(wǎng)絡(luò)入侵中的應(yīng)用在不斷提升。當(dāng)前,國內(nèi)外關(guān)于此方面的研究大多處于基礎(chǔ)理論研究狀態(tài),同時在體現(xiàn)結(jié)構(gòu)以及相關(guān)技術(shù)方面獲得了一定成果。
機器學(xué)習(xí)中很多相關(guān)算法被廣泛用于網(wǎng)絡(luò)入侵檢測,常見的入侵檢測算法有很多,如KNN(K-nearest neighbor)。多種機器學(xué)習(xí)的算法結(jié)合的網(wǎng)絡(luò)入侵檢測方法可以適用于復(fù)雜的系統(tǒng)。文獻[1]創(chuàng)造性地提出了網(wǎng)絡(luò)入侵檢測相關(guān)模型;文獻[2]-[3]通過聚類的方法對流量進行分析;文獻[4]提出了通過蟻群算法旋轉(zhuǎn)神經(jīng)網(wǎng)絡(luò)參數(shù)進而針對網(wǎng)絡(luò)入侵進行檢測的方法;文獻[5]主要通過自動編碼器來進行網(wǎng)絡(luò)入侵檢測;文獻[6]提出一種以機器學(xué)習(xí)為基礎(chǔ)的網(wǎng)絡(luò)端口掃描檢測技術(shù);文獻[7]借助卷積神經(jīng)網(wǎng)絡(luò)來展開入侵檢測,進而針對日志信息特征以及灰度圖進行提取,借助spark來針對日志信息進行處理,進而借助不斷迭代的方式來產(chǎn)生相應(yīng)新特征,通過卷積來達到降噪目的;文獻[8]提出了以人工神經(jīng)網(wǎng)絡(luò)作為基礎(chǔ)的網(wǎng)絡(luò)入侵檢測系統(tǒng),降低了傳統(tǒng)方法的誤報率高的問題。
現(xiàn)階段,通過決策樹以及SVM等經(jīng)典機器學(xué)習(xí)算法來處理海量數(shù)據(jù)以及高緯度數(shù)據(jù),存在攻擊率檢測結(jié)果普遍偏低以及誤報率高等問題。而Boosting在處理大量數(shù)據(jù)時泛用性較好,可以有效的保證分類正確,提高檢測的精度。本文選擇Boosting算法對入侵進行檢測和識別,同時采用Boosting來針對樣本進行訓(xùn)練Boosting算法訓(xùn)練時間短,參數(shù)調(diào)整有獨特的優(yōu)勢。進而將正則項添加到迭代函數(shù)里面,并且將其用于模型復(fù)雜度的控制當(dāng)中。筆者首先介紹Boosting算法,進而以此算法為基礎(chǔ),協(xié)同kdd99數(shù)據(jù)集來針對入侵檢測模型進行構(gòu)建,最終達到特征工程以及數(shù)據(jù)預(yù)處理的目的。為了對Boosting的模型進行提升,使用熱編碼與隨機森林選擇特征相結(jié)合,實現(xiàn)參數(shù)的優(yōu)化與特征的提取。最終實驗表明,和隨機森林算法進行相關(guān)比較,Boosting模型在分類正確率方面有明顯優(yōu)勢,大大提升了網(wǎng)絡(luò)入侵的檢測效果。
Boosting算法是集成學(xué)習(xí)算法的一種,多個弱學(xué)習(xí)器相互組成Boosting算法,通過多個弱學(xué)習(xí)器的結(jié)果來進行結(jié)果預(yù)測,進而獲取相應(yīng)的投票結(jié)果。在進行訓(xùn)練過程中,針對各弱學(xué)習(xí)器予以訓(xùn)練,核心要點便是關(guān)注錯分樣本。Xgboost、AdaBoost以及GBDT為Boosting相關(guān)的三大注意算法類型。
Adaboost將處理屬于同一的訓(xùn)練集,此算法會應(yīng)用到多種不同的弱分類器,然后將許多弱學(xué)習(xí)器,進行相對的組合,以便組合成為強學(xué)習(xí)器。根據(jù)每次訓(xùn)練的結(jié)果,調(diào)整樣本的權(quán)值,將得到的新權(quán)值使用與后面的訓(xùn)練器進行訓(xùn)練,然后每次新增一個弱分類器,直至最終獲得最小錯誤率以及預(yù)先制定的相應(yīng)最大迭代次數(shù)。
在Adaboost算法模型上,大體上分為3個步驟:
(1)對于各訓(xùn)練樣本給予相同比例權(quán)重值。
(2)經(jīng)過多輪迭代以后,然后利用權(quán)重分布Dm對數(shù)據(jù)集進行有針對性的學(xué)習(xí),然后訓(xùn)練,之后獲得基本分類器,m代表迭代了多少輪。
計算Gm(x)的誤差率:
針對Gm(x)的系數(shù)進行計算,am代表的是在最終分類器里面Gm(x)相應(yīng)的重要程度:
對于權(quán)值分布進行更新,在之后的迭代進行使用。
Zt是規(guī)范化因子:
(3)組合各類弱分類器:
進而得到最終分類器:
作為一種以迭代疊加為基礎(chǔ)的決策樹算法,GBDT主要是將多個不同弱學(xué)習(xí)器予以組合,并且對應(yīng)的預(yù)測結(jié)果當(dāng)作是最終預(yù)測結(jié)果。GBDT算法模型具體步驟包含如下:
輸入訓(xùn)練集{(x1,y1),(x2,y2),…,(xn,yn)},損失函數(shù)為L(y,f(x)),迭代m輪,m為迭代次數(shù)。
計算m輪的i個樣本殘差:
針對各節(jié)點相應(yīng)最小損失函數(shù)進行計算,進而得到最佳的輸出值:
Rmj代表是第m棵樹所對應(yīng)的一個葉子節(jié)點區(qū)域,j代表的也就是葉子節(jié)點數(shù)所對應(yīng)的個數(shù),θ代表的也就是初始常數(shù),則本輪最終的算法模型::
Xgboost即 指 的 是eXtreme gradient boosting,此算法屬于梯度提升算法經(jīng)過優(yōu)化改進以后的算法。針對Xgboost對應(yīng)預(yù)測模型可以通過如下式子來進行表示。
上述式子中K代表的是樹對應(yīng)總個數(shù),fk代表的是第k顆樹,yi代表的是樣本xi對應(yīng)預(yù)測結(jié)果。
Xgboost代表的是實現(xiàn)了運算速度以及模型表現(xiàn)得平衡算法,在模型當(dāng)中引入了復(fù)雜度,進而針對算法效率進行衡量,以此來防止模型過擬合。關(guān)于Xgboost目標(biāo)函數(shù)可以表示成為模型復(fù)雜度+傳統(tǒng)損失函數(shù)。
上述式子里面i代表的是一個數(shù)據(jù)集合里面所對應(yīng)得某個樣本i,m代表的是某個k棵樹所對應(yīng)的數(shù)據(jù)總量大小,k代表的是所有k棵樹對應(yīng)的數(shù)目,上述式子里面每一項都是代表損失函數(shù),體現(xiàn)了損失函數(shù)是預(yù)測值和真實標(biāo)簽之間所共同存在的差異。一般情況下,指的是經(jīng)過調(diào)節(jié)以后對應(yīng)得均方誤差rmse。第二項所要代表的是一個模型對應(yīng)的數(shù)據(jù)復(fù)雜度,借助于該樹在模型中采取相應(yīng)變換方式來對其進行表示:
其中γ和λ為人工設(shè)置的參數(shù),T為葉子總數(shù),w代表的是葉子節(jié)點對應(yīng)分值為w的L2模平方。
Boosting集成算法,將多個弱學(xué)習(xí)算法結(jié)合,訓(xùn)練出精度較高的強學(xué)習(xí)算法。本文使用KDD99中10%kddcup.data_10_percent作為訓(xùn)練數(shù)據(jù)集。如今,網(wǎng)絡(luò)入侵檢測應(yīng)用最為普遍的數(shù)據(jù)集為KDD99,在此數(shù)據(jù)集里面保證的特征數(shù)為44個,大體上包含五個標(biāo)簽大類,即probe、nomal、u21、dos以及r2l。具體分類如表1所示。
表1 kdd99特征值
在數(shù)據(jù)集上運用交叉驗證,并用交叉驗證得到的平均準(zhǔn)確率,平均召回比例作為模型中最終評價的指標(biāo)[8]文中將常見的Boosting集成算法用于網(wǎng)絡(luò)入侵檢測,首先對KDD99進行預(yù)處理,嘗試針對特征“service”予以合并,并且稀疏特征,結(jié)果發(fā)現(xiàn)redi、ntpu、urhi以及urhi相對應(yīng)標(biāo)簽均屬于normal,故而能夠?qū)⑸鲜鏊膫€標(biāo)簽予以合并。通過One-hot編碼來針對離散型特征予以處理:在針對離散型特征予以數(shù)字化處理的過程中,此時的算法方能夠進行處理,如若某個特征包含三種值,即藍、紅和綠,假如編碼是“0”、“1”以及“2”,則“0”和“1”之間對應(yīng)距離則是1,而“0”和“2”之間對應(yīng)距離則是2,存在大小關(guān)系,然而對于原屬性值紅綠藍而言,則不存在大小區(qū)分。通過隨機森林來針對特征值進行提取,借助Xgboost、Adaboost以及GBDT算法來針對訓(xùn)練數(shù)據(jù)集,然后用測試集進行預(yù)測,具體流程如圖1所示。
圖1 基于boosting的入侵檢測模型
本文選用召回率與準(zhǔn)確率作為評價入侵檢測模型的指標(biāo),從不同的角度對基于Boosting集成學(xué)習(xí)算法的入侵檢測模型進行評估,評價指標(biāo)的計算公式如下:
公式中的TP表示預(yù)測結(jié)果和實際結(jié)果同時攻擊的樣本數(shù)。TN代表預(yù)測結(jié)果和實際結(jié)果都死正常的樣本個數(shù),F(xiàn)P指的是將原本屬于正常類型識別成為攻擊型樣本數(shù),F(xiàn)N指的是將原本屬于攻擊型識別成為正常樣本對應(yīng)個數(shù)。
借助GBDT、Xgboost以及Adaboost來處理經(jīng)過KD999數(shù)據(jù)集處理過后的數(shù)據(jù),進而構(gòu)建模型。具體方法步驟參見如下:
(1)采取5折交叉驗證的方式處理試驗數(shù)據(jù)。并且將獲得數(shù)據(jù)劃分成為數(shù)量相同且不重復(fù)的五個部分,經(jīng)過分割以后對于各數(shù)據(jù)樣本均包含五個不同類別。
(2)借助四份數(shù)據(jù)來針對分類器構(gòu)建模型,剩余1份數(shù)據(jù)則用于驗證召回率以及準(zhǔn)確率。針對四種不同分類器構(gòu)建模型分析,重復(fù)五次。
(3)選取5次建模結(jié)果平均值,進而獲得對應(yīng)評價指標(biāo)。
上述4種分類器對應(yīng)分類準(zhǔn)確率參見表2內(nèi)容。
表2 4種分類器的分類準(zhǔn)確率結(jié)果
由表2可以觀察到,GBDT模型相比Ada?Boost模型、Xgboost模型而言,在U2R、normal、Dos以及probe等積累樣本的分類準(zhǔn)確率方面優(yōu)勢更加顯著,即便Xgboost模型相比GBDT模型要差,但是顯著優(yōu)于隨機森林。
由表3可以觀察到,一般GBDT模型對應(yīng)召回率維持在80%水平,但是總體上優(yōu)于隨機森林模型、AdaBoost以及Xgboost三種模型,并且隨機森林模型在召回率方面基本保持一致,故而可以在識別數(shù)據(jù)里面存在的異常樣本方面,GBDT模型更加合適。
表3 4種分類器的分類召回率結(jié)果
在本文中,筆者將Boosting算法作為研究目標(biāo)對象,并且針對三種不同類型機器學(xué)習(xí)算法進行了對比分析,同時針對三種不同機器學(xué)習(xí)算法對應(yīng)數(shù)學(xué)原理進行了論述,借助試驗對比了Xg?boost,AdaBoost,GBDT在KDD999準(zhǔn)確率以及召回率上的表現(xiàn)。Boosting算法比隨機森林算法更具優(yōu)勢。在進行網(wǎng)絡(luò)入侵檢測方面,GBDT和Xgboost比AdaBoost更具優(yōu)勢。對于Boosting算法而言,在集成學(xué)習(xí)方面具有顯著優(yōu)勢特點,在今后的研究中,將采用真實的網(wǎng)絡(luò)入侵流量進行研究,進一步的運用在實際網(wǎng)絡(luò)異常檢測過程中。