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