易琳,王欣
(中國民用航空飛行學院計算機學院,廣漢618307)
由于人們對于網絡接觸的愈來愈多,如何保證網絡中的安全成為人民關注的重點。現在網絡入侵檢測的相關技術已經逐漸成為在網絡安全的第一防線和重要手段。網絡入侵的技術越來愈多,針對網絡入侵相關檢測技術要求以及標準也在不斷提升。對于網絡入侵檢測技術而言,其首要任務便是將入侵檢測逐漸轉變成為分類問題以及模式識別兩個部分來進行處理。利用機器學習技術將網絡流量的特征行為劃分為正常流量和異常流量進行數據采集、預處理、建模和分類。現階段,針對網絡入侵相關檢測技術主要通過機器學習來完成,同時深度學習在檢測網絡入侵中的應用在不斷提升。當前,國內外關于此方面的研究大多處于基礎理論研究狀態,同時在體現結構以及相關技術方面獲得了一定成果。
機器學習中很多相關算法被廣泛用于網絡入侵檢測,常見的入侵檢測算法有很多,如KNN(K-nearest neighbor)。多種機器學習的算法結合的網絡入侵檢測方法可以適用于復雜的系統。文獻[1]創造性地提出了網絡入侵檢測相關模型;文獻[2]-[3]通過聚類的方法對流量進行分析;文獻[4]提出了通過蟻群算法旋轉神經網絡參數進而針對網絡入侵進行檢測的方法;文獻[5]主要通過自動編碼器來進行網絡入侵檢測;文獻[6]提出一種以機器學習為基礎的網絡端口掃描檢測技術;文獻[7]借助卷積神經網絡來展開入侵檢測,進而針對日志信息特征以及灰度圖進行提取,借助spark來針對日志信息進行處理,進而借助不斷迭代的方式來產生相應新特征,通過卷積來達到降噪目的;文獻[8]提出了以人工神經網絡作為基礎的網絡入侵檢測系統,降低了傳統方法的誤報率高的問題。
現階段,通過決策樹以及SVM等經典機器學習算法來處理海量數據以及高緯度數據,存在攻擊率檢測結果普遍偏低以及誤報率高等問題。而Boosting在處理大量數據時泛用性較好,可以有效的保證分類正確,提高檢測的精度。本文選擇Boosting算法對入侵進行檢測和識別,同時采用Boosting來針對樣本進行訓練Boosting算法訓練時間短,參數調整有獨特的優勢。進而將正則項添加到迭代函數里面,并且將其用于模型復雜度的控制當中。筆者首先介紹Boosting算法,進而以此算法為基礎,協同kdd99數據集來針對入侵檢測模型進行構建,最終達到特征工程以及數據預處理的目的。為了對Boosting的模型進行提升,使用熱編碼與隨機森林選擇特征相結合,實現參數的優化與特征的提取。最終實驗表明,和隨機森林算法進行相關比較,Boosting模型在分類正確率方面有明顯優勢,大大提升了網絡入侵的檢測效果。
Boosting算法是集成學習算法的一種,多個弱學習器相互組成Boosting算法,通過多個弱學習器的結果來進行結果預測,進而獲取相應的投票結果。在進行訓練過程中,針對各弱學習器予以訓練,核心要點便是關注錯分樣本。Xgboost、AdaBoost以及GBDT為Boosting相關的三大注意算法類型。
Adaboost將處理屬于同一的訓練集,此算法會應用到多種不同的弱分類器,然后將許多弱學習器,進行相對的組合,以便組合成為強學習器。根據每次訓練的結果,調整樣本的權值,將得到的新權值使用與后面的訓練器進行訓練,然后每次新增一個弱分類器,直至最終獲得最小錯誤率以及預先制定的相應最大迭代次數。
在Adaboost算法模型上,大體上分為3個步驟:
(1)對于各訓練樣本給予相同比例權重值。

(2)經過多輪迭代以后,然后利用權重分布Dm對數據集進行有針對性的學習,然后訓練,之后獲得基本分類器,m代表迭代了多少輪。

計算Gm(x)的誤差率:

針對Gm(x)的系數進行計算,am代表的是在最終分類器里面Gm(x)相應的重要程度:

對于權值分布進行更新,在之后的迭代進行使用。

Zt是規范化因子:

(3)組合各類弱分類器:

進而得到最終分類器:

作為一種以迭代疊加為基礎的決策樹算法,GBDT主要是將多個不同弱學習器予以組合,并且對應的預測結果當作是最終預測結果。GBDT算法模型具體步驟包含如下:
輸入訓練集{(x1,y1),(x2,y2),…,(xn,yn)},損失函數為L(y,f(x)),迭代m輪,m為迭代次數。
計算m輪的i個樣本殘差:

針對各節點相應最小損失函數進行計算,進而得到最佳的輸出值:

Rmj代表是第m棵樹所對應的一個葉子節點區域,j代表的也就是葉子節點數所對應的個數,θ代表的也就是初始常數,則本輪最終的算法模型::

Xgboost即 指 的 是eXtreme gradient boosting,此算法屬于梯度提升算法經過優化改進以后的算法。針對Xgboost對應預測模型可以通過如下式子來進行表示。

上述式子中K代表的是樹對應總個數,fk代表的是第k顆樹,yi代表的是樣本xi對應預測結果。
Xgboost代表的是實現了運算速度以及模型表現得平衡算法,在模型當中引入了復雜度,進而針對算法效率進行衡量,以此來防止模型過擬合。關于Xgboost目標函數可以表示成為模型復雜度+傳統損失函數。

上述式子里面i代表的是一個數據集合里面所對應得某個樣本i,m代表的是某個k棵樹所對應的數據總量大小,k代表的是所有k棵樹對應的數目,上述式子里面每一項都是代表損失函數,體現了損失函數是預測值和真實標簽之間所共同存在的差異。一般情況下,指的是經過調節以后對應得均方誤差rmse。第二項所要代表的是一個模型對應的數據復雜度,借助于該樹在模型中采取相應變換方式來對其進行表示:

其中γ和λ為人工設置的參數,T為葉子總數,w代表的是葉子節點對應分值為w的L2模平方。
Boosting集成算法,將多個弱學習算法結合,訓練出精度較高的強學習算法。本文使用KDD99中10%kddcup.data_10_percent作為訓練數據集。如今,網絡入侵檢測應用最為普遍的數據集為KDD99,在此數據集里面保證的特征數為44個,大體上包含五個標簽大類,即probe、nomal、u21、dos以及r2l。具體分類如表1所示。

表1 kdd99特征值
在數據集上運用交叉驗證,并用交叉驗證得到的平均準確率,平均召回比例作為模型中最終評價的指標[8]文中將常見的Boosting集成算法用于網絡入侵檢測,首先對KDD99進行預處理,嘗試針對特征“service”予以合并,并且稀疏特征,結果發現redi、ntpu、urhi以及urhi相對應標簽均屬于normal,故而能夠將上述四個標簽予以合并。通過One-hot編碼來針對離散型特征予以處理:在針對離散型特征予以數字化處理的過程中,此時的算法方能夠進行處理,如若某個特征包含三種值,即藍、紅和綠,假如編碼是“0”、“1”以及“2”,則“0”和“1”之間對應距離則是1,而“0”和“2”之間對應距離則是2,存在大小關系,然而對于原屬性值紅綠藍而言,則不存在大小區分。通過隨機森林來針對特征值進行提取,借助Xgboost、Adaboost以及GBDT算法來針對訓練數據集,然后用測試集進行預測,具體流程如圖1所示。

圖1 基于boosting的入侵檢測模型
本文選用召回率與準確率作為評價入侵檢測模型的指標,從不同的角度對基于Boosting集成學習算法的入侵檢測模型進行評估,評價指標的計算公式如下:

公式中的TP表示預測結果和實際結果同時攻擊的樣本數。TN代表預測結果和實際結果都死正常的樣本個數,FP指的是將原本屬于正常類型識別成為攻擊型樣本數,FN指的是將原本屬于攻擊型識別成為正常樣本對應個數。
借助GBDT、Xgboost以及Adaboost來處理經過KD999數據集處理過后的數據,進而構建模型。具體方法步驟參見如下:
(1)采取5折交叉驗證的方式處理試驗數據。并且將獲得數據劃分成為數量相同且不重復的五個部分,經過分割以后對于各數據樣本均包含五個不同類別。
(2)借助四份數據來針對分類器構建模型,剩余1份數據則用于驗證召回率以及準確率。針對四種不同分類器構建模型分析,重復五次。
(3)選取5次建模結果平均值,進而獲得對應評價指標。
上述4種分類器對應分類準確率參見表2內容。

表2 4種分類器的分類準確率結果
由表2可以觀察到,GBDT模型相比Ada?Boost模型、Xgboost模型而言,在U2R、normal、Dos以及probe等積累樣本的分類準確率方面優勢更加顯著,即便Xgboost模型相比GBDT模型要差,但是顯著優于隨機森林。
由表3可以觀察到,一般GBDT模型對應召回率維持在80%水平,但是總體上優于隨機森林模型、AdaBoost以及Xgboost三種模型,并且隨機森林模型在召回率方面基本保持一致,故而可以在識別數據里面存在的異常樣本方面,GBDT模型更加合適。

表3 4種分類器的分類召回率結果
在本文中,筆者將Boosting算法作為研究目標對象,并且針對三種不同類型機器學習算法進行了對比分析,同時針對三種不同機器學習算法對應數學原理進行了論述,借助試驗對比了Xg?boost,AdaBoost,GBDT在KDD999準確率以及召回率上的表現。Boosting算法比隨機森林算法更具優勢。在進行網絡入侵檢測方面,GBDT和Xgboost比AdaBoost更具優勢。對于Boosting算法而言,在集成學習方面具有顯著優勢特點,在今后的研究中,將采用真實的網絡入侵流量進行研究,進一步的運用在實際網絡異常檢測過程中。