黃清蘭 游貴榮
(福建商學(xué)院 信息技術(shù)中心, 福州 350012)
事先防范,主動檢測,對于保證計(jì)算機(jī)網(wǎng)絡(luò)信息安全具有重要意義。機(jī)器學(xué)習(xí)能夠進(jìn)行主動檢測防御,已經(jīng)被廣泛應(yīng)用于入侵檢測領(lǐng)域,如對惡意程序的檢測,對數(shù)據(jù)庫用戶異常行為的檢測,對Web用戶異常行為的檢測,等。傳統(tǒng)的機(jī)器學(xué)習(xí)算法在訓(xùn)練和挖掘數(shù)據(jù)時(shí)有一個假設(shè),就是訓(xùn)練和測試的數(shù)據(jù)有相同的特征空間且分布一致。但在實(shí)際應(yīng)用場景中,訓(xùn)練使用的數(shù)據(jù)與測試的數(shù)據(jù)往往存在差異,數(shù)據(jù)分布是不一致的,而且檢測未知的攻擊行為時(shí)訓(xùn)練數(shù)據(jù)不多,因此會導(dǎo)致檢測準(zhǔn)確率低、漏檢率高的問題。針對這個問題,現(xiàn)提出一種基于人工蜂群(ABC)算法、極端梯度提升(XGBoost)模型與遷移學(xué)習(xí)的入侵檢測方法,結(jié)合利用XGBoost和遷移學(xué)習(xí),構(gòu)建簡單遷移分類模型,然后通過ABC自適應(yīng)搜索適用于遷移分類模型的XGBoost最佳參數(shù)。這是一種混合算法,我們將它叫作“ABC-XGBTrl”。
人工蜂群算法(Artificial bee colony algorithm)是通過模擬蜂群采蜜的集體行為來求解優(yōu)化問題。相對于遺傳算法和粒子群優(yōu)化算法(PSO)而言,人工蜂群算法更容易跳出局部最優(yōu),求解質(zhì)量優(yōu)勢較為明顯。其求解過程[1]如下:
(1) 初始化階段。初始化種群SN個都是偵查蜂,隨機(jī)地去搜索蜜源,搜索到的每個蜜源都是求解問題空間中的一個可行解。假設(shè)所求解問題的維度為m,每個可行解可表示為Xi=[xi1,xi2,xi3,…,xim]。Xi初始化依據(jù)式(1)產(chǎn)生。
Xi=Lj+rand(0,1)(Uj-Lj)
(1)
式中:Lj和Uj分別表示第j維搜索空間的下限和上限;i∈{1,2,…,SN};j∈{1,2,…,m}。
每個蜜源的適應(yīng)值評估函數(shù)fiti,按式(2)計(jì)算。
(2)
式中:funi表示問題解的目標(biāo)函數(shù)值。
(2) 迭代階段。雇傭蜂和跟隨蜂在領(lǐng)域搜索時(shí),依據(jù)式(3)進(jìn)行蜜源搜索。
vij=xij+φ(xij-xkj)
(3)
式中:φ∈[-1,1];k∈{1,2,…,SN},k≠i。
依據(jù)式(4)計(jì)算每個蜜源的概率Pi,跟隨蜂根據(jù)概率Pi選擇優(yōu)質(zhì)蜜源進(jìn)行領(lǐng)域開發(fā)。
(4)
在跟隨蜂完成領(lǐng)域搜索后,若蜜源開采次數(shù)已達(dá)一定極限而仍未找到更好的蜜源,該蜜源就會被舍棄,對應(yīng)蜜源的雇傭蜂就轉(zhuǎn)為偵查蜂。偵查蜂依據(jù)式(1)進(jìn)行隨機(jī)搜索,產(chǎn)生新的蜜源。
XGBoost是一個優(yōu)化的分布式梯度增強(qiáng)庫,該模型就是建立一堆累加的分類與回歸樹[2]。假設(shè)有n個樣本和m個特征的樣本集D={(xi,yi)|xi∈Rm,yi∈R},其模型預(yù)測值為:
(5)
模型的目標(biāo)函數(shù)為:
(6)
式中:θ={f1,f2,…,fk};l指損失函數(shù);Ω指正則化項(xiàng)。
目標(biāo)函數(shù)包含2個部分,即損失函數(shù)和正則化項(xiàng)。第一部分的自身損失函數(shù)使用泰勒式展開,使用一階導(dǎo)數(shù)和二階導(dǎo)數(shù)進(jìn)行優(yōu)化,以提高速度和準(zhǔn)確率。在第t步迭代優(yōu)化目標(biāo)函數(shù)時(shí),在現(xiàn)有t-1棵樹基礎(chǔ)上添加1棵最優(yōu)化的ft,損失函數(shù)變?yōu)椋?/p>
(7)
式中:gi為損失函數(shù)的一階導(dǎo)數(shù);hi為損失函數(shù)的二階導(dǎo)數(shù)。
第二部分是正則化函數(shù),通過正則化懲罰項(xiàng)來降低過擬合的風(fēng)險(xiǎn)。正則化函數(shù)為:
(8)
式中:T為每棵樹葉子節(jié)點(diǎn)的個數(shù);w為葉子權(quán)重;γ與λ為懲罰系數(shù)。
遷移學(xué)習(xí)是從數(shù)據(jù)、任務(wù)的相似性出發(fā),從已學(xué)習(xí)的相關(guān)任務(wù)中轉(zhuǎn)移知識,用以改進(jìn)學(xué)習(xí)的新任務(wù)[3]。遷移學(xué)習(xí)涉及的兩個主要概念就是域和任務(wù)。域是由特征空間和概率分布組成,任務(wù)是由標(biāo)簽空間和預(yù)測函數(shù)組成。遷移學(xué)習(xí)主要分為3種,即歸納式遷移學(xué)習(xí)、直推式遷移學(xué)習(xí)和無監(jiān)督遷移學(xué)習(xí)。歸納式遷移學(xué)習(xí)是近幾年研究的熱點(diǎn),它是在假設(shè)數(shù)據(jù)特征空間和標(biāo)簽空間一致而邊緣概率分布不一致的情況下,優(yōu)化目標(biāo)預(yù)測函數(shù)的學(xué)習(xí)。
Dai等人提出的基于實(shí)例的歸納式遷移學(xué)習(xí)技術(shù)即TrAdaBoost算法[4],是假設(shè)數(shù)據(jù)源域和目標(biāo)域的特征和標(biāo)簽一致而數(shù)據(jù)分布不一致,給數(shù)據(jù)源域和目標(biāo)域的每一個樣例設(shè)置一個權(quán)重。目標(biāo)域的權(quán)重更新策略與AdaBoost算法一樣,若目標(biāo)域中的樣本被錯誤分類了,就加大該樣例的權(quán)重;源域的樣本權(quán)重更新策略與之相反,若數(shù)據(jù)源域中的樣本被錯誤分類了,就認(rèn)為這個樣例對于目標(biāo)域是不同的,便降低該樣例在樣本中所占的權(quán)重。
設(shè)源域Ds={(xi,yi)|xi∈Rm,yi∈R},目標(biāo)域Dt={(xi,yi)|xi∈Rm,yi∈R},源域的邊緣概率分布P(Ds)與目標(biāo)域的邊緣概率分布P(Dt)不一致。首先,從目標(biāo)域Dt中隨機(jī)抽取少量有標(biāo)簽的數(shù)據(jù)Dd。Dd={(xi,yi)|(xi,yi)∈Dt,|Dd|?|Dt|?|Ds|}。使用XGBoost算法對Dd進(jìn)行訓(xùn)練,建立初始模型,用以檢測源域Ds。若源域中的樣本被錯誤地分類了,就認(rèn)為這個樣例對于目標(biāo)域是不同的[4],并使用人工蜂群算法優(yōu)化XGBoost模型參數(shù)。然后,將源域中分類正確的樣本進(jìn)行遷移,與Dd構(gòu)成新的特征集,并使用XGBoost算法對這些新的特征集進(jìn)行訓(xùn)練,得到遷移分類模型。其中的XGBoost算法參數(shù),以初始XGBoost模型所優(yōu)化過的參數(shù)進(jìn)行初始化設(shè)置。算法流程如圖1所示。
機(jī)器學(xué)習(xí)中常見的分類問題評估指標(biāo),有準(zhǔn)確率、精確率、召回率、F1-score、ROC曲線。我們選擇常用的準(zhǔn)確率、F1-score作為評測指標(biāo)。ABC-XGBTrl算法實(shí)現(xiàn)的偽代碼如下:
輸入:樣本集Dd、Ds、Dt,蜂群個數(shù)SN,最大迭代次數(shù)Tmax,優(yōu)化參數(shù)個數(shù)m
forj=1 tomdo
初始化優(yōu)化參數(shù)上限(U1,U2,…,Uj);
初始化優(yōu)化參數(shù)下限(L1,L2,…,Lj);
end
初始化蜜源拋棄上界Tlimit=round(0.6*SN*m);
fori=1 toSNdo
按式(1)初始化所優(yōu)化XGBoost參數(shù)蜜源位置Xi=(xi1,xi2,…,xim);
通過Xi初始化XGBoost參數(shù);
利用XGBoost算法訓(xùn)練Dd,預(yù)測Ds結(jié)果,計(jì)算F1-score值funi;
依據(jù)式(2)計(jì)算fiti;
end
依據(jù)式(4),記錄當(dāng)前的最優(yōu)蜜源位置;
fort=1 toTmaxdo
執(zhí)行雇傭蜂和跟隨蜂的搜索步驟,開拓新的蜜源X;
if 蜜源采蜜次數(shù) >Tlimitthen
執(zhí)行偵查蜂步驟,開拓新的蜜源X;
end
end
使用優(yōu)化過最佳蜜源初始化XGBoost參數(shù);
已初始化參數(shù)的XGBoost算法訓(xùn)練Dd,預(yù)測Ds結(jié)果;
已初始化參數(shù)的XGBoost算法訓(xùn)練Dtrain,得到訓(xùn)練好的遷移分類模型;
令Dtest=Dt-Dd;
用訓(xùn)練好的遷移分類模型預(yù)測Dtest,計(jì)算評估指標(biāo)F1-score值f1、準(zhǔn)確率acc;
輸出:f1,acc。
圖1 ABC-XGBTrl算法實(shí)現(xiàn)流程
使用Python語言編程進(jìn)行實(shí)驗(yàn),XGBoost算法使用的是XGBoost-0.82包。對照組實(shí)驗(yàn),使用在機(jī)器學(xué)習(xí)庫scikit-learn中已實(shí)現(xiàn)的經(jīng)典集成學(xué)習(xí)算法。
采用基準(zhǔn) NSL-KDD數(shù)據(jù)集。訓(xùn)練數(shù)據(jù)集KDDtrain和測試數(shù)據(jù)集KDDtest,數(shù)據(jù)分布不一致[5],擁有相同的特征空間和標(biāo)簽空間,符合算法的假設(shè)條件。將KDDtrain作為源域,KDDtest作為目標(biāo)域。在隨機(jī)種子數(shù)一樣的情況下,進(jìn)行3組實(shí)驗(yàn)。
第一組實(shí)驗(yàn),使用的目標(biāo)域數(shù)據(jù)樣本量比例由0.1%擴(kuò)大到1.2%;XGBoost算法參數(shù)統(tǒng)一使用默認(rèn)值,其中主要參數(shù)組合如表1所示。在不使用人工蜂群算法進(jìn)行參數(shù)優(yōu)化的情況下,遷移分類模型的預(yù)測性能如圖2所示。
由圖2可知,在不同的遷移樣本量比例下,F(xiàn)1分?jǐn)?shù)值存在波動。在目標(biāo)域樣本量占比為0.8%的時(shí)候,性能最好,F(xiàn)1分?jǐn)?shù)為0.886 1,準(zhǔn)確率為0.886 5。
表1 參數(shù)組合默認(rèn)值及優(yōu)化后的最佳值
第二組實(shí)驗(yàn),使用的目標(biāo)域樣本量占比為0.8%;經(jīng)ABC算法調(diào)參后,XGBoost最佳參數(shù)組合如表1所示。使用ABC-XGBTrl算法,經(jīng)過100次迭代,F(xiàn)1分?jǐn)?shù)為0.904 4,準(zhǔn)確率為0.905。與第一組實(shí)驗(yàn)結(jié)果相比,這兩項(xiàng)指標(biāo)分別提高了2.065%、2.087%。
圖2 遷移分類模型的預(yù)測性能
第三組實(shí)驗(yàn),與XGBoost、Bagging(裝袋)、AdaBoost(自適應(yīng)增強(qiáng))、RandomForest(隨機(jī)森林)、ExtraTrees(極端隨機(jī)樹)等算法進(jìn)行對照實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果如圖3所示。與其他幾種算法相比,ABC-XGBTrl算法的F1分?jǐn)?shù)和準(zhǔn)確率都是最高的,說明其性能更優(yōu)。
圖3 ABC-XGBTrl算法與對照算法的性能比較
傳統(tǒng)的機(jī)器學(xué)習(xí)算法用于入侵檢測,面對新舊數(shù)據(jù)的差異性,尤其是面對未知的攻擊行為時(shí),檢測準(zhǔn)確度較低,漏檢率較高。將XGBoost模型和遷移學(xué)習(xí)相結(jié)合,構(gòu)建簡單遷移分類模型,然后通過人工蜂群算法優(yōu)化選擇XGBoost最佳參數(shù),用于遷移分類模型,可以有效提高檢測準(zhǔn)確度、降低漏檢率。采用NSL-KDD數(shù)據(jù)集進(jìn)行測試,結(jié)果顯示,與現(xiàn)有的經(jīng)典集成學(xué)習(xí)算法相比,所提出的ABC-XGBTrl算法,在準(zhǔn)確率和F1分?jǐn)?shù)這兩項(xiàng)指標(biāo)上都提高了將近12%。