黃清蘭
(福建商學(xué)院信息技術(shù)中心,福建 福州 350012)
在新的智能網(wǎng)絡(luò)行為出現(xiàn)的情景下,基于異常的入侵檢測(cè)要能有效地實(shí)現(xiàn)新網(wǎng)絡(luò)攻擊行為的檢測(cè),具有一定的挑戰(zhàn)性。目前基于傳統(tǒng)的機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、集成學(xué)習(xí)、統(tǒng)計(jì)分析、遷移學(xué)習(xí)等技術(shù)被廣泛應(yīng)用于基于異常的入侵檢測(cè)領(lǐng)域[1]。
傳統(tǒng)的機(jī)器學(xué)習(xí)技術(shù)主要如聚類、支持向量機(jī)、決策樹(shù)等?;诰垲惖姆椒梢赃x擇不依賴標(biāo)簽樣本進(jìn)行異常檢測(cè)。依賴標(biāo)簽樣本進(jìn)行異常檢測(cè)的技術(shù)主要是利用分類技術(shù),研究比較多的是結(jié)合其他的機(jī)器學(xué)習(xí)技術(shù)進(jìn)行應(yīng)用。陳虹等[2]使用深度信念網(wǎng)絡(luò)分別對(duì)訓(xùn)練集和測(cè)試集進(jìn)行特征抽取,然后使用Xgboost算法進(jìn)行分類檢測(cè)。文獻(xiàn)[3]是基于遷移學(xué)習(xí)技術(shù),針對(duì)兩個(gè)不同分布和特征空間的網(wǎng)絡(luò)樣本數(shù)據(jù),通過(guò)分析源域和目標(biāo)域之間的相似性,提出了一種將兩者樣本集映射到相同維度的特征空間方法,該方法能有效地遷移源域數(shù)據(jù)來(lái)預(yù)測(cè)目標(biāo)域網(wǎng)絡(luò)樣本數(shù)據(jù)的分類檢測(cè)。
基于統(tǒng)計(jì)分析、遷移學(xué)習(xí)的入侵檢測(cè)技術(shù)相較基于傳統(tǒng)機(jī)器學(xué)習(xí)來(lái)說(shuō)研究比較少,由于傳統(tǒng)機(jī)器學(xué)習(xí)技術(shù)在訓(xùn)練和測(cè)試樣本分布不一致的情況下,表現(xiàn)效果不佳,而實(shí)際情況往往是分布不一致的樣本,入侵檢測(cè)領(lǐng)域也是如此。如何在數(shù)據(jù)分布不一致的情況,提高入侵檢測(cè)分類的準(zhǔn)確率。本文結(jié)合聚類、統(tǒng)計(jì)抽樣技術(shù)和遷移學(xué)習(xí),提出了一種基于聚類分析與遷移學(xué)習(xí)的入侵檢測(cè)方法(Intrusion Detection Method Based on Cluster Analysis and Transfer learning,CATL)。
K-means算法是基于劃分的經(jīng)典聚類算法,在面對(duì)大數(shù)據(jù)聚類分析的情況,該算法相較于其他的聚類算法,更為高效。K-means算法是隨機(jī)選取初始聚類中心,而聚類結(jié)果很大程度會(huì)受初始聚類中心的選擇而呈現(xiàn)出較大差異,使其不能保證聚類結(jié)果的準(zhǔn)確性。針對(duì)此問(wèn)題,Arthur等[4]提出的K-means改進(jìn)算法K-means++,該算法除了在初始聚類中心選取方式與K-means算法不一樣,其它步驟是一樣的。Kmeans++算法的初始聚類中心選取的基本思路是要使得選取的初始聚類中心相互間的距離要盡可能遠(yuǎn)。
Xgboost是經(jīng)典的集成學(xué)習(xí)算法,被廣泛應(yīng)用于回歸和分類問(wèn)題,它是一個(gè)優(yōu)化的分布式梯度提升決策樹(shù)的改進(jìn)算法,使用正則化提升技術(shù)來(lái)防止過(guò)擬合,具有高效、靈活等優(yōu)點(diǎn)。
遷移學(xué)習(xí)[5]主要的概念是域和任務(wù)。域D={X,P(X)},其中X為樣本集即特征空間,P(X)為邊緣概率分布。任務(wù)T={Y,f(X)},其中Y為樣本的標(biāo)簽集即標(biāo)簽空間,f(X)為預(yù)測(cè)函數(shù)表示的是條件概率分布P(X|Y)。假設(shè)源域Ds={Xs,P(Xs)},源任務(wù)Ts={Ys,f(Xs)},目標(biāo)域Dt={Xt,P(Xt)},目標(biāo)任務(wù)Tt={Yt,f(Xt)}。遷移學(xué)習(xí)從已學(xué)習(xí)的相關(guān)任務(wù)中轉(zhuǎn)移知識(shí)用以輔助新任務(wù)的知識(shí)學(xué)習(xí),在源域和源任務(wù)中轉(zhuǎn)移相關(guān)知識(shí)用以輔助目標(biāo)任務(wù)的知識(shí)學(xué)習(xí)。依據(jù)轉(zhuǎn)移知識(shí)的不同,遷移學(xué)習(xí)可以分為基于實(shí)例的遷移學(xué)習(xí)、基于模型的遷移學(xué)習(xí)、基于參數(shù)的遷移學(xué)習(xí)等。
基于實(shí)例的遷移學(xué)習(xí)[6]是一種歸納式遷移學(xué)習(xí)方法,又分為基于單源實(shí)例和基于多源實(shí)例,研究比較多的是基于單源實(shí)例的方法,該方法假設(shè)存在部分的訓(xùn)練集Dd={Xd,P(Xd)}和測(cè)試樣本分布一致,但該部分訓(xùn)練集不足以訓(xùn)練一個(gè)好的分類模型進(jìn)行測(cè)試樣本的分類預(yù)測(cè)的情況下,需要利用Dd來(lái)遷移有益的源域訓(xùn)練樣本Ds進(jìn)行分類模型訓(xùn)練。簡(jiǎn)單遷移策略[7]具體流程如圖1所示。
圖1 基于實(shí)例的簡(jiǎn)單遷移分類模型流程
通過(guò)使用目標(biāo)域中部分有標(biāo)記的訓(xùn)練數(shù)據(jù)集Dd進(jìn)行分類模型訓(xùn)練,將訓(xùn)練好的分類模型用以預(yù)測(cè)源域的訓(xùn)練數(shù)據(jù),將源域中分類正確的數(shù)據(jù)進(jìn)行遷移,與Dd構(gòu)成新的訓(xùn)練樣本進(jìn)行訓(xùn)練,將訓(xùn)練好的分類模型用于預(yù)測(cè)目標(biāo)域中未有標(biāo)記的數(shù)據(jù)Dt,但該方法的前提是假設(shè)Dd與目標(biāo)域中未有標(biāo)記的數(shù)據(jù)分布一致。該遷移策略簡(jiǎn)單易行,但是實(shí)際應(yīng)用場(chǎng)景中,如何獲取Dd使其分布相似于目標(biāo)域中未有標(biāo)記的數(shù)據(jù),是影響其使用效果的重要方面。
針對(duì)簡(jiǎn)單遷移策略使用的關(guān)鍵問(wèn)題:Dd的獲取方式,CATL算法首先設(shè)計(jì)了基于聚類的統(tǒng)計(jì)層次抽樣技術(shù)進(jìn)行Dd的獲取,而后利用簡(jiǎn)單遷移策略進(jìn)行入侵分類檢測(cè),CATL算法是基于實(shí)例的簡(jiǎn)單遷移策略應(yīng)用的算法,也是一種混合算法。
假設(shè)目標(biāo)域D={X,P(X)},其樣本量為N,固定比例R為Dd占D的比例,源域Ds={Xs,P(Xs)},Ts={Ys,f(Xs)},D和Ds的特征和標(biāo)簽空間一致,P(X)≠P(Xs)。
CATL算法實(shí)現(xiàn)的具體流程如圖2所示,其設(shè)計(jì)主要有兩大步驟:
(1)通過(guò)K-means++算法進(jìn)行聚類劃分X,X是不包含標(biāo)簽的樣本數(shù)據(jù)集,若聚類個(gè)數(shù)為K,初始化依據(jù)式(1)產(chǎn)生,則聚類劃分的子總體集合G={G1,G2,…,Gk},從所劃分的每個(gè)子總體中按固定的比例R抽取樣本,所抽取的樣本集合并為Xd,Xd可以代表原總體樣本X的分布,將所抽取的樣本集Xd進(jìn)行標(biāo)記形成Dd,測(cè)試集Dt={X-Xd,P(X-Xd)}。
其中聚類個(gè)數(shù)之所以按式(1)進(jìn)行初始化,是為了盡可能使聚類劃分的每個(gè)子總體都能抽到樣本并入Xd,若聚類個(gè)數(shù)遠(yuǎn)大于Dd樣本量,導(dǎo)致Dd嚴(yán)重偏向于大類(子總體所含樣本量比較大)。
(2)使用Xgboost算法對(duì)Dd進(jìn)行訓(xùn)練,將訓(xùn)練好的Xgboost模型用于測(cè)試Ds,將Ds中分類正確的樣本進(jìn)行遷移,與Dd合并構(gòu)成新訓(xùn)練樣本,再用Xgboost算法對(duì)新訓(xùn)練樣本進(jìn)行訓(xùn)練,將訓(xùn)練好的新模型對(duì)測(cè)試集Dt進(jìn)行分類檢測(cè)。
圖2 CATL算法流程
入侵檢測(cè)數(shù)據(jù)集采用NSL-KDD,該數(shù)據(jù)集有41個(gè)特征屬性和一個(gè)類別標(biāo)簽,類別標(biāo)簽值為正常和非正常,其中KDDTrain為訓(xùn)練集,KDDTest為測(cè)試集,兩者的數(shù)據(jù)分布是不一致的[6]。KDDTrain可認(rèn)為源域,都是有標(biāo)記的數(shù)據(jù),KDDTest為目標(biāo)域。
CATL算法是基于實(shí)例的簡(jiǎn)單遷移分類模型,分類算法的評(píng)估指標(biāo)常見(jiàn)的[8]有準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)和F1值。F1值權(quán)衡了精確率和召回率,其公示如式2。為了評(píng)價(jià)CATL算法的有效性,本文使用準(zhǔn)確率和F1值作為評(píng)價(jià)指標(biāo)。
使用Python語(yǔ)言進(jìn)行編程實(shí)驗(yàn),Xgboost算法使用的是Xgboost-0.82包,K-means++和對(duì)照實(shí)驗(yàn)的算法都在scikitlearn中已實(shí)現(xiàn)。在隨機(jī)種子一樣的情況下,設(shè)置兩組實(shí)驗(yàn)。第一組實(shí)驗(yàn):設(shè)置R為0.1%~1%間,步長(zhǎng)為0.1%,不同比例下進(jìn)行不同組遷移分類模型實(shí)驗(yàn),每組實(shí)驗(yàn)執(zhí)行100次,實(shí)驗(yàn)結(jié)果如圖3所示。由圖中可知,R為0.3%時(shí)準(zhǔn)確率是最低的,出現(xiàn)異常值情況最多;在0.5%~0.9%間都有出現(xiàn)異常點(diǎn),F(xiàn)1值和準(zhǔn)確率平均值都在0.9左右;0.1%下波動(dòng)性最小最穩(wěn)定,準(zhǔn)確率和F1值都在0.83左右。
圖3 不同比例值下CATL算法的準(zhǔn)確率和F1值的箱形圖
第二組實(shí)驗(yàn)為對(duì)照組實(shí)驗(yàn),設(shè)置R=0.1%,因?yàn)樵撝迪翪ATL算法波動(dòng)性最小也最穩(wěn)定,對(duì)照實(shí)驗(yàn)算法有Xgboost、AdaBoost、RandomForest和SVM算法,CATL模型中,Dd的樣本量為20,對(duì)照實(shí)驗(yàn)結(jié)果如圖4所示。CATL算法相較于SVM準(zhǔn)確率提高了9%左右,相較于Xgboost算法準(zhǔn)確率提高了3%左右。
圖4 CATL算法與對(duì)照算法的性能比較
CATL算法在使用不同比例的目標(biāo)域標(biāo)記樣本下總體的執(zhí)行結(jié)果相較于傳統(tǒng)的分類算法性能都有明顯的提升,但該算法的穩(wěn)定性和精準(zhǔn)性對(duì)比例值設(shè)置有很大的依賴性,結(jié)合實(shí)際需要進(jìn)行設(shè)置。
針對(duì)傳統(tǒng)機(jī)器學(xué)習(xí)算法在入侵檢測(cè)實(shí)際應(yīng)用中,訓(xùn)練和測(cè)試樣本分布不一致的情況下,檢測(cè)精準(zhǔn)性低的問(wèn)題,提出了CATL算法。經(jīng)過(guò)相關(guān)實(shí)驗(yàn)測(cè)試,該算法在從目標(biāo)域中獲取用于遷移分類訓(xùn)練的少量有標(biāo)記數(shù)據(jù)20條的情況下,相較于SVM算法準(zhǔn)確率和F1值都提高了9%左右,總體性能有一定的提高,但穩(wěn)定性相較于現(xiàn)有的分類學(xué)習(xí)算法較差,穩(wěn)定性比較依賴于比例值R。下一步工作,思考如何平衡CATL算法的精準(zhǔn)性和穩(wěn)定性,對(duì)其進(jìn)行改進(jìn),并應(yīng)用于高校的實(shí)際使用場(chǎng)景。