章 縉 李洪赭 李賽飛
(西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院 成都 611756)
隨著云計(jì)算、大數(shù)據(jù)等信息技術(shù)的發(fā)展和應(yīng)用,各種服務(wù)器集群網(wǎng)絡(luò)的規(guī)模都在變得越來(lái)越龐大和復(fù)雜,同時(shí)也面臨著越來(lái)越多的網(wǎng)絡(luò)安全威脅[1]。網(wǎng)絡(luò)入侵檢測(cè)是提高網(wǎng)絡(luò)安全的有效手段之一,它根據(jù)網(wǎng)絡(luò)流量數(shù)據(jù)或者主機(jī)數(shù)據(jù)來(lái)判斷正常行為或者異常行為,可以抽象為分類(lèi)行為,而機(jī)器學(xué)習(xí)在解決分類(lèi)問(wèn)題時(shí)具有強(qiáng)大的能力,因此很多研究嘗試在入侵檢測(cè)模型中使用機(jī)器學(xué)習(xí)算法[2]。
在各種基于機(jī)器學(xué)習(xí)模型的入侵檢測(cè)方法中,基于隨機(jī)森林模型的方法在訓(xùn)練時(shí)間、誤報(bào)率、未知攻擊的檢測(cè)能力上都具有較好的效果[3],因此很多研究都使用隨機(jī)森林或者隨機(jī)森林與其他算法結(jié)合的模型來(lái)進(jìn)行入侵檢測(cè)判別。文獻(xiàn)[4]提出了一種主成分分析算法與隨機(jī)森林結(jié)合的入侵檢測(cè)算法,首先使用主成分分析算法對(duì)數(shù)據(jù)特征進(jìn)行降維,然后使用隨機(jī)森林進(jìn)行分類(lèi),在提高準(zhǔn)確率上取得了較好效果。文獻(xiàn)[5]使用TF-IDF 算法提取文本中有效載荷的特征,并使用隨機(jī)森林算法進(jìn)行分類(lèi)來(lái)識(shí)別正常流量與攻擊流量,對(duì)攻擊流量的檢測(cè)能力非常好。文獻(xiàn)[6]使用One-R快速屬性評(píng)價(jià)來(lái)解決遇到高維數(shù)據(jù)時(shí)隨機(jī)森林模型在選擇屬性時(shí)過(guò)度隨機(jī)導(dǎo)致的效率不高的問(wèn)題,并在實(shí)驗(yàn)中取得了較好的時(shí)空性能以及較低的誤報(bào)率和漏報(bào)率。文獻(xiàn)[7]使用基于Snort的傳統(tǒng)誤用檢測(cè),結(jié)合基于隨機(jī)森林的離群點(diǎn)異常檢測(cè)方法,實(shí)現(xiàn)了一種混合入侵檢測(cè)系統(tǒng),能夠達(dá)到高檢測(cè)率和低誤報(bào)率。文獻(xiàn)[8]提出了使用KNN 刪除離群數(shù)據(jù)后再結(jié)合多層次隨機(jī)森林來(lái)檢測(cè)網(wǎng)絡(luò)攻擊的方法,在KDD CUP99 數(shù)據(jù)集上能有效檢測(cè)出Probe,U2R,R2L 等攻擊。文獻(xiàn)[9]通過(guò)利用隨機(jī)森林進(jìn)行誤用檢測(cè)、K 均值算法進(jìn)行異常檢測(cè)構(gòu)建了一個(gè)混合入侵檢測(cè)系統(tǒng),具有較高的準(zhǔn)確率和較低誤報(bào)率。文獻(xiàn)[10]通過(guò)引入隨機(jī)性來(lái)降低網(wǎng)絡(luò)流量特征字段噪聲的影響,提高了隨機(jī)森林模型的檢測(cè)效果。上述研究大部分是通過(guò)結(jié)合隨機(jī)森林與其他模型來(lái)提高入侵檢測(cè)能力,也取得了較好的效果,但只有少數(shù)研究考慮了傳統(tǒng)隨機(jī)森林模型本身的一些不足。此外,對(duì)入侵檢測(cè)場(chǎng)景下存在的數(shù)據(jù)集不平衡的問(wèn)題的研究也較少。
針對(duì)傳統(tǒng)隨機(jī)森林用在入侵檢測(cè)時(shí)存在的不足,本文提出了一種針對(duì)基于隨機(jī)森林的入侵檢測(cè)模型的優(yōu)化方案,在隨機(jī)森林的構(gòu)造和決策過(guò)程中加入了精英選擇、加權(quán)投票和上采樣的方法來(lái)提高模型的效果。實(shí)驗(yàn)結(jié)果表明基于優(yōu)化隨機(jī)森林的檢測(cè)模型相比基于傳統(tǒng)隨機(jī)森林的檢測(cè)模型具有更好的檢測(cè)能力。
決策樹(shù)是一種分類(lèi)器模型,也是組成隨機(jī)森林的基礎(chǔ)。常見(jiàn)的決策樹(shù)生成算法主要有ID3[11]、C4.5[12]、CART[13]等,其中ID3 算法是第一個(gè)具有影響力的決策樹(shù)生成算法,后兩種算法都是在其基礎(chǔ)上進(jìn)行優(yōu)化或者借鑒了其思想。ID3 算法引入了信息論中的信息熵的概念,并定義了特征屬性的信息增益。
假設(shè)一個(gè)總樣本集合D 根據(jù)目標(biāo)屬性可以分成m個(gè)不同的類(lèi)別,那么這個(gè)樣本的信息熵為
其中pi為第i種類(lèi)型的子樣本集合Di在總樣本集合D中所占的比例,或Di出現(xiàn)的概率。
一個(gè)屬性給總體帶來(lái)的信息增益,就等同于總體的信息熵與選出屬性后剩余信息熵的差值。假設(shè)要得到A 屬性的信息增益,且A 屬性有k 種不同的值,那么首先要根據(jù)屬性A的值將總樣本分為幾個(gè)子樣本(D1,D2,…,Dk),分別計(jì)算出每個(gè)子樣本的熵,然后加權(quán)求和得到剩余信息熵
其中l(wèi)en()表示括號(hào)中的樣本集的大小。根據(jù)總信息熵和剩余信息熵就可以得到A 屬性的信息增益為
根據(jù)信息熵理論,當(dāng)總樣本中每種類(lèi)型的子樣本出現(xiàn)概率均相同,即對(duì)于任意i,都有pi=1/m 時(shí),信息熵最大為log2m;而如果總樣本某種類(lèi)型的子樣本出現(xiàn)概率遠(yuǎn)大于其他類(lèi)型的子樣本,那么信息熵越小,當(dāng)只有一種類(lèi)型的子樣本時(shí)信息熵為最小值0。因此ID3算法的關(guān)鍵思想就是根據(jù)某種屬性進(jìn)行分類(lèi)后可以讓剩余信息熵最小,這樣劃分后的每個(gè)子樣本的純度就越高。ID3 算法每次挑選分裂使用的特征屬性的時(shí)候,都需要計(jì)算出所有特征屬性的信息增益,選擇其中信息增益最大的特征屬性,根據(jù)這個(gè)特征屬性將樣本分成幾個(gè)子樣本,之后重復(fù)這個(gè)過(guò)程,直到所有樣本都屬于同一類(lèi),或者絕大部分樣本屬于同一類(lèi)為止。
由于決策樹(shù)在面對(duì)維度較高的樣本時(shí)容易過(guò)擬合,因此實(shí)際應(yīng)用中大多使用基于決策樹(shù)的集成模型,其中隨機(jī)森林就是一種由多個(gè)相互獨(dú)立的決策樹(shù)構(gòu)成的分類(lèi)器[14]。隨機(jī)森林具有泛化能力強(qiáng)、訓(xùn)練速度快、能處理高維度的數(shù)據(jù)且不需要進(jìn)行特征選擇等優(yōu)點(diǎn),在很多分類(lèi)問(wèn)題中都得到了廣泛應(yīng)用。
隨機(jī)森林的訓(xùn)練過(guò)程實(shí)際上就是構(gòu)建若干個(gè)決策樹(shù),直到每個(gè)決策樹(shù)都構(gòu)建完畢,隨機(jī)森林就訓(xùn)練完成。其中每個(gè)決策樹(shù)的訓(xùn)練樣本都是通過(guò)Bootstrap 方法從整個(gè)訓(xùn)練樣本中采樣得到,每個(gè)決策樹(shù)用來(lái)進(jìn)行分類(lèi)用的特征屬性都是從所有的特征屬性中隨機(jī)挑選得到,通常挑選的數(shù)量小于特征屬性的總數(shù)。
隨機(jī)森林在測(cè)試時(shí),對(duì)于任意測(cè)試樣本,每一個(gè)決策樹(shù)均會(huì)對(duì)樣本的類(lèi)別進(jìn)行獨(dú)立判斷,最終整個(gè)隨機(jī)森林的分類(lèi)結(jié)果由所有決策樹(shù)的分類(lèi)結(jié)果進(jìn)行投票得到。假設(shè)對(duì)于某一個(gè)測(cè)試樣本X,第k棵決策樹(shù)的輸出為
其中i表示某個(gè)類(lèi)別的序號(hào),則輸出為i的決策樹(shù)的序號(hào)的集合為
其中K 表示決策樹(shù)的個(gè)數(shù)。于是整個(gè)隨機(jī)森林的輸出為
傳統(tǒng)的隨機(jī)森林模型用在入侵檢測(cè)中時(shí),由于本身的一些不足以及數(shù)據(jù)集的問(wèn)題,導(dǎo)致性能不夠好。首先,在傳統(tǒng)的隨機(jī)森林分類(lèi)器中,會(huì)不挑選地直接生成K 個(gè)決策樹(shù),并且每個(gè)決策樹(shù)進(jìn)行投票時(shí)都具有相同的權(quán)重,這種方法構(gòu)建的隨機(jī)森林沒(méi)有考慮到每個(gè)決策樹(shù)的分類(lèi)能力的差別,如果其中某些分類(lèi)能力較差的決策樹(shù)投出錯(cuò)誤的票數(shù),就可能影響整個(gè)隨機(jī)森林的分類(lèi)能力。其次,入侵檢測(cè)環(huán)境中不同類(lèi)別樣本的數(shù)量存在嚴(yán)重的不平衡問(wèn)題,某些攻擊類(lèi)型的樣本數(shù)量非常小,這樣訓(xùn)練出來(lái)的模型容易出現(xiàn)高誤報(bào)和漏報(bào)的情況。因此,針對(duì)這兩種問(wèn)題,本文使用了精英選擇、加權(quán)投票和上采樣的方法來(lái)提高基于隨機(jī)森林的入侵檢測(cè)模型的判別能力。
針對(duì)隨機(jī)森林中可能存在分類(lèi)能力較差的決策樹(shù),以及這些決策樹(shù)投出錯(cuò)誤票數(shù)導(dǎo)致隨機(jī)森林效果下降的問(wèn)題,本文使用精英選擇和加權(quán)投票方法來(lái)提高模型的效果。
在上文中提到隨機(jī)森林中每個(gè)決策樹(shù)的訓(xùn)練樣本都是從總樣本中進(jìn)行Bootstrap采樣得到的,剩余未被采樣到的樣本并沒(méi)有使用到,因此這些剩余樣本可以用來(lái)作為驗(yàn)證數(shù)據(jù)集,驗(yàn)證每個(gè)決策樹(shù)的分類(lèi)能力,并將測(cè)試分?jǐn)?shù)作為這個(gè)決策樹(shù)的權(quán)重:
其中score 是決策樹(shù)分類(lèi)能力評(píng)價(jià)函數(shù),Pred 是決策樹(shù)在驗(yàn)證集上的分類(lèi)結(jié)果,True是驗(yàn)證集的真實(shí)分類(lèi)結(jié)果。根據(jù)這個(gè)權(quán)重就可以對(duì)決策樹(shù)進(jìn)行精英選擇,以及對(duì)決策樹(shù)的投票結(jié)果加權(quán)。
精英選擇的過(guò)程是通過(guò)篩選出若干組候選決策樹(shù)中表現(xiàn)較好的個(gè)體完成的。隨機(jī)森林在構(gòu)建的時(shí)候,每一輪生成個(gè)Nc個(gè)候選決策樹(shù),根據(jù)權(quán)重排序,然后選擇其中的前Nadd個(gè)決策樹(shù)作為精英決策樹(shù),將這些精英決策樹(shù)加入到?jīng)Q策樹(shù)集合中。其中Nadd的計(jì)算公式如下:
決策樹(shù)集合中每次添加了新的精英決策樹(shù)后,還要根據(jù)權(quán)重進(jìn)行排序并將排名倒數(shù)Ndel個(gè)決策樹(shù)淘汰。其中Ndel的計(jì)算公式如下:
經(jīng)過(guò)多輪篩選后,隨機(jī)森林中的決策樹(shù)就基本都是具有較好的分類(lèi)能力的個(gè)體。
加權(quán)投票的過(guò)程考慮到每個(gè)決策樹(shù)所具有的分類(lèi)能力的高低,不再認(rèn)為每個(gè)決策樹(shù)投出的票具有相同的影響力。當(dāng)隨機(jī)森林在進(jìn)行最終分類(lèi)判別投票時(shí),每個(gè)決策樹(shù)的票數(shù)不再是1,而是變?yōu)槠錂?quán)重,于是隨機(jī)森林的輸出由式(6)變?yōu)?/p>
其中k∈Si,Si由式(5)得到。
針對(duì)使用非平衡數(shù)據(jù)集訓(xùn)練決策樹(shù)導(dǎo)致模型對(duì)可能具有高誤報(bào)和漏報(bào)的問(wèn)題,本文通過(guò)引入SMOTE[15]上采樣算法來(lái)使得隨機(jī)森林構(gòu)建時(shí)的數(shù)據(jù)集平衡。
SMOTE 算法是一種基于插值的使用少數(shù)類(lèi)合成新樣本的上采樣方法,其思想是通過(guò)在少數(shù)類(lèi)的相鄰樣本之間插入新的樣本來(lái)擴(kuò)充少數(shù)類(lèi)的數(shù)量。假設(shè)原數(shù)據(jù)集中某個(gè)少數(shù)類(lèi)的樣本數(shù)量為N,其中一個(gè)樣本為Xi,首先需要從N 個(gè)少數(shù)類(lèi)樣本中找出Xi附近的k 個(gè)近鄰Xi,j,j∈[1,k],并隨機(jī)選擇其中一個(gè)近鄰Xi,r,然后得到一個(gè)新的樣本:
其中r是一個(gè)0~1之間的隨機(jī)數(shù)。重復(fù)上述過(guò)程多次后就能得到多個(gè)新的少數(shù)類(lèi)樣本,將新的少數(shù)類(lèi)樣本添加到原始數(shù)據(jù)集中構(gòu)造出新的平衡的數(shù)據(jù)集,然后根據(jù)上文中隨機(jī)森林的構(gòu)建過(guò)程,使用該數(shù)據(jù)集替代原始數(shù)據(jù)集來(lái)訓(xùn)練隨機(jī)森林。經(jīng)過(guò)上采樣后的數(shù)據(jù)集中每個(gè)類(lèi)別的樣本數(shù)量都是一樣的,在一定程度上可以減小原始數(shù)據(jù)集中不平衡的問(wèn)題帶來(lái)的影響。
本文使用的實(shí)驗(yàn)數(shù)據(jù)來(lái)源于UNSW-NB15 數(shù)據(jù)集[16],該數(shù)據(jù)集涵蓋了正常流量報(bào)文數(shù)據(jù)和九種類(lèi)型的攻擊流量報(bào)文數(shù)據(jù),各種類(lèi)型數(shù)據(jù)的數(shù)量及比例如表1所示,從表中可以看出數(shù)據(jù)集確實(shí)存在類(lèi)別不平衡的問(wèn)題,出現(xiàn)最多的類(lèi)別的數(shù)量比出現(xiàn)最少的類(lèi)別的數(shù)量高了幾個(gè)數(shù)量級(jí)。
表1 數(shù)據(jù)集中各類(lèi)型數(shù)據(jù)的數(shù)量及比例
隨機(jī)森林在入侵檢測(cè)模型中通常作為一種分類(lèi)器使用,對(duì)于分類(lèi)器通常采用準(zhǔn)確率Accuracy、精確率Precision、召回率Recall以及F1 這幾個(gè)指標(biāo)來(lái)評(píng)價(jià)模型的效果。設(shè)TP代表真實(shí)類(lèi)型和預(yù)測(cè)類(lèi)型都為正例的數(shù)量,TN 代表真實(shí)類(lèi)型和預(yù)測(cè)類(lèi)型都為反例的數(shù)量,F(xiàn)P 代表真實(shí)類(lèi)型為反例但預(yù)測(cè)類(lèi)型為正例的數(shù)量,F(xiàn)N 代表真實(shí)類(lèi)型為正例但預(yù)測(cè)類(lèi)型為反例的數(shù)量,則上述指標(biāo)的計(jì)算公式如式(12)~式(15)所示。
由于模型的輸出有多個(gè)類(lèi)別,因此計(jì)算總體的Precision、Recall、F1 這幾個(gè)指標(biāo)時(shí)需要先分別計(jì)算出每種類(lèi)型的數(shù)據(jù)的這幾個(gè)指標(biāo),然后進(jìn)行平均,平均的方法常見(jiàn)的有micro、macro、weighted 三種。本文使用weighted 方法,這是一種加權(quán)平均方法,其中每個(gè)類(lèi)的權(quán)重為其數(shù)量在總數(shù)量中的占比。以精確度為例,整體的精確度計(jì)算公式為
其中ni表示第i 類(lèi)數(shù)據(jù)的數(shù)量,Precisioni表示第i 類(lèi)數(shù)據(jù)的精確度。
實(shí)驗(yàn)流程如圖1 所示。原始數(shù)據(jù)集在被用來(lái)進(jìn)行模型擬合前需要先經(jīng)過(guò)一些預(yù)處理。首先,原始數(shù)據(jù)集中存在一些無(wú)效數(shù)據(jù),這些無(wú)效數(shù)據(jù)通常是包含NaN、Infinite的樣本,無(wú)法用來(lái)計(jì)算,因此需要先對(duì)數(shù)據(jù)進(jìn)行過(guò)濾,把無(wú)效數(shù)據(jù)刪除。其次,數(shù)據(jù)集中不同特征屬性的數(shù)據(jù)具有不同的量綱,這樣不同特征屬性帶來(lái)的信息增益無(wú)法進(jìn)行比較,因此為了去除量綱帶來(lái)的影響,需要對(duì)數(shù)據(jù)按照特征進(jìn)行歸一化處理,本文使用MinMax 歸一化方法。最后,由于數(shù)據(jù)標(biāo)簽是字符串,無(wú)法參與計(jì)算,因此需要對(duì)標(biāo)簽進(jìn)行編碼,每一種標(biāo)簽都對(duì)應(yīng)一個(gè)數(shù)字。預(yù)處理完成后將數(shù)據(jù)集劃分為訓(xùn)練集和測(cè)試集。訓(xùn)練集用來(lái)對(duì)模型進(jìn)行擬合,訓(xùn)練過(guò)程中需要使用網(wǎng)格搜索加上5 折交叉驗(yàn)證的方法來(lái)尋找最優(yōu)超參數(shù)。模型訓(xùn)練完成后,使用測(cè)試集來(lái)評(píng)價(jià)模型的分類(lèi)效果。
圖1 實(shí)驗(yàn)流程
模型在訓(xùn)練集和交叉驗(yàn)證集上的學(xué)習(xí)曲線如圖2 所示,由于F1 值是對(duì)模型精確率和召回率的綜合體現(xiàn),因此曲線中使用F1 值作為評(píng)價(jià)指標(biāo)。為了方便表示,圖中以及后文中均使用E 代表使用了精英選擇優(yōu)化,W 代表使用了加權(quán)投票優(yōu)化,S代表使用了上采樣優(yōu)化,RF 代表隨機(jī)森林。從圖中可以看出,在訓(xùn)練集和交叉驗(yàn)證集上,本文引入的幾種優(yōu)化方法均能夠提高隨機(jī)森林的分類(lèi)效果。不過(guò)模型仍然存在高方差的情況,可能需要更多的訓(xùn)練數(shù)據(jù)來(lái)減小方差。
圖2 模型學(xué)習(xí)曲線
由于在訓(xùn)練集和交叉驗(yàn)證集上表現(xiàn)較好的模型還可能存在過(guò)擬合問(wèn)題,因此還需要使用測(cè)試集進(jìn)行驗(yàn)證。驗(yàn)證結(jié)果如表2 所示。從驗(yàn)證結(jié)果可以看出,在測(cè)試集上三種優(yōu)化方法也均能使得隨機(jī)森林的準(zhǔn)確率、精確率、召回率、F1 值有所提高,且隨著優(yōu)化方法的不斷添加,某些指標(biāo)的提升幅度會(huì)變小。但是由于加入了上采樣和精英決策樹(shù)篩選的過(guò)程,并且上采樣后訓(xùn)練數(shù)據(jù)集規(guī)模擴(kuò)增,模型的訓(xùn)練時(shí)間也相應(yīng)變長(zhǎng)。
表2 測(cè)試集驗(yàn)證結(jié)果
針對(duì)傳統(tǒng)隨機(jī)森林用在入侵檢測(cè)場(chǎng)景下由于森林構(gòu)建過(guò)程中的不足,以及數(shù)據(jù)集極度不平衡的問(wèn)題,本文在隨機(jī)森林的構(gòu)建和決策過(guò)程中引入了精英選擇、加權(quán)投票和上采樣優(yōu)化的方法。模型首先對(duì)原始不平衡數(shù)據(jù)集進(jìn)行上采樣產(chǎn)生新的平衡數(shù)據(jù)集,然后利用新的數(shù)據(jù)集構(gòu)建精英決策樹(shù)集合,最后使用加權(quán)投票的方法來(lái)決定隨機(jī)森林的分類(lèi)結(jié)果。實(shí)驗(yàn)結(jié)果表明基于優(yōu)化的隨機(jī)森林的入侵檢測(cè)模型具有更好的檢測(cè)效果。但是,由于加入了上采樣以及精英篩選的過(guò)程,導(dǎo)致優(yōu)化后的模型在訓(xùn)練時(shí)間上更長(zhǎng)。下一步需要研究本文的優(yōu)化方法用在其他集成學(xué)習(xí)模型上的可行性,以及訓(xùn)練時(shí)間優(yōu)化的方法。