丁龍斌,伍忠東,蘇佳麗
(蘭州交通大學 電子與信息工程學院,蘭州 730070)
入侵檢測是網(wǎng)絡(luò)安全技術(shù)的重要組成部分,其通過對網(wǎng)絡(luò)上的各種信息進行收集和分析來檢測各種入侵行為。隨著網(wǎng)絡(luò)的普及和網(wǎng)速的提升,網(wǎng)絡(luò)攻擊行為日益增多,攻擊方法不斷更新,傳統(tǒng)的智能化檢測技術(shù)難以取得期望的成效[1]。
近年來,鑒于深度學習在任務(wù)分類、回歸學習等方面的優(yōu)越性能[2],研究人員提出了多種基于深度學習的入侵檢測算法。傳統(tǒng)的深度模型多是全連接網(wǎng)絡(luò),當網(wǎng)絡(luò)較深時,存在參數(shù)多、耗時長、易過擬合等缺點?;诰矸e神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)的入侵檢測方法與SVM、決策樹、k-近鄰等傳統(tǒng)機器學習算法相比,在性能上取得了顯著的提升。CNN的鏈接和參數(shù)較少,易于訓練,其泛化能力較好并且能夠提取更深層的細微特征[3-4]。然而,CNN在實際應(yīng)用中需要大量帶有標簽的數(shù)據(jù),使工作量大幅增加,同時,CNN在處理高維數(shù)據(jù)時,需要使用高維卷積核進行卷積運算,計算復雜度高,耗時長[5-6]。此外,雖然深度神經(jīng)網(wǎng)絡(luò)的參數(shù)比傳統(tǒng)深度模型少,但是仍有許多超參數(shù)(如節(jié)點數(shù)、層數(shù)、學習效率等),需要花費大量時間進行調(diào)試。
集成學習通過不同算法的組合,將傳統(tǒng)的智能算法或者深度學習算法設(shè)計為多個弱分類器,然后統(tǒng)籌分類器群的分類策略,以改善算法的性能,集成學習具有穩(wěn)健性強、容錯率高等優(yōu)點[7]。決策樹(Decision Tree,DT)是集成學習常用的基分類器,其不依賴于線性或非線性分類,只關(guān)心數(shù)據(jù)樣本之間的信息增益,這一特點使其在分類問題上具有天然優(yōu)勢。隨機森林(Random Forests,RF)是決策樹的集成學習方法,其繼承了決策樹的分類優(yōu)勢和高容錯的特點,在大量分類回歸問題中具有比SVM、k-近鄰等傳統(tǒng)深度學習算法更加優(yōu)異的表現(xiàn)。然而,集成學習在提高魯棒性和準確率的同時,并不能挖掘數(shù)據(jù)中更深層次的抽象信息,這也是限制其性能的因素之一。
本文針對CNN入侵檢測算法復雜度高、耗時長的缺點,提出一種基于集成深度森林(Ensemble Deep Forests,EDF)的入侵檢測算法。綜合CNN表征學習的優(yōu)勢和傳統(tǒng)集成學習高容錯的特點,在類似于CNN的級聯(lián)模型中引入收斂條件,使其能夠根據(jù)復雜度自適應(yīng)地調(diào)整模型的深度。同時,使用森林層代替卷積層和全連接層,以簡化模型結(jié)構(gòu),降低計算復雜度。
決策樹是通過分析對象屬性和對象類別的關(guān)系而建立的樹狀圖,其分支代表預(yù)測方向,葉子節(jié)點表示最終預(yù)測結(jié)果[8]。決策樹是一種典型的解釋型算法,可以根據(jù)不同的對象類別將數(shù)據(jù)分為不同的類,每個類中的數(shù)據(jù)都具有某種同一性[9]。決策樹的分類準確性可以用信息增益或基尼指數(shù)衡量,為獲取每個決策的最大信息增益,定義決策樹的目標函數(shù),如式(1)所示:
(1)
其中,f為數(shù)據(jù)特征,Dp和Dj分別為父節(jié)點和第j個子節(jié)點,I為不純性度量,Np為父節(jié)點的樣本總數(shù),Nj為第j個子節(jié)點的樣本數(shù)目。為了計算簡便并減少搜索空間,決策樹一般使用二分樹,此時父節(jié)點分出2個子節(jié)點Dleft和Dright,代入式(1)即可得到二分決策樹的目標函數(shù),如式(2)所示:
(2)
其中,I(Dleft)和I(Dright)分別為左右節(jié)點的不純性度量,Nleft和Nright為左右節(jié)點的樣本數(shù)量。不純性度量是評估分裂節(jié)點前后信息增益的參數(shù),可以由信息熵函數(shù)得出,如式(3)所示:
(3)
其中,p(i|t)表示節(jié)點t中樣本類別為c的概率。熵函數(shù)定義了樹中樣本與類別的相關(guān)信息增益,增益越大表示樣本屬于該類別的概率越高,因此,優(yōu)化熵的最大值即可得到最優(yōu)決策。由式(3)可知,在樣本類型確定即概率為1時,信息熵為0,而在均勻分布,即概率為50%時,信息熵取最大值1,表明熵策略盡可能地最大化決策樹中的互信息。
在決策樹算法中,首先遍歷每個特征屬性,并將熵增益最大的屬性作為子節(jié)點的劃分依據(jù),然后對子節(jié)點進行重復迭代,直到分裂出的節(jié)點唯一。決策樹算法如算法1所示[10]。
算法1決策樹算法
輸入數(shù)據(jù)樣本集D,屬性集A
1.While True:
2.TreeGenerate(D,A):
3.生成節(jié)點node
4.If D中樣本全屬于同一類別C:
5.將node標記為C類葉節(jié)點
6.Return
7.If 屬性集A為空或D中所有樣本屬性值相同:
8.將node標記為最多類
9.Return
10.從A中選取最佳劃分屬性a*
11.For a in a*:
12.為node生成一個分支,令Dv表示D中屬性為a*的a的集合
13.If Dv為空:
14.Continue
15.Else:
16.TreeGenerate(Dv,A
集成學習通過合并弱分類器,得到分類性能更加優(yōu)越和穩(wěn)健的強分類器,從而有效減小過擬合,提升分類器準確率。集成學習分類算法的組合方式有2種,分別為Bagging和Boosting。Bagging是在總樣本中隨機抽取不同的樣本來訓練各個分類器,且可通過并行方式進行訓練。Boosting將全部的樣本送入每個分類器,在分類器輸出后依據(jù)錯判率更新樣本的權(quán)值,然后通過擬合權(quán)值殘差得到最終模型。
RF是一種Bagging集成學習方式,在分類回歸領(lǐng)域有著廣泛的應(yīng)用[11]。RF通過Bagging方式生成多組決策樹,從而得到不同的分類策略,然后執(zhí)行判決算法(如取預(yù)測值期望),以達到綜合所有分類策略、改善分類器性能的目的。圖1給出RF決策方法的示意圖,假設(shè)回歸的輸出向量長度為3,隨機森林首先訓練n組決策樹得出每組的預(yù)測概率,然后對n組輸出概率求均值,得到隨機森林的最終輸出[12]。
圖1 隨機森林決策方法Fig.1 Decision method of random forests
集成深度森林利用多個RF構(gòu)成一個森林層,然后通過級聯(lián)形成層間連接。每一層的輸出類向量為一組預(yù)測值,使用測試集判定該層模型是否滿足收斂條件(如準確率、循環(huán)次數(shù)等),若不滿足則將輸出的類向量與初始訓練數(shù)據(jù)相連接,以此作為下一層的輸入[13]。深度森林(Deep Forests,DF)模型如圖2所示,samples為預(yù)處理后的數(shù)據(jù)向量,輸入第1個森林層后,4個森林分別估計所有樣本的類別概率,然后將其作為輸出向量與原始樣本數(shù)據(jù)進行拼接,并作為下一層的輸入向量,直至達到預(yù)設(shè)的循環(huán)次數(shù)或收斂條件為止。最后,對輸出層的向量求均值,將輸出概率最大的類別作為預(yù)測的樣本類別。
圖2 DF級聯(lián)模型示意圖Fig.2 Schematic diagram of DF cascade model
類比CNN的網(wǎng)絡(luò)結(jié)構(gòu)、特征表示方法和表征學習方法,EDF使用RF層代替CNN的隱藏層和全連接層,構(gòu)建深度森林網(wǎng)絡(luò)EDF[14]。由于RF的超參數(shù)少且對參數(shù)設(shè)置不敏感,其在小規(guī)模數(shù)據(jù)和大規(guī)模數(shù)據(jù)上都有良好的性能,不需要復雜的卷積運算,在實驗過程中,其訓練時間、調(diào)參難度和測試集識別率與深度神經(jīng)網(wǎng)絡(luò)相比極具競爭力。
本文將DF應(yīng)用到入侵檢測中,提出EDF算法。該算法使用2個特殊的森林構(gòu)建森林層,使用Bagging集成方式擴展森林層,使用ending-to-ending的方法合并上層輸入與下層輸出,并將其作為新的輸入數(shù)據(jù),然后分別使用交叉驗證和袋外估計方法預(yù)測每一層的輸出概率,EDF學習流程如圖3所示。由圖3可知,每一層使用4個森林節(jié)點,其中包含RF和極限樹(Extra Trees,ET)森林2種森林模型。DF模型的深度可以由收斂條件控制,而深度神經(jīng)網(wǎng)絡(luò)需要人為設(shè)置深度。由于DF模型的深度自適應(yīng),因此EDF算法適用于不同規(guī)模的數(shù)據(jù)集。
圖3 EDF算法流程Fig.3 Procedure of EDF algorithm
本文實驗過程包括數(shù)據(jù)預(yù)處理、分類器算法設(shè)計、結(jié)果分析3個部分。實驗平臺為CPU Intel i7-7700Q,Python3.6.5。
本文實驗采用NLP-KDD入侵檢測數(shù)據(jù)集,該數(shù)據(jù)集包含KDDtrain+、KDDtest+、KDDtrain-20percent和KDDtest-21等多組數(shù)據(jù),其中KDDtrain+含有125 793條數(shù)據(jù),按攻擊類型可分為5類,按攻擊方式可分為23種,共41種特征。KDDtrian-20percent為KDDtrain+的子集,包含25 192條數(shù)據(jù)[15-17]。圖4給出KDDtrain+和KDDtest+中樣本攻擊類型的分布情況[12]。
圖4 KDDtrain+和KDDtest+的數(shù)據(jù)類分布Fig.4 Data class distribution of KDDtrain+ and KDDtest+
數(shù)據(jù)預(yù)處理的目的是去除數(shù)據(jù)噪聲、降低數(shù)據(jù)維度、減少訓練時間以及提高運算性能,主要步驟包括畸形樣本處理、數(shù)據(jù)分類與序數(shù)數(shù)據(jù)編碼、數(shù)據(jù)尺度縮放以及特征選擇與提取[18]。
數(shù)據(jù)集中包含3個分類數(shù)據(jù)特征,分別為service、flag和protocol_type。其中,service有72種標識,flag有11種標識,protocol_type有3種標識。對這3條特征標識進行二進制化(LabelBinarizer)處理,形成83條新的特征并與其他數(shù)據(jù)特征連接,得到122種特征的無標簽數(shù)據(jù)集。
數(shù)據(jù)尺度縮放方法包含對數(shù)尺度變換、標準化、歸一化和中心化等,本文選擇數(shù)據(jù)標準化方法,具體如式(4)~式(6)所示:
(4)
(5)
(6)
其中,μf、σf為一組特征數(shù)據(jù)中的均值和標準差,fi為特征中的第i組數(shù)據(jù)。
特征選擇和提取的目的是去除冗余無關(guān)特征,從原始特征空間中選取最優(yōu)特征子集,使其擁有比原始特征空間更好的分類性能并縮短數(shù)據(jù)處理所用的時間。特征選擇和提取的主要方法包括高維空間映射(例如核函數(shù))、主成分分析(Principal Component Analysis,PCA)、線性判別分析(Linear Discriminant Analysis,LDA)等。其中,LDA屬于監(jiān)督學習,需要用到標簽數(shù)據(jù),而入侵方式與協(xié)議類型、所耗費時間線性相關(guān),不存在高維度關(guān)系,因此不需要高維空間分析,PCA屬于無監(jiān)督學習,可以達到降低維度和信息降噪的目的[19-20]。
本文使用PCA將高維數(shù)據(jù)映射到另一個低維子空間中,子空間的長軸(即主成分)代表數(shù)據(jù)變化率最高的特征。此外,PCA可以反映特征的重要程度和相關(guān)程度,進而達到特征選擇的目的。具體過程如算法2所示,其中m表示選擇的特征數(shù)量[13]。
算法2PCA算法
1)數(shù)據(jù)特征x1,x2,…,xn標準化并中心化。
2)計算特征的協(xié)方差矩陣Σ。
3)解協(xié)方差矩陣得到特征向量v1,v2,…,vn和特征值λ1,λ2…,λn。
4)選取前m個最大特征值和其對應(yīng)的特征向量。
5)由m個特征向量構(gòu)建映射矩陣W。
6)使用映射矩陣W將原數(shù)據(jù)映射至m維特征子空間。
在數(shù)據(jù)分類過程中,當類別較少而使用的特征較多或者模型過于復雜時,會出現(xiàn)過擬合現(xiàn)象,具體表現(xiàn)為在訓練集上準確率高而在測試集準確率低。為減少過擬合的影響,本文使用基于相關(guān)性的特征選擇(Correlation-based Feature Selection,CFS)算法估計每個特征對標簽的重要程度,從而確定最優(yōu)特征數(shù),圖5給出重要程度最高的25種特征的重要度。在圖5中,25組特征重要度之和為90.27%,而其特征數(shù)只占總數(shù)的20.22%,因此選擇少量最重要的特征作為訓練集,可在不影響分類性能的同時大幅減少計算量。
圖5 特征重要度分布Fig.5 Distribution of feature importance
本文實驗使用grid-search方法在(1,56)中確定最優(yōu)特征數(shù)(前56組特征重要度之和達99.90%),最終確定的最優(yōu)特征數(shù)為15,入侵檢測框架如圖6所示。
圖6 EDF入侵檢測方法框架Fig.6 Framework of EDF intrusion detection method
將EDF與CNN進行對比,在實驗平臺、特征數(shù)量相同的條件下,分別構(gòu)建有3層隱藏層的CNN模型和有3層Forest層的EDF模型,優(yōu)化2種模型的參數(shù),使其達到最優(yōu)。使用上述2種模型對數(shù)據(jù)集進行分類預(yù)測,以評估模型性能,每種模型在相同條件下進行10次實驗,取平均值作為最終結(jié)果。
2.2.1 實驗方案
本文的實驗方案如下:
方案1在KDDtrain+和KDDtest+數(shù)據(jù)集上比較EDF和CNN的性能,并與其他分類器[12,14-15]進行比較。評估指標為在Normal、Anormaly標簽下的二分類準確率和模型訓練時間。
方案2在KDDtrain+和KDDtest+數(shù)據(jù)集去除畸形樣本后比較EDF和CNN的性能,評估指標為數(shù)據(jù)集總體的分類(4類攻擊和Normal類)的準確率(accuracy)、精確率(precision)、召回率(recall)和攻擊類的F1值,以及在5種樣本類型上各自的準確率和模型訓練時間。
2.2.2 參數(shù)設(shè)置
EDF中每層的森林均使用Grid Search方法搜尋最優(yōu)參數(shù),表1給出最終的參數(shù)設(shè)置。CNN算法使用3層卷積網(wǎng)絡(luò),每層參數(shù)配置如表2所示。
表1 EDF算法參數(shù)配置Table 1 Parameter configuration of EDF algorithm
表2 CNN算法參數(shù)配置Table 2 Parameter configuration of CNN algorithm
CNN多分類任務(wù)的激活函數(shù)為Softmax,二分類任務(wù)使用sigmoid算法,并通過Adam算法進行優(yōu)化,利用交叉熵估計損失。其中,Adam算法的學習效率設(shè)為0.000 1。CNN模型的迭代輪數(shù)(epoch)設(shè)置為40,批量梯度更新數(shù)量(batch)設(shè)為經(jīng)典值100。
2.2.3 評價標準
本文采用分類準確率、精確率、召回率和攻擊類的F1值作為評價指標,具體如式(7)~式(10)所示:
(7)
(8)
(9)
(10)
其中,NTP表示模型預(yù)測正確的攻擊樣本數(shù),NFP表示預(yù)測為攻擊類而實際為正常類的樣本數(shù),NTN表示模型預(yù)測正確的正常類樣本數(shù),NFN表示將攻擊類預(yù)測為正常類的樣本數(shù)。
2.3.1 方案1結(jié)果分析
表3給出2種算法的入侵檢測性能對比。可以看出,EDF算法的Normal類分類準確率比CNN算法高5.16%,而在Anormaly類上比CNN算法低2.46%。這是因為EDF算法在預(yù)測負向類(Normal)的樣本時誤報率較低,而CNN算法在預(yù)測正向類(Anormaly)時漏報率低??傮w而言,兩者的準確率和F1值相差不大,而在訓練時間方面,EDF算法比CNN算法少74.86 s,具有明顯優(yōu)勢。
表3 2種算法的入侵檢測性能對比Table 3 Comparison of intrusion detection performancebetween two algorithms
表4給出EDF算法與其他入侵檢測算法的檢測準確率對比。其中,RF算法使用weka的經(jīng)典參數(shù)進行實驗,其他算法的數(shù)據(jù)來自文獻[12,14-15]??梢钥闯?EDF算法和CNN算法的檢測準確率優(yōu)于樸素貝葉斯(NB)、多層感知機(MLP)和支持向量機(SVM)等傳統(tǒng)機器學習算法,但比J48決策樹(J48)、樸素貝葉斯樹(NBTree)和隨機樹(RandomTree)算法低2%左右。這是因為J48、NBTree和RandomTree算法都只有單一的特征表征,同種算法每次訓練得到的分類數(shù)據(jù)有巨大差異,導致其F1值較小,沒有獲得完全的數(shù)據(jù)特征,在實際應(yīng)用中穩(wěn)定性較差。圖7給出3種算法的F1值對比。可以看出,從決策樹算法到隨機森林算法,再到EDF算法,隨著算法集成度的提高,其F1值不斷上升,其中,EDF算法的F1值分別比決策樹算法和隨機森林算法高2%和1%。
表4 KDDtest+上的檢測準確率對比Table 4 Comparison of detection accuracy on KDDtest+
圖7 3種算法的F1值對比Fig.7 Comparison of F1 values between three algorithms
2.3.2 方案2結(jié)果分析
表5給出實驗方案2的預(yù)測準確率和模型訓練時間對比。
表5 2種算法在五分類任務(wù)的檢測性能對比Table 5 Comparison of detection performance oftwo algorithms in five classification tasks
可以看出,在Normal、DoS和Probe類型上的預(yù)測準確率非常接近,而在R2L和U2R類型上的準確率相差較大且總體不高。這是因為在訓練集中R2L和U2R的樣本數(shù)量非常少,分別只有995和52,只占總體樣本數(shù)量的0.79%和0.04%,所以算法很難學習得到這2類數(shù)據(jù)的特征,很容易被誤分為具有大量樣本的其他類。同時,EDF算法比CNN算法的訓練時間少52 s,約節(jié)省了55.5%的耗時,表明EDF算法在降低運算復雜度方面具有明顯優(yōu)勢。
另外,比較實驗方案1和方案2的訓練時間可知,EDF算法的訓練時間增幅較大,而CNN算法幾乎不變,表明EDF算法的運算復雜度受多分類的影響較大。這是因為在訓練時,每個EDF算法的網(wǎng)絡(luò)節(jié)點都受多分類運算的影響,而CNN算法只有最后的全連接層和輸出層進行多分類運算,隱藏層的特征映射計算幾乎不變。但是,CNN算法在進行多分類任務(wù)時為了保持訓練的精確度,需要更多卷積層來提取細微特征,每層的濾波器數(shù)量保持不變或增加,其時間復雜度服從O(F2·K2),其中,F為特征數(shù)量,K為卷積核尺寸,而EDF算法的時間復雜度與層數(shù)線性相關(guān)。綜上所述,與CNN算法相比,EDF入侵檢測算法在保持檢測準確率的同時,降低了時間復雜度,提高了檢測效率。
本文提出一種基于集成深度森林EDF的入侵檢測方法。將DF應(yīng)用到入侵檢測中,利用2個特殊的森林構(gòu)建森林層,使用Bagging集成方式擴展森林層,通過ending-to-ending方法合并上層輸入與下層輸出,并將其作為新的輸入數(shù)據(jù)。在此基礎(chǔ)上,分別使用交叉驗證和袋外估計方法預(yù)測每一層的輸出概率。實驗結(jié)果表明,該算法的入侵檢測率與CNN算法相近,但其訓練速度遠高于CNN算法,能更好地解決當前網(wǎng)絡(luò)環(huán)境中數(shù)據(jù)量大而導致處理不及時、不準確的問題。下一步將解決如何確定最優(yōu)森林節(jié)點個數(shù)的問題,從而改進EDF算法,同時提高該算法在樣本不平衡數(shù)據(jù)集上的入侵檢測性能。