肖展鵬,袁宇昂,楊淳,翟士洋,肖迎元
(天津理工大學計算機科學與工程學院,天津 300384)
如今網絡應用正在不斷地發(fā)展,隨著越來越多創(chuàng)新性的應用模式和需求的涌現[1],互聯網縱深方向飛速發(fā)展的同時也呈現出諸多安全問題。因此,網絡管理者通過對網絡流量進行準確的安全性檢測可以及時有效地發(fā)覺網絡異常,從而為阻斷網絡異常行為提供決策依據,并為網絡安全的管控提供技術支持和保障[2]。機器學習是人工智能研究領域的核心課題之一,具有深刻的理論內蘊,廣大應用領域獲取和處理知識的重要技術來源[3]。將機器學習分類算法應用在網絡數據流異常檢測上,不僅為網絡數據流異常檢測提供了新的方向,同時也促進了更多機器學習算法的更新與運用[4]。
Tavallaee等研究人員于2009年針對KDD99數據集[5],提出了一個改進版本,并名為NSL-KDD[6]。它仍然基于KDD99中提供的特征,并使用了更為可靠的數據集樣本,解決了KDD99中存在的一些歷史遺留問題。首先,訓練集和測試集中都不再包含重復冗余的流量記錄,因此分類器在訓練的時候不會對重復出現的記錄更加重視,在評估分類器表現的時候不會出現重復的記錄。其次,訓練集與測試集中的分部更為合理,這樣就能減少數據預處理的工作量,與此同時分類器的評估結果將具有可比性和一致性[7]。NSL-KDD數據集中每一個數據樣本(即一個網絡連接)用41個特征以及一個標簽來描述[8],圖1展示的是一些數據樣例。
圖1 部分數據樣例
本文的分類模型構建過程如下:首先將收集到的網絡流量數據樣本進行數據預處理操作,然后通過基于CART決策樹的RFE算法進行特征選擇,得到不同攻擊種類的特征子集;之后使用帶有網格搜索法得到的超參數的CART決策樹模型進行訓練;最后使用建立好的模型進行網絡流量分類。下面具體探討分類模型的設計要點。
該部分主要負責對原始網絡流量數據進行清洗。之前我們介紹了著名的網絡異常流量數據集(NSL-KDD)是一個數據量較大的數據集,且以存儲于CSV文件格式中,為了能更高效便捷地處理這樣龐大的數據集,我們必須使用一種新的數據結構,圖2展示的是scikit-learn中的輸入數據表現形式[9],其中N為樣本數量,D為特征數量,X為特征矩陣,Y為標簽向量。
圖2 scikit-learn 中的數據格式
在NSL-KDD數據集中還存在有離散型的文本特征,帶有這樣特征的數據是不能直接被scikit-learn框架中的模塊進行處理的,所以我們將這些類別型的離散特征使用獨熱編碼進行量化操作。同時,由表1可以觀察到訓練集和測試集的特征種類不一致,這會影響最后模型的準確率,所以我們對量化后缺失的特征集進行了填補操作。
表1 分類型特征子類型數量統(tǒng)計
由于NSL-KDD數據集是按照具體的攻擊手段進行標簽的且標簽類型為文本型,所以我們需要按照表2對不同的攻擊方式進行分類并對不同攻擊類型進行量化。
基金項目:國家級大學生創(chuàng)新訓練項目 (批準號:201810060004)
表2 攻擊方式劃分
因為在NSL-KDD中不同特征具有不同的數量級和量綱,若直接使用原始數據進行建模,就會出現重點突出數值較高的特征在分類器中的作用的情況,使得結果的可靠性降低,所以我們要對數據進行標準化。本文采用的是基于Z-Score的標準化方法[10],通過Z-Score公式:
將不同量級的數據統(tǒng)一轉化為無單位的Z-Score分值,即其結果均值為0,標準差為1,保證數據之間的可比性,其中x為觀測值,μ為總體平均值,σ為總體標準差。
該部分主要對四種攻擊類型的進行特征選擇。我們首先使用特征選擇方法中的Filter方法[11],通過計算每項特征的標準差并將結果作為特征重要程度的評判標準,標準差的公式如下:
如果某一特征的標準差低,則說明該特征大部分的取值都相同,進而說明該特征的重要程度不大,所以我們可以對這類特征進行剔除。表3展示了標準差最低的10項特征及結果,我們對這10項特征進行剔除操作。
表3 標準差最低的十項特征
接下來我們主要使用RFE(Recursive Feature Elimination,RFE)算法對每種攻擊方式進行特征選擇,RFE算法是一種尋找最優(yōu)子集的貪心算法,其核心思想是通過預定的基模型不斷建模,并選出最好的(向前選擇)特征,將選出的特征單獨存放,并在剩余的特征中重復此過程。本文采用的是基于決策樹算法的RFE算法,并使用基尼系數作為決策樹的評判指標,對每種攻擊類型的循環(huán)選取13個最優(yōu)特征,表4展示的是使用RFE算法對不同攻擊類型所選出的特征子集。
表4 使用RFE 算法對不同攻擊類型進行特征選擇的結果
由于兩個特征相關性越強,則說明兩個特征對分類器起的作用基本一樣,可以認為其中之一屬于冗余特征,所以需要通過合并或刪除來減少冗余的特征。在得到不同攻擊種類的特征子集后,我們還需要保證特征子集中的特征之間為弱相關性。皮爾森相關系數[12](Pearson Correlation Coefficient,PCC)是一種用于衡量兩個變量相關程度的統(tǒng)計量。假設有兩個變量(X,Y),其皮爾森相關系數Pearson(X,Y)的定義如下:
圖3 合并DoS 類型中冗余特征前(左)后(右)的混淆矩陣
其他攻擊類型按照上述方法對各自的特征子集進行特征剔除,其中Probe和R2L攻擊類型的特征子集中由于沒有出現強相關性的特征組,所以不需要進行特征提出操作,其余攻擊類型所需要剔除的特征項如表5所示。
該部分主要實現利用網格追蹤法確定的最佳超參數來構建CART決策樹模型[14]。超參數是在模型構建之前設置的參數,而不是經過模型訓練得到的參數,在決策樹中設置超參數相當于對決策樹進行“預剪枝”,設置超參數可以有效地預防模型過擬合現象的發(fā)生,從而增加分類器的泛化能力。scikit-learn的model_selection模塊中提供了一種自動確定最佳參數的方法:GridSearchCV[15],其工作原理就是在用戶規(guī)定的參數范圍內,通過不斷循環(huán)遍歷所有可能的參數組合,按照預先設置好的評分機制返回所有參數組合中評分最高的組合。同時,為了避免初始數據的劃分對結果產生的影響,需要采用交叉驗證的方式來減少偶然性。GridSearchCV可以保證在指定的參數區(qū)間內找到最佳的參數,但是由于需要暴力搜索所有的參數組合,使得整個過程非常地耗時。
表5 需要剔除的強相關性的特征項
首先,我們先指定參數的取值范圍,我們將決策樹中一些重點的超參數的范圍裝入一個參數矩陣中,為之后GridSearchCV方法提供網格范圍。表6展示的是相關超參數的取值范圍以及存放形式。
表6 GridSearchCV 參數矩陣的取值范圍
之后,我們調用GridSearchCV方法,以默認參數的決策樹方法為基礎,使用5-折交叉驗證,并按照之前參數矩陣設置的范圍對四種攻擊類型進行網格遍歷。表7展示的是四種攻擊種類所確定的CART決策樹的超參數。
表7 四種攻擊類型的CART 決策樹的超參數
本文所使用的是分類與回歸樹算法(Classification And Regression Tree,CART),該算法采用的是最小Gini系數對內部節(jié)點的分裂屬性進行選擇。CART算法根據特征的取值是離散值或連續(xù)值,生成的決策樹可以相應的分為分類樹和回歸樹,由于本次研究將CART算法用于分類問題的研究,所以采用的是分類樹。本課題的分類樹形成的步驟如下:
(1)首先設置決策樹算法的超參數。
(3)選取Gini系數最小的特征作為根節(jié)點的分裂特征,同時將該最小Gini系數作為該離散型特征的Gini系數,即:
將除空集和全集外的樣本集按照每種離散特征取值的可能子集進行劃分,假設某種特征有n種取值,則其有效子集為2n-2種。
(4)對根節(jié)點的分裂特征對應的兩個樣本子集S1和S2,遞歸的采用步驟2和步驟3相同的方法建立樹的子節(jié)點,如此進行循環(huán),直至所有子節(jié)點中樣本屬于同一特征或沒有可以選為分裂特征的特征或到達某項參數預先設置的閾值為止。
本章主要對上一章中建立的CART決策樹模型對測試集中的樣本數據進行預測,并返回預測結果及預測概率。然后,利用多種針對分類問題的評估方式對決策樹算法得出的模型進行效果評估。此外,我們使用邏輯回歸算法訓練的模型作為基準模型以驗證本文所實現的模型的優(yōu)越性,圖4展示的是CART決策樹模型和邏輯回歸模型關于四種攻擊種類的各項分類評估分數的對比圖。
圖4 CART 決策樹模型和邏輯回歸模型關于四種攻擊種類的各項分類評估分數的對比圖
通過上面幾種評估指標的對比,我們可以發(fā)現CART決策樹模型可以對新的網絡流量進行較好的分類,且相較于邏輯回歸模型總體來說有較大的提升,進而證明本課題實現的CART決策樹模型具有一定的可用性和魯棒性。
本次研究雖然完成了預期的研究內容,但是對于模型的設計以及實驗結果來說仍有很大的提升空間,比如在模型實現過程中,沒有考慮更多其他的機器學習算法,比如一些集成學習方法,還包括近幾年流行的深度學習算法等,因此在優(yōu)化模型性能,減少模型參數和減少運算量的問題上,仍然可以做更進一步的研究。