張如雪 繆祥華,b
(昆明理工大學a.信息工程與自動化學院;b.云南省計算機技術應用重點實驗室)
基于已知攻擊特征的傳統靜態安全方法在網絡入侵檢測中已經取得了不錯的效果,但是傳統靜態方法不能有效防御新的攻擊, 如0day攻擊、后門攻擊及高級持續威脅(APT)等,這些攻擊者可以發動有針對性的持久滲透攻擊,表現出較強的隱蔽性,潛伏期特別長。 針對這些新的攻擊需要研究新方法來應對[1,2]。
Logit、KNN、SVM、神經網絡、決策樹及隨機森林[3]等機器學習模型被廣泛應用于入侵檢測研究,并取得了較好的效果[4]。 2014年,張陽和姚原崗提出的XGBoost算法具有效果好、 速度快及能處理大規模數據等特點[5]。 但是基于單個學習器只能學習到一個假設, 存在泛化能力不強的問題。因此,筆者采用XGBoost和GBDT[6]構成集成學習模型,以期多個假設在同一個訓練集上達到較高的性能。
自動編碼器(AutoEncoder,AE)是一種無監督神經網絡模型[7],它可以學習到輸入數據的隱含特征, 使用Encoder對輸入進行編碼, 并使用Decoder對輸出進行解碼,如圖1所示。 AE可以提取到更有效的特征,比傳統降維方法主成分分析(Principal Components Analysis,PCA) 效果更好,除了降低函數的維數外,提取的特征還可以整合到一個有監督的學習模型中,這表明自動編碼器可以在特征提取中發揮作用。

圖1 自動編碼器的基本結構
AE對輸入X進行編碼以獲得一個新的函數Y,并希望新的函數Y可以重建初始的輸入X。 編碼過程如下:

其中,W表示權重,b表示參數。
解碼過程為:

其中,X′表示輸出,W′表示權重,b′表示參數。
希望X′被重新構建后能盡可能與原來一致,還可以使用損失函數L來訓練模型:

通常會對自動編碼器的使用增加一些限制,最常見的方法是使W′=WT,即所謂的“綁定權重”,這一限制同樣適用于本研究中的自動編碼器。
梯度提升決策樹 (Gradient Boost Decision Tree,GBDT)是一種循環重復的決策樹算法,由許多決策樹構成,所有樹的結論聚合而成得到最終答案。 GBDT經過幾個循環,會得到若干個弱分類器,由若干個弱分類器構成最終的分類器。
GBDT分類算法主要應用了以下公式:

其中,f(x)為預測結果;y為實際結果,y∈{-1,1};ft-1(x)表示前t-1個基學習器的輸出結果,yi為第i個實際結果;xi為第i個輸入。
對于最終的決策樹,每個葉子節點的最佳負梯度Ctj的計算式為:

其中,Rtj為輸入集合;tj為葉子結點。
極限梯度提升決策樹(eXtreme Gradient Boosting,XGBoost)是一種Boosting算法,它將許多弱分類器整合在一起,形成一個強大的分類器。
XGBoost是一個加法模型,它包含了k個基學習器,循環重復第t次迭代的樹模型是ft(x),則第t次重復訓練后樣本i的預測結果y^i(t)的計算式為:

其中,y^i(t-1)表示前t-1棵樹的預測結果;ft(xi)表示第t棵樹的模型。
XGBoost的損失函數可由預測值y^i和真實值yi表示:其中,n為樣本數量。

集成方法是一種元算法,把不同的機器學習算法組合到一個預測模型中, 能減小系統方差、系統誤差或提高系統預測精度,其特點如下:
a. 將多種相同或不同的分類方法相結合,以提高分類精度;
b. 集成學習方法是從訓練數據中構建一組基分類器,然后將預測數據應用到每個基分類器進行分類;
c. 集成學習不是一種分類,而是一種將分類器結合的方法。
深度提升網絡(Deep Boosting Network,DBN)擁有基于梯度增量策略中仍然存在的關鍵決策的深度耦合結構[8~10]。 以XGBoost和GBDT為基學習器創建深度提升網絡, 在第1層輸入中對特征向量進行整合和改進,從第2層開始,每層接收來自前一層處理后的數據,允許進一步改進,并將結果傳遞到下一層,以此類推,流程如圖2所示。為了減少過度擬合風險,每次創建一個新的隱含層, 都計算出當前類輸出的預測精度C和每個基學習器輸出的準確預測矩陣的收斂性η。 將η與自適應因子α(α是學習結果變化的參數)做比較,如果有η<α或者當前平均準確率低于前一級別的平均準確率,則訓練結束。

圖2 深度提升網絡流程
設N為樣本數量,H是基學習器在隱含層的數量, 第i層的第r個基學習器的輸出和預測精度分別為Air和Ci,則收斂性η和當前層預測精度Ci的計算式為:

由于本研究將GBDT和XGBoost基學習器整合應用到集成學習中,這些基學習器都會有自己的結果,那么輸出層的結果就必須通過對這些結果進行投票得出。 本研究選擇的是相對多數投票策略,該策略的思想是少數服從多數,只要基學習器中有某一個結果所占比例與其他結果相比是多的,那么就選擇該結果。
2.4.1 自動編碼器降維算法
為了滿足深度提升網絡中一個輸入向量維數的要求,AE網絡的隱含層神經元數m=n×n。 為了最大限度地保留數據中的信息,m可以被賦值為64、81、100及121等。 當m=64時,自動編碼器的結構模型如圖3所示。

圖3 自動編碼器的結構模型
為評價AE網絡的降維效果,引入重構誤差的概念。 重構誤差是特征重構的輸出值和輸入值降維后得到的誤差。 在AE網絡降維中,需確定降維后的數據能否很好地恢復到原始輸入數據,重構誤差用均方誤差MSE表示:

其中,p表示輸入變量,p′表示輸出變量。
為了優化自動編碼器網絡的結構, 通過調整GBDT和XGBoost模型個數、優化函數等參數,觀察自動編碼器網絡在迭代過程中重構誤差的變化,最后確定自動編碼器網絡的最優結構。 在不同維度下, 利用自動編碼器結構重構誤差的結果如圖4所示。

圖4 利用自動編碼器結構重構誤差
自動編碼器的結構確定后,通過輸入預處理后的數據,計算出網絡的重構誤差。 通過BP算法調整網絡參數,最終通過隱含層獲得降維數據。
精準醫療是針對于患者醫療保健和健康的個性化醫學模式,它通過醫生的醫療決策和實踐制定出適合不同疾病人群的治療方案。隨著對CRSwNP的發病機制的不斷深入了解,精準醫療分析整合疾病的診斷和治療并能制定出最優化的治療方案[28]。而實現精準醫療的基礎必須具備的要素有:患者參與治療方案的決定;預判初始治療的成功率;防治疾病進展的有效策略和疾病內在型為驅動的個性化治療[29]。為了實現疾病內在型為驅動的治療目的,必須對疾病的內在型有著充分且標準化的認識,而且能夠洞察用于評估或預測療效、指導完善臨床策略的生物標記物[10]。
2.4.2 深度提升網絡算法
深度提升網絡的結構如圖5所示。

圖5 深度提升網絡結構框圖
深度提升網絡的算法步驟如下:
a. x0、x1、 …、xm分別代表GBDT和XGBoost模型,對其輸入訓練集形成m個基學習器(前一個的輸出是下一個的輸入);
b. 輸入測試集,m個基學習器分別得出m個預測結果;
c. 對步驟b中的m個預測結果使用投票策略,得出綜合預測結果。
深度提升網絡在第1層輸入中對特征向量進行整合和改進;從第2層開始,每層接收來自前一層處理后的數據,允許進一步進行改進,并將結果傳遞到下一層,以此類推。


實驗所用的主機處理器為Intel(R)Core(TM)i5-7200U CPU@2.50 GHz,內存16 GB,操作系統Win10專業版,在Pycharm環境下使用pytorch框架完成仿真實驗。
分類問題常用的評價指標是精確率和召回率。 正常類被標記為正類,所有攻擊類被標記為負類。 分類器對數據集的預測是正確的還是錯誤的,結果存在4種情況:
a. TP(True Positive),把正類預測為正類;
b. FP(False Positive),把負類預測為正類;
c. TN(True Negative),把負類預測為負類;
d. FN(False Negative),把正類預測為負類。
評價指標的計算式如下:

F1分數為精確率和召回率的調和平均,即有:

CICIDS2017是一種入侵檢測數據集,由加拿大網絡安全研究所收集,包含良性攻擊網絡流和7 種公開可用的常見攻擊類型。 它包括使用CICFlowMeter的網絡流量分析結果, 使用基于時間戳、源和目的IP地址、源和目的端口、協議和攻擊(CSV文件)的標記流。因此,CICIDS2017數據集更具代表性[6]。
CICIDS2017數據集中共有15種類別的數據,其中包含1種正常類別和14種攻擊,詳見表1。

表1 數據集類別和數目
為了提高模型的準確性,加快模型的收斂速度,對所創建的數據集進行數據預處理,具體步驟如下:
a. 檢測數據集中的空值。因為本研究中的一些算法對缺失的值很敏感,所以將數據集中元素列的平均值替換為空值。
b. 將處理后的數據集分為兩部分, 分別為80%的訓練集和20%的測試集, 其中正常流量和攻擊流量在數據集和測試集中的占比見表2、3。

表2 訓練集占比情況
c. 對多分類標簽進行one-hot編碼。
d. 為了消除不同特征尺度對模型精度的影響,對數據集的特征進行正則化處理。

表3 測試集占比情況
本研究的模型在分類過程中設置GBDT和XGBoost的總數目后的損失值如圖6所示。

圖6 GBDT和XGBoost的總數目對損失值的影響
為了證明GBDT-XGBoost模型在相同實驗環境下與其他模型相比的優越性, 選擇KNN、DT、RF、GBDT和確定結果較好的XGBoost進行比較,檢測結果見表4、5。

表4 二分類任務下模型的對比結果

表5 多分類任務下模型的對比結果
從表4、5可以看出,KNN在二分類和多分類任務下的分類效果較弱,DT其次,RF、單獨GBDT和單獨XGBoost在精確率和F1分數的結果上不相上下, 但在召回率上有出入。 筆者提出的GBDTXGBoost模型在所有3個指標上,無論是二分類還是多分類,都高于其他模型,證實該模型分類的整體效果優于其他算法。
筆者提出基于GBDT-XGBoost的網絡入侵檢測算法, 獲得了入侵檢測的強分類器。 與傳統KNN、DT、RF、GBDT、XGBoost算法對比的結果可知,GBDT-XGBoost算法在精確率、 召回率和F1分數上都有所提升。 但該方法對于未知攻擊的檢測還存在精確率不高的問題, 下一步計劃改進該方法,提高該方法在未知攻擊檢測方面的精確率。