張建東,劉才銘,李 勤
(樂山師范學(xué)院 a.電子信息與人工智能學(xué)院;b.網(wǎng)絡(luò)安全智能檢測與評估實(shí)驗(yàn)室,四川 樂山 614000)
互聯(lián)網(wǎng)的發(fā)展有助于創(chuàng)造一個(gè)更加方便文明的社會,互聯(lián)網(wǎng)已經(jīng)成為人們?nèi)粘I钪斜夭豢缮俚囊徊糠?。然而它也帶來了很多問題,比如竊取用戶隱私數(shù)據(jù)、惡意軟件、拒絕服務(wù)、垃圾郵件以及網(wǎng)絡(luò)攻擊。其中網(wǎng)絡(luò)攻擊已成為互聯(lián)網(wǎng)上最大的問題,造成前所未有的經(jīng)濟(jì)損失。
最近幾年,人工智能技術(shù)已經(jīng)在自然語言處理和圖像處理方面獲得廣泛的應(yīng)用。使用機(jī)器學(xué)習(xí)解決計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域的問題變得非常有前途。使用機(jī)器學(xué)習(xí)技術(shù)解決網(wǎng)絡(luò)場景里面的復(fù)雜問題,比如使用機(jī)器學(xué)習(xí)技術(shù)訓(xùn)練模型來監(jiān)測網(wǎng)絡(luò)系統(tǒng)的性能、識別錯(cuò)誤配置和網(wǎng)絡(luò)攻擊[1-5]。
目前主要使用的方法有基于樹的網(wǎng)絡(luò)攻擊事件檢測方法[6],比較XGBoost 方法與其他分類器,如AdaBoost、樸素貝葉斯、MLP 和K-Nearest Neighbors(KNN)來解決多分類問題和二分類問題。XGBoost 不僅獲得了更高的精度,而且執(zhí)行效率更高,實(shí)驗(yàn)結(jié)果表明,基于樹的模型能取得更好的結(jié)果?;旌媳O(jiān)督學(xué)習(xí)集成模型[7],使用幾個(gè)極端梯度提升算法。XGBoost 和LightGBM 首先單獨(dú)處理從原始數(shù)據(jù)抽取出來的組合特征子集,再把輸出結(jié)果取均值。不同的模型使用不同的超參數(shù)設(shè)置以及不同的特征子集。通過組合獨(dú)立的高性能梯度提升算法,在競賽中獲得的較高的準(zhǔn)確率。使用LightGBM 算法[8]和XGBoost 算法[9],在異常事件檢測中都獲得了較高的準(zhǔn)確率。
以上提到的方法要么使用單一的算法,要么使用兩種算法的組合,我們提出的方法是使用多種最新的集成學(xué)習(xí)算法的組合,通過Stacking 模型融合來對網(wǎng)絡(luò)事件進(jìn)行檢測,實(shí)驗(yàn)結(jié)果表明本文提出的方法比單一的機(jī)器學(xué)習(xí)方法有更高的準(zhǔn)確率。
為了提高機(jī)器學(xué)習(xí)算法的效率及準(zhǔn)確率,我們對數(shù)據(jù)集進(jìn)行了預(yù)處理、創(chuàng)建新特征,對部分特征進(jìn)行了組合,處理后的數(shù)據(jù)集極大的提升了異常網(wǎng)絡(luò)事件檢測的準(zhǔn)確率。
集成學(xué)習(xí)通過構(gòu)建多個(gè)模型來完成學(xué)習(xí)任務(wù)。它的工作原理是訓(xùn)練多個(gè)模型,各自獨(dú)立地學(xué)習(xí)并做出預(yù)測。這些預(yù)測結(jié)果再用某種策略將他們結(jié)合起來,一般會優(yōu)于單個(gè)分類器做出的預(yù)測。
機(jī)器學(xué)習(xí)有兩個(gè)核心任務(wù);一個(gè)是解決欠擬合問題,通過boosting 算法逐步增強(qiáng);另一個(gè)是解決過擬合問題,可以通過bagging(Bootstrap Aggregation)采樣學(xué)習(xí)。只要基分類器的表現(xiàn)不是太差,集成學(xué)習(xí)的結(jié)果一定是優(yōu)于單分類器的。我們采用的基學(xué)習(xí)器都使用集成學(xué)習(xí)算法,分別是XGBoost、CatBoost、RandomForest 和LightGBM。
Boosting 用于有監(jiān)督的機(jī)器學(xué)習(xí),通過將一組弱分類器組合成一個(gè)強(qiáng)分類器來建立模型,提高分類預(yù)測精度,可以非常有效地減少預(yù)測偏差。梯度提升(GB,Gradient Boosting) 是boosting 的擴(kuò)展,也是通過一定方法將弱分類器融合,提升為強(qiáng)分類器。梯度提升決策樹(GBDT,Gradient Boosting Decision Tree)是決策樹的集成模型,將損失函數(shù)梯度下降的方向作為優(yōu)化的目標(biāo)。XGBoost 是GBDT 的改進(jìn),GBDT 在優(yōu)化時(shí)只用到一階導(dǎo)數(shù),XGBoost 在每一輪學(xué)習(xí)中,對損失函數(shù)進(jìn)行二階泰勒展開,使用一階和二階導(dǎo)數(shù)進(jìn)行優(yōu)化。在各種數(shù)據(jù)科學(xué)競賽中,XGBoost 成為競賽者們奪冠的利器。
XGBoost 在目標(biāo)函數(shù)里加入了正則化項(xiàng),用于控制模型的復(fù)雜度,為避免過擬合,正則化項(xiàng)一般選擇簡單模型。正則化項(xiàng)里通過樹的葉子節(jié)點(diǎn)個(gè)數(shù)來控制樹的復(fù)雜度。正則項(xiàng)降低了模型的方差,使學(xué)習(xí)出來的模型更加簡單,這也是XGBoost 優(yōu)于GBDT 的一個(gè)特性。XGBoost 在訓(xùn)練樣本有限,訓(xùn)練時(shí)間短的場景下具有獨(dú)特的優(yōu)勢。
CatBoost 是一種新的boosting 模型,是GBDT算法框架下的一種改進(jìn)實(shí)現(xiàn)。CatBoost 對數(shù)據(jù)集中的類別特征能更好的表示和處理。在某些場景下比XGBoost 和LightGBM 更好。主要缺點(diǎn)是,對類別特征的處理需要耗費(fèi)大量的內(nèi)存和時(shí)間,隨機(jī)數(shù)的設(shè)定對模型預(yù)測結(jié)果也有一定的影響。
LightGBM(Light Gradient Boosting Machine)是一個(gè)實(shí)現(xiàn)GBDT 算法的框架,支持分布式訓(xùn)練,可以處理海量數(shù)據(jù),具有更快的訓(xùn)練速度,同時(shí)內(nèi)存消耗更低。
隨機(jī)森林屬于集成學(xué)習(xí)中bagging 方法。隨機(jī)森林是bagging 與決策樹的組合。用隨機(jī)的方式建立一個(gè)森林,森林由眾多決策樹組成,每棵決策樹都是沒有關(guān)聯(lián)的,其輸出的類別是每棵決策樹投票的結(jié)果。
隨機(jī)森林中基學(xué)習(xí)器的多樣性不僅來自樣本的隨機(jī)性,還來自屬性的隨機(jī)性,最終模型的泛化能力通過基學(xué)習(xí)器之間差異度的增加而進(jìn)一步提升。
使用模型融合的好處主要有三個(gè):a)單個(gè)模型可能會導(dǎo)致泛化能力不佳,使用多個(gè)模型可以減少這一風(fēng)險(xiǎn);b)學(xué)習(xí)算法可能陷入局部極小,其對應(yīng)的泛化性能降低;c)某些任務(wù)的假設(shè)可能不在當(dāng)前模型的假設(shè)空間內(nèi),使用單個(gè)模型可能無效,結(jié)合多個(gè)模型可能學(xué)的更好的近似。
基學(xué)習(xí)器的集成方法有均值法,投票法,學(xué)習(xí)法[10]。針對實(shí)驗(yàn)數(shù)據(jù)集和輸出結(jié)果的特征,本文采用的方法為學(xué)習(xí)法。
使用的單個(gè)算法有基于集成學(xué)習(xí)的XGBoost、CatBoost、RandomForest、LightGBM 四種高效算法。
Stacking(堆疊)是用于組合來自多個(gè)模型的信息以生成新模型的模型融合技術(shù)。首先訓(xùn)練好所有的基模型,然后把基模型的預(yù)測結(jié)果連接,生成新的數(shù)據(jù),作為第二層模型的輸入,用來訓(xùn)練第二層模型,最終得到預(yù)測結(jié)果。
通常,堆疊模型(也稱為二級模型)將多種模型按照一定的方式組合在一起,將不同模型的各自優(yōu)勢發(fā)揮出來進(jìn)而提升模型整體的性能。因此,當(dāng)基模型差異較大時(shí),堆疊是最有效的。把主流的四種集成學(xué)習(xí)算法的輸出結(jié)果用LogisticsRegression 融合,模型框架如圖1 所示。
圖1 兩層stacking 模型
數(shù)據(jù)集為Suspicious Network Event Recognition,數(shù)據(jù)集是采集自2018.10.1 到2019.3.31,總共6 個(gè)月的數(shù)據(jù)。數(shù)據(jù)集包含安全警報(bào)及其描述性屬性,以遞增的詳細(xì)級別發(fā)布,直到實(shí)際警報(bào)之前的安全事件序列。兩個(gè)數(shù)據(jù)集的詳細(xì)說明如下:
第一個(gè)數(shù)據(jù)集(Cybersecurity_train)。告警事件數(shù)據(jù)集,訓(xùn)練數(shù)據(jù)集包含63 個(gè)特征屬性,一個(gè)目標(biāo)屬性。主要特征包括警告的相關(guān)信息,比如客戶端的代碼、IP、IP 分類、開始的時(shí)間、事件的源和目標(biāo)等。
數(shù)據(jù)集為不平衡數(shù)據(jù)集,目標(biāo)值notified 占比僅為5.8%(2276/39427)。
第二個(gè)數(shù)據(jù)集(Localized_alerts_data)。包含警告事件的更多細(xì)節(jié),比如特定的警告類型、代碼,設(shè)備廠商、源和目標(biāo)IP 及端口、時(shí)間、嚴(yán)重程度、用戶名、通信協(xié)議等。表1 為數(shù)據(jù)集整體概覽。
表1 數(shù)據(jù)集整體概覽
缺失值處理:根據(jù)列的特征采用固定值或平均值來填充缺失值。
創(chuàng)建新特征:Localized 數(shù)據(jù)集抽取新特征以提供額外的信息,按照alert_ids 分組統(tǒng)計(jì)alerttime 的最大值、平均值,severity 的平均值,最大值和最小值,生成新特征。并對特殊的特征進(jìn)行處理,比如IP 地址和時(shí)間。
類別數(shù)據(jù)的處理:大多是機(jī)器學(xué)習(xí)算法使用數(shù)值型數(shù)據(jù)作為輸入,因此對非數(shù)值型的數(shù)據(jù)采用one-hot 編碼轉(zhuǎn)換成數(shù)值型。
兩個(gè)數(shù)據(jù)集的合并:按照alert_ids 對處理后的兩個(gè)數(shù)據(jù)集進(jìn)行合并。
實(shí)驗(yàn)環(huán)境:windows10,Intel(R) Core(TM) i7-9700 CPU @ 3.00GHz,內(nèi)存32G。
工具集:Pyton3,pandas,scikit-learn,Keras 進(jìn)行特征工程、特征選擇以及算法實(shí)現(xiàn)。
評估方法:本文使用AUC、準(zhǔn)確率作為實(shí)驗(yàn)性能的評估方法。
AUC:主要用于評價(jià)不平衡的二分類算法。由于數(shù)據(jù)集的目標(biāo)值是二分類的,因此主要的評估指標(biāo)為AUC。ROC 曲線的縱軸為TPR(True Positive Rate),橫軸為FPR(False Positive Rate),判斷模型的好壞就是計(jì)算ROC曲線下(0,0)到(1,1)的面積AUC(Area Under ROC Curve),面積越大,模型越準(zhǔn)確。
準(zhǔn)確率:總樣本中預(yù)測正確的有幾個(gè)正確,是最常見的評價(jià)指標(biāo)。準(zhǔn)確率的定義為公式1。
實(shí)驗(yàn)結(jié)果如表2 所示,從表中可以看出4種算法融合模型的AUC最高,準(zhǔn)確率比XGBoost稍低,比其他三種算法都高。從表中可以看出單個(gè)模型的AUC 全部都低于融合模型的AUC,因?yàn)闆]有一種算法能適應(yīng)各種不同的場景,因此嘗試使用不同的算法來實(shí)現(xiàn)預(yù)測,同時(shí)把多個(gè)性能較好的算法進(jìn)行集成可以進(jìn)一步提升模型預(yù)測的準(zhǔn)確性。
表2 模型的性能對比
為了從各種網(wǎng)絡(luò)日志中發(fā)現(xiàn)異常事件,本文提出一種Stacking 模型融合的方法來檢測異常事件,并在Suspicious Network Event Recognition 數(shù)據(jù)集上分別使用最新的集成學(xué)習(xí)算法XGBoost、CatBoost、RandomForest、LightGBM構(gòu)建了異常檢測模型,用Stacking模型融合,用LogisticsRegression 生成最后的模型,通過實(shí)驗(yàn)對比得出結(jié)論如下:
模型融合較單個(gè)模型有優(yōu)勢,模型融合的復(fù)雜度不高,結(jié)果更加準(zhǔn)確。機(jī)器學(xué)習(xí)中模型融合比單個(gè)模型的準(zhǔn)確率高,泛化能力更強(qiáng),在實(shí)驗(yàn)場景中效果更好。
在后期工作中將重點(diǎn)研究其他高效集成學(xué)習(xí)方法及其他模型融合方法,來提高網(wǎng)絡(luò)異常事件預(yù)測的準(zhǔn)確率。