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