方彬皓,黃 洪,2,周子云
(1.四川輕化工大學計算機科學與工程學院,四川 宜賓 644000;2.企業信息化與物聯網測控技術四川省高校重點實驗室,四川 宜賓644000)
從全球范圍來看,網絡空間安全形勢不容樂觀。繼早期的蠕蟲病毒之后,近年來又出現被稱之為APT(高級持續威脅)的新型網絡攻擊方式。頻繁出現的大規模網絡攻擊一方面證明了傳統安全防護技術的缺陷和不足,另一方面則期望著新一代網絡安全技術的出現。
國內外針對入侵檢測方法做出了許多研究[1]。文君[2]提出將機器學習中分類算法應用于入侵檢測,識別正常和異常信息。由于入侵檢測的特點,因此必須提高入侵檢測算法的準確度和效率。曹揚晨等[3]提出了基于隨機森林的入侵檢測模型。封化民等[4]提出了一種基于SMOTE結合梯度提升決策樹(GBDT)的入侵檢測模型。夏景明等[5]提出了一種改進的隨機森林入侵檢測系統。陳卓等[6]提出了一種以極限梯度提升樹(XGBoost)為分類器的入侵檢測模型取得了較好效果。曾昊[7]提出了一種集成分類器的入侵檢測系統。Yang等[8]針對傳統的機器學習算法在檢測未知攻擊方面表現不佳的問題,提出了一種變分自動編碼器與深度神經網絡(DNN)結合的異常入侵檢測方法,實現了使用深度學習方法從流量數據中檢測異常網絡流量的目標。SHEN等[9]提出了一種隨機子空間的集成方法,該方法將極限學習機(ELM)[10]作為基分類器。簡清明等[11]提出了一種基于粗糙集的特征選擇方法和支持向量機結合的入侵檢測方法。然而,文獻[2-7]、[9]雖然將機器學習、深度學習的技術應用于入侵檢測中,但未考慮篩選數據中無關的特征,文獻[8]雖然采用相關特征選擇技術,但是由于數據集中存在類別不均衡問題,檢測準確度都不夠高。文獻[11]也使用了特征選擇技術,但實驗是通過從數據集中隨機抽取部分實例形成訓練集和測試集,這樣得出的訓練集和測試集可能會丟失重要樣本,導致實驗結果存在隨機性,并且分析文中選取的數據集,得出存在著和文獻[8]同樣的類別不平衡問題,這也會導致檢測效果不佳。從上述分析可以看出,目前無論是機器學習還是深度學習的研究成果在檢測精度等方面還有待進一步提高。
通過總結上述模型的優缺點,為了提高入侵檢測系統準確率,本文提出了融合多重特征選擇和混合采樣的CatBoost 入侵檢測模型。由于機器學習方法中,基于樹的預測模型可以計算特征的重要程度用于消除不相關特征,并且為了增強選出特征的普適性,本文使用多種機器學習模型進行特征選擇,因此選取XGBoost、隨機森林(RandomForest)、極端隨機樹(ExtraTrees)、決策樹(DecisionTree)為基學習器,獨立的對數據集中的特征進行排序選取出重要特征,然后通過投票機制將4 個學習器篩選出的特征進行集成,通過多重特征共選取36個特征。采用SMOTEENN 混合采樣機制對CatBoost 算法進行改進,將其應用于入侵檢測分類當中以解決特征冗余和類別不平衡的問題,并檢測基于機器學習的入侵檢測系統的準確率。
1.1.1 嵌入法
特征選擇和算法訓練同時進行,被稱為嵌入法[12]。嵌入法首先需要訓練學習器,如隨機森林、GBDT、XGBoost 等,訓練后得到各個特征的權值系數,將權值系數從小到大進行排序選出最佳特征子集。其中,權值系數代表了特征對模型的貢獻程度。
嵌入法沒有一致的執行流程,不同的算法執行流程各異。其中最經典的嵌入式特征選擇算法是分類決策樹,特征選擇流程如圖1所示。

圖1 分類決策樹的特征選擇流程
1.1.2 投票機制
機器學習中最常用的結合策略就是投票法,對于分類任務而言,每個弱分類器給出自己的預測結果,再通過投票法得出結合后的最終結果。投票法在機器學習中也有不同方法,常見的是簡單投票法,包括相對多數投票法和絕對多數投票法。


CatBoost(Categorical Boosting)算法[13]是一種新型梯度提升樹算法,由梯度提升和分類特征相結合,非常適合用來解決分類問題且預測模型能擁有較高的分類精確度。該算法屬于GBDT 中的一種,是對GBDT的改進。
CatBoost 使用的基分類器為完全對稱樹,這種結構通過訓練使用較少的參數就能獲得較高的性能。在模型的構建中,主要可以劃分為兩個階段:其一是對GBDT 算法中梯度計算方式進行優化,改進了GBDT 算法在迭代過程中計算當前模型的負梯度值的方法,采用排序性提升方法,在每一步的迭代過程中對模型的梯度進行無偏估計,緩解模型的過擬合問題;其二是與GBDT 計算框架相同,確定葉子結點值。
CatBoost 算法優點:(1)能更好地處理類別型特征而無需在數據處理階段提前轉換,并且根據CatBoost官方文檔描述,不用在數據預處理階段對字符型數據進行獨熱編碼,為數據處理省去大量工作;(2)運用排序提升型方法,避免了GBDT 算法中的預測偏移問題。避免過擬合的同時顯著提升了運算速度。
本模型融合了多重特征選擇、SOMTEENN、CatBoost 算法解決使用機器學習進行網絡入侵檢測中特征冗余、類別不平衡問題。圖2 所示為本文所提出的入侵檢測模型結構,共包括5個模塊:數據收集模塊、數據預處理模塊、多重特征選擇模塊、混合采樣模塊、檢測分類模塊。

圖2 分類器模型
模型處理過程設計如下:
(1)收集數據集,得到訓練集T1和測試集T2。
(2)將訓練集T1和測試集T2數值歸一化、字符型特征數值化、標簽數值化,得到訓練集M1和測試集M2。
(3)使用多重特征選擇算法對預處理后的訓練集M1和測試集M2執行特征選擇,首先由每個基學習器獨立地篩選出重要特征子集Fi(其中i= 1,2,3,4),然后再基于投票法集成得到特征子集F。根據得到的特征子集F處理得到訓練集Q1和測試集Q2。
(4)對Q1執行SOMTEENN 混合采樣,首先對其執行SMOTE 過采樣得到Q'1,然后再對Q'1執行編輯最近鄰(Edited Nearest Neighbor,ENN)欠采樣得到最終混合采樣得到的訓練集Z1。
(5)使用Z1進行CatBoost分類器的訓練,由測試集Q2驗證訓練后的分類準確率、召回率、精確率、F1值。
1.1 節所提傳統的特征選擇算法的特征選擇過程及結果存在耗時長和篩選出的特征冗余度大等問題。耗時長會導致模型效率低等問題,冗余特征會使得一些分類器產生過擬合現象對分類的結果產生較大的影響。本文設計了一種多重特征選擇模型來解決當下單一的特征選擇算法無法非常準確地過濾掉冗余特征且耗時長的問題,如圖3所示。

圖3 多重特征選擇模型圖
根據選擇過程和學習器的不同組合方式,特征選擇算法種類可分為過濾式[14]、封裝式[15]、嵌入式和集成式[16]4 種。本文使用集成式特征選擇,即采用嵌入式中基于學習器的特征選擇方法構建4種特征選擇模型,再通過投票法進行特征選擇。
集成式特征選擇算法借鑒了集成學習的思想,通過訓練多個特征選擇方法,然后整合各個特征選擇方法的結果,來獲得比單個特征選擇方法更好的結果,本文所選用的特征選擇算法為XGBoost[17]、RandomForest[18]、ExtraTrees[19]、DecisionTree[20]。使用多種機器學習模型獨立地進行特征選擇,將每種模型得出的結果按照特征重要性從高到低地排序,從中選出對分類結果影響較大的特征,但是學習器在特征選擇過程中會存在部分結果不一致的情況,因此使用投票法將多種學習器的結果集成。改進的特征選擇方法具體步驟如下:
(1)對數據集T進行預處理。
(2)輸入預處理后的T,使用不同的學習器Ei(其中i= 1,2,3,4)獨立地進行特征選擇。
(3)篩選出不同學習器Ei(其中i= 1,2,3,4)的特征子集Fi(其中i= 1,2,3,4)。
(4)統計每個特征被選次數,使用投票法的思想將多次出現的重要特征選取出來。
(5)輸出特征選擇之后的特征子集F。
類別不平衡時會影響模型的輸出結果,此時需要對數據進行處理。過采樣和欠采樣是兩種常用手段,過采樣的代表方法為SMOTE[21],欠采樣則為隨機欠采樣和ENN[22],其中ENN 是一種聚焦于去除噪聲樣本的欠采樣方法。過采樣過分強調正比例數據,會放大正比例噪音對模型的影響,欠采樣丟棄大量數據,可能會導致模型預測效果降低。
為彌補上述分析中SMOTE 算法與ENN 算法的缺點,本文提出將兩者相結合的SOMTEENN 算法。SOMTEENN 算法首先對原始數據集執行SMOTE 過采樣算法,然后執行ENN欠采樣算法刪除示例。


運用式(4)對CatBoost 模型參數優化,使模型預測效果更好。根據經驗及CatBoost 官方文檔中的Parameter tuning 模塊對參數進行調優,主要選擇了3 個對學習器影響較大的參數進行調優,分別是iterations、depth、random_strength,而border_count 則選擇官方文檔中的最大推薦值256,由于CatBoost學習器可以根據迭代次數自動將learning_rate 調整至最佳,所以learning_rate 參數采用默認值。調整之后的參數見表1。

表1 CatBoost調優之后的參數
NSLKDD 數據集作為有效的基準數據集,是入侵檢測模型分析時最常使用的數據集之一,因此本文中從NSLKDD 訓練集中選出20%(共25 192 條數據)建立學習器模型,使用NSLKDD 的測試集(共22 544條數據)驗證模型效果,訓練集和測試集文件名分別為KDDTrain+_20Percent.txt、KDDTest+.txt。
表2詳細列出了攻擊劃分的類別及類別代表的含義。表3列出了實驗所用到的訓練集和測試集詳細的個數及各個類別在訓練集和測試集的分布情況。

表2 數據集攻擊類別

表3 數據集攻擊類別
本文進行實驗的軟件和硬件配置如下:操作系統為win10_64 位;處理器為Intel?CoreTM i5-7500 CPU@3.40GHz;內存(RAM)為16.00 GB(15.98 GB可用);編程環境為Python3.8.5。
本文研究多分類問題使用準確率(Accuracy)、精確率(Precsion)、召回率(Recall)、F1值作為算法的評價標準。

其中:TP表示正類判定為正類,FP表示負類判定為正類,FN表示正類判定為負類,TN表示負類判定為負類。
傳統的機器學習算法總是在優化算法本身,沒有考慮到特征冗余及類別不平衡問題,因此本文提出了多重特征選擇算法和混合采樣算法來解決這兩個問題。
本節首先展示執行多重特征選擇算法后的篩選結果。然后就多重特征選擇算法的執行前后給分類器帶來的影響展開討論,最后對比分析執行混合采樣算法后的樣本分布情況以及執行混合采樣算法前后給分類器帶來的影響情況進行分析,最后將本文模型和國內外一些模型進行對比。
3.3.1 多重特征選擇算法結果分析
NSLKDD 數據集中,每個樣本都包含41 維特征,其中的一些特征對最終的分類結果影響很小或者沒有影響甚至還會產生負面影響,因此需要對數據集進行特征選擇操作,篩選出重要特征、過濾掉無 關 特 征,主 要 用 到XGBoost、RandomForest、ExtraTrees、DecisionTree 4 種學習器,對每次選取的特征按重要性進行排序,得到4種特征排序的結果,投票選取4種學習器都認為重要的特征。
將特征進行編碼列于表4 中,多重特征選擇篩選結果見表5。在表4 和表5 中,原始NSLKDD 流量數據集共有41維特征,經過多重特征選擇算法篩選后保留了36維特征。

表4 NSLKDD數據集中的特征

表5 多重特征選擇篩選結果
選取未經特征選擇的CatBoost 算法與執行多重特征選擇的CatBoost 算法對比,結果如圖4 所示。從圖4 可以看出,它們的Accuracy、Recall和F1 指標數值差距較大,而Precsion指標幾乎相近。由此可見,數據集存在特征冗余、無效特征等問題,直接影響著最終結果,而多重特征選擇算法可以有效解決這些問題,提升檢測結果。

圖4 執行多重特征選擇前后結果對比
3.3.2 混合采樣算法結果分析
實驗采用SMOTEENN 混合采樣算法對數據集進行處理,為保證實驗真實有效,混合采樣算法僅對訓練集KDDTrain+_20Percent.txt 進行采樣,而不對測試集采樣,最終的采樣結果見表6。表6展示了采樣前與采樣后的數據,采樣前Probe 類約占9.00%、R2L 類約占0.82%、U2R 類約占0.004%。可以明顯看出,在采樣前訓練集存在不同類別的訓練樣例數目差別很大的情況。

表6 采樣前后的數據對比
將未使用混合采樣算法的模型與使用了混合采樣算法的模型對比,結果如圖5 所示。從圖5 可以看出,它們的Accuracy、Recall和F1 指標數值差距較大,而Precsion指標幾乎相近。出現這種情況的原因是未使用混合采樣算法的模型采樣的訓練數據由于R2L 和U2R 類別樣本較少,因此導致模型在測試集上預測這兩類時表現較差,進而影響模型的整體表現。而反觀采樣后的訓練集,各個類別樣本都處于平衡的狀態,因此模型的整體表現比未采樣模型的好。因此訓練集若存在樣本類別不平衡的情況,將導致學習器難以從少數類別中提取規律,即便得到分類模型,也易產生過擬合問題,當模型應用到新的數據上時,模型的效果會很差,直接影響模型對少數類別的結果。

圖5 執行SOMTEENN前后結果對比
3.3.3 模型整體指標分析
Yin等[23]用遞歸神經網絡和SoftMax 構建了一種入侵檢測系統,MAJJED 等[24]提出了基于稀疏編碼和支持向量機的入侵檢測系統STL-IDS,他們均在NSLKDD 數據集的測試集KDDTest+.txt 文件上對他們的方法進行了評估。本文選擇與對比文獻相同的測試集KDDTest+.txt 文件對模型進行評估,比較不同模型的Accuracy,結果見表7。
表7 中1~6號模型都是深度學習算法,7~9號模型為機器學習算法,從Accuracy值來看,深度學習算法的結果要優于機器學習算法,這是由于深度學習是一種會隨著訓練樣本增加訓練效果越來越好的方法,所以當訓練樣本為25 192 個時它的整體表現會優于機器學習算法。而本文所提模型不僅在分類算法上進行了參數調優,更重要的是提出多重特征選擇算法解決數據集存在特征問題,提出一種混合采樣的方式解決樣本不均衡問題,因此本文的模型取得了比1~9號模型更好的入侵檢測效果。

表7 多種模型準確率

續表
3.3.4 模型各個類別指標分析
DecisionTree、RandomForest、Lightgbm、SOMTE+Boruta+XGBoost 以及本文模型在Precsion、Recall和F1 3 項評價指標上的結果如圖6 所示,其中SOMTE+Boruta+XGBoost 模型首先采用SOMTE 算法對數據集過采樣,然后使用Boruta 算法對數據集特征選擇,最后使用XGBoost算法訓練檢測模型。

圖6 各類評估指標結果
從圖6可以看出,圖6(a)~6(c)中不同模型的結果都相差不大。其原因是DoS、Normal和Probe 類在訓練數據中樣本占比較大易于模型學習,因此不同的模型在DoS、Normal 和Probe 類的表現都較好。圖6(d) 和 圖6(e) 中,DecisionTree、RandomForest 和Lightgbm 結果都是Precsion高而Recall值低,Precsion值和Recall值相差太大,顯然這樣的模型是不能被接受的。這主要是因為U2R 和R2L 類在NSLKDD訓練集中共有220 個樣本,其中U2R 類更是只有11個樣本,相較總體25 192 條樣本占比極低,較少的樣本導致模型無法充分學習,因此在NSLKDD 測試集的22 544 條樣本中檢測2954 條的U2R 和R2L 結果很不理想。反觀SOMTE+Boruta+XGBoost 和本文提出的模型,它們相比于 DecisionTree、RandomForest 和Lightgbm 其結果有不小的提升,這是因為它們都執行了采樣算法,平衡了少數類樣本與多數類樣本,并且它們都采用特征選擇算法剔除了冗余特征和無效特征,使得數據集更易于模型學習,因此使得模型在U2R 和R2L 類上的表現優于DecisionTree、RandomForest 和Lightgbm。在現實生活中少數類會帶來更大的危害,提升少數類的檢測結果對增強網絡安全具有更大的意義。
針對當前機器學習入侵檢測中數據集存在特征冗余和類別不平衡的問題,提出一種融合了多重特征選擇算法、混合采樣算法以及CatBoost 算法的入侵檢測模型,通多對5 種攻擊類型進行判定與分析,得出以下結論:
(1)通過增加特征選擇方法,提出了一種多重特征選擇算法,能有效篩選冗余特征,提高對惡意流量的識別率。
(2)通過分析SMOTE 算法和ENN 算法優缺點,得出一種混合采樣算法,解決了SOMTE過采樣算法導致模型過擬合以及ENN 欠采樣算法可能刪除重要樣本的問題。算法增加了樣本類別數量,并改善了模型的性能。
(3)CatBoost 算法的最優參數,減少了檢測時間而提升了入侵檢測效果。