劉 成,王佳斌,洪繼煒
(華僑大學(xué)工學(xué)院,泉州 362021)
在現(xiàn)今的大數(shù)據(jù)時(shí)代,網(wǎng)絡(luò)在人們生活中不可或缺。隨著互聯(lián)網(wǎng)的用戶量和規(guī)模不斷增長,網(wǎng)絡(luò)流量也呈現(xiàn)出井噴式的增長,網(wǎng)絡(luò)安全問題也變得越值得重視,如何保障網(wǎng)民的合法利益也變得越來越重要。因此,如何對(duì)大規(guī)模的網(wǎng)絡(luò)流量進(jìn)行異常檢測并分類,是非常值得研究的課題。
近年來,許多國內(nèi)外學(xué)者開始使用機(jī)器學(xué)習(xí)的方法來解決網(wǎng)絡(luò)入侵流量異常檢測和分類情景中所面臨的問題[1]。Erman 等[2]提出使用K-means 算法對(duì)單向流信息進(jìn)行分類。Moore 等[3]改進(jìn)了用于網(wǎng)絡(luò)流分類的傳統(tǒng)樸素貝葉斯算法,但該算法需要穩(wěn)定的數(shù)據(jù)集,不適用于高速和不穩(wěn)定的網(wǎng)絡(luò)。雍凱[4]提出了決策樹屬性的權(quán)重評(píng)估,生成決策樹時(shí),通過優(yōu)先選取權(quán)重較高的屬性來提升單個(gè)決策樹的分類性能。徐鵬等[5]提出利用訓(xùn)練數(shù)據(jù)的信息熵構(gòu)建決策樹分類方法,但該算法難以應(yīng)用于高維樣本。目前,國內(nèi)外對(duì)網(wǎng)絡(luò)流量異常檢測與分類大多是在單機(jī)環(huán)境下進(jìn)行研究,有限的資源難以勝任大數(shù)據(jù)時(shí)代下的大規(guī)模流量異常檢測任務(wù)。
針對(duì)以上不足,本文提出了一種基于Spark平臺(tái)的改進(jìn)隨機(jī)森林算法,對(duì)生成決策樹的Bootstrap 抽樣方法添加約束條件,降低非平衡數(shù)據(jù)對(duì)生成決策樹的影響;同時(shí),利用不平衡度和袋外數(shù)據(jù)對(duì)決策樹進(jìn)行加權(quán),提高隨機(jī)森林算法整體的分類準(zhǔn)確率。
隨機(jī)森林是一種由Breiman[6]提出的集成學(xué)習(xí)分類算法,該算法利用若干個(gè)決策樹來對(duì)樣本進(jìn)行學(xué)習(xí)和預(yù)測,隨機(jī)森林算法的分類原理為:
步驟1:在樣本集中用Bootstrap 采樣并有放回地抽取m個(gè)樣本,產(chǎn)生一個(gè)新生成的子集,并在新生成的子集中選取所有特征中的s個(gè)特征,作為決策樹的分離節(jié)點(diǎn);
步驟2: 重復(fù)步驟1,直到得到n個(gè)決策樹組成隨機(jī)森林;
步驟3:將預(yù)測數(shù)據(jù)交給上一步驟中產(chǎn)生的隨機(jī)森林中的每棵決策樹進(jìn)行預(yù)測,統(tǒng)計(jì)各個(gè)決策樹的預(yù)測結(jié)果,最多決策樹預(yù)測出的類別就是隨機(jī)森林的分類結(jié)果。
隨機(jī)森林算法使用的Bootstrap 重抽樣方法每次抽取總體的三分之二作為一個(gè)訓(xùn)練樣本,不斷地重復(fù)這一個(gè)抽取動(dòng)作,以期望用一系列大小為原訓(xùn)練樣本三分之二的訓(xùn)練樣本搭建出一個(gè)空間,通過這個(gè)空間來無限接近總體。
對(duì)于抽樣子集的不平衡度定義如下:①假設(shè)數(shù)據(jù)集中的樣本數(shù)為 |D|=M。S={(xi,yi) },i= 1,2,…,m,公式中xi滿足xi∈X,X是維度為n的空間,X={f1,f2,…,fn},且yi∈Y,Y是樣本的特征值,Y={1,…,C}。②定義數(shù)據(jù)集的不平衡系數(shù)為B:
其中:Smax和Smin分別為數(shù)據(jù)集的多數(shù)類樣本和少數(shù)類樣本,滿足Smax∪Smin={S}且Smax∩Smin={?}。
從這個(gè)角度可以把抽樣得到的子集分為以下三種:①子集不平衡系數(shù)B′小于原數(shù)據(jù)集不平衡系數(shù)B。②子集不平衡系數(shù)B′大于原數(shù)據(jù)集不平衡系數(shù)B。③抽樣子集中無少數(shù)類樣本,即Smin不存在,子集不平衡系數(shù)B′無法計(jì)算。
以上三種情況在隨機(jī)森林隨機(jī)抽樣中都會(huì)出現(xiàn),其中②和③情況所得的抽樣子集只會(huì)加重樣本的不平衡性,通過這些抽樣子集訓(xùn)練得到的決策樹會(huì)干擾最終的投票效果。
針對(duì)以上的決策樹子集不平衡問題,設(shè)計(jì)了一種基于約束條件的重抽樣Bootstrap 算法。改進(jìn)后的Bootstrap 抽樣會(huì)過濾掉不平衡系數(shù)B′較大的子集,進(jìn)而使不平衡數(shù)據(jù)集對(duì)生成的決策樹產(chǎn)生的影響降低。基于約束條件改進(jìn)后的Bootstrap重抽樣流程如下:
步驟1:利用Bootstrap 抽樣從數(shù)據(jù)集D 中抽取三分之二的數(shù)據(jù)樣本;
步驟2:計(jì)算所抽取的數(shù)據(jù)子集的數(shù)據(jù)非平衡度B,并添加約束條件為數(shù)據(jù)子集的非平衡度小于或等于原數(shù)據(jù)集的非平衡度:
其中:D′max為抽樣得到的數(shù)據(jù)子集中的多數(shù)類數(shù)據(jù),D′min為抽樣得到的數(shù)據(jù)子集中的少數(shù)類數(shù)據(jù);
步驟3:若Bootstrap 抽樣得出的數(shù)據(jù)子集滿足約束條件,則可利用該數(shù)據(jù)子集來構(gòu)造決策樹。
但在訓(xùn)練不平衡數(shù)據(jù)時(shí),隨機(jī)森林的精度和性能下降一直是該算法的應(yīng)用局限性,本文提出了一種基于袋外數(shù)據(jù)和非平衡系數(shù)的加權(quán)隨機(jī)森林算法。文獻(xiàn)[7]研究了貝葉斯公式,得出了評(píng)估各個(gè)分類器性能的公式,將其中的con(i)用袋外數(shù)據(jù)的F1值代替,得出的加權(quán)公式為
其中:N為決策樹分類器的數(shù);F1(i)為第i個(gè)決策樹分類器的袋外數(shù)據(jù)的F1 值;WOOB(i)表示根據(jù)袋外數(shù)據(jù)所求得的第i個(gè)決策樹分類器的權(quán)值。
同時(shí),將得出的各個(gè)數(shù)據(jù)子集的非平衡度B(i)作為權(quán)值的另一個(gè)要素:
綜上所述,改進(jìn)隨機(jī)森林算法主要分為以下步驟:
(1)隨機(jī)Bootstrap 抽樣獲取樣本特征,計(jì)算不平衡度是否滿足構(gòu)建決策樹的條件;
(2)利用Bagging抽樣構(gòu)建決策樹;
(3)通過每棵決策樹的袋外數(shù)據(jù)預(yù)測該決策樹的F1值;
(4)利用分類器性能評(píng)價(jià)公式對(duì)各個(gè)決策樹進(jìn)行加權(quán),并耦合成完整的并行化加權(quán)隨機(jī)森林模型。
本文的實(shí)驗(yàn)環(huán)境由Windows11 平臺(tái)上Vmware Workstation 安裝的三臺(tái)虛擬機(jī)組成,其中一臺(tái)作為Master,兩臺(tái)作為Worker,系統(tǒng)為CentOS,Spark 版本為2.4.4,Hadoop 版本為2.7.1,使用的開發(fā)語言為Scala 2.13。
本文采用的數(shù)據(jù)集是加拿大通信安全機(jī)構(gòu)和加拿大網(wǎng)絡(luò)安全研究所發(fā)布的CIC-IDS-2018網(wǎng)絡(luò)入侵檢測數(shù)據(jù)集,數(shù)據(jù)集提供的流量模擬真實(shí)網(wǎng)絡(luò)流量。CIC-IDS-2018 數(shù)據(jù)集中包括多種不同的攻擊場景,攻擊包含Brute Force FTP,Brute Force SSH,DoS,Heartbleed(OpenSSL 缺陷),Web Attack,Infiltration(滲透),Botnet(僵尸網(wǎng)絡(luò))和DDos。
在分類任務(wù)中,一般使用精確率、召回率以及F1作為評(píng)價(jià)指標(biāo)。為了便于介紹,用混淆矩陣來表示:TP表示實(shí)際與判定都為正類的樣本;FP表示實(shí)際為負(fù)類,但被錯(cuò)誤判定為正類的樣本;FN表示實(shí)際為正類,但被預(yù)測為負(fù)類的樣本;TN表示實(shí)際與判定結(jié)果都為負(fù)類的樣本。
表1 混淆矩陣
精確率的數(shù)學(xué)公式為
召回率的數(shù)學(xué)公式為
F1綜合考慮了召回率和精確率,公式為
由表2可以看出,文中改進(jìn)的隨機(jī)森林算法在對(duì)CIC-IDS-2018 的分類上要優(yōu)于傳統(tǒng)RF 算法。綜合來看,本文提出的改進(jìn)隨機(jī)森林算法利用了決策樹的袋外數(shù)據(jù)和子數(shù)據(jù)集的不平衡系數(shù),并通過加權(quán)來代替隨機(jī)森林中相同權(quán)重的決策樹投票,有效減少了隨機(jī)森林中劣質(zhì)樹的干擾。
表2 文中算法與傳統(tǒng)隨機(jī)森林算法以及AUC值直接作為權(quán)重加權(quán)的隨機(jī)森林算法比較
此外,得益于Spark 分布式平臺(tái)的特性,算法的運(yùn)行時(shí)間大幅度縮短,這是因?yàn)镾park 將文件讀取進(jìn)了內(nèi)存,減少了對(duì)硬盤的頻繁I/O 操作。以下為算法在Spark 分布式平臺(tái)上與單機(jī)平臺(tái)上的運(yùn)行時(shí)間對(duì)比。
圖1 改進(jìn)的隨機(jī)森林算法建模
圖2 不同平臺(tái)下各算法運(yùn)行時(shí)間對(duì)比
本文提出一種基于Spark 的改進(jìn)隨機(jī)森林算法,先根據(jù)數(shù)據(jù)子集的不平衡度對(duì)決策樹的生成過程施加約束,來改善隨機(jī)森林分類算法對(duì)不平衡數(shù)據(jù)集條件下的適用性。接著采用加權(quán)投票的方式減少了隨機(jī)森林中劣質(zhì)樹的干擾,提高隨機(jī)森林算法的分類精度。實(shí)驗(yàn)結(jié)果表明,文中的改進(jìn)隨機(jī)森林算法在CIC-IDS-2018 數(shù)據(jù)集上的分類精度比傳統(tǒng)隨機(jī)森林算法更勝一籌。在以后的研究中,考慮將文中算法與分層抽樣相結(jié)合,來進(jìn)一步改善數(shù)據(jù)子集與原數(shù)據(jù)集樣本類別的一致性。