湯 亮,張曉冰 ,成林芳
(1.湖南省電子信息產(chǎn)業(yè)研究院,湖南 長沙 410001;2.杭州安恒信息技術(shù)股份有限公司,浙江 杭州 310000)
數(shù)據(jù)的不均衡分布即在數(shù)據(jù)集中有一個(gè)或者幾個(gè)類別的樣本數(shù)量遠(yuǎn)超其他類型的樣本數(shù)。數(shù)據(jù)占比較小的類別稱為少數(shù)類,占比較多的類別成為多數(shù)類[1]。網(wǎng)絡(luò)攻擊類型繁雜,有些攻擊類型很常見如DDOS、暴力破解、ARP欺騙等。而有些攻擊類型出現(xiàn)比較少,如未獲授權(quán)的本地超級用戶特權(quán)訪問、遠(yuǎn)程主機(jī)的未授權(quán)的訪問等。這些類型的攻擊樣本數(shù)比常見類型的攻擊數(shù)量少[2-3]。不同攻擊帶來的后果也是不同的,DDOS攻擊帶來的后果可能是對整個(gè)網(wǎng)絡(luò)破壞,降低服務(wù)性能,阻止終端服務(wù),而遠(yuǎn)程主機(jī)的未授權(quán)訪問會導(dǎo)致主機(jī)被控制從而進(jìn)行違法犯罪活動等?,F(xiàn)有的分類方法對于多數(shù)類別的樣本點(diǎn)識別率高,而少數(shù)類別易被誤分類,從而導(dǎo)致很嚴(yán)重的后果。因此處理不平衡數(shù)據(jù)集,提高模型泛化性能是很重要的。
學(xué)術(shù)界提出了許多針對不平衡數(shù)據(jù)集的處理方法,主要分為兩類,第一類是在數(shù)據(jù)層面,第二類是在算法層面[4-5]。對于數(shù)據(jù)層面,增加少數(shù)類別樣本降低不均衡性稱為過采樣[6-8],減少多數(shù)類別樣本稱為欠采樣[9-10]。欠采樣中典型的方法是隨機(jī)刪除多數(shù)類別的樣本,但是由于樣本的大部分特征相似,隨機(jī)刪除可能會刪除重要的信息,導(dǎo)致模型泛化性能差。過采樣中典型的方法是連續(xù)復(fù)制少類別樣本數(shù),達(dá)到類間平衡,但是因?yàn)橛写罅恐貜?fù)的樣本點(diǎn),可能會導(dǎo)致過擬合。為了防止上述問題,Chawla等人提出了的人工合成新樣本點(diǎn)的SMOTE算法[11],在每個(gè)樣本的特征空間中挑選K個(gè)近鄰,使用隨機(jī)因子選出一個(gè)每個(gè)近鄰與樣本之間的點(diǎn)成為新的樣本點(diǎn)。有效地增加了少數(shù)類別樣本點(diǎn)的數(shù)量,但是對于多數(shù)類別的樣本不產(chǎn)生影響,若一個(gè)少數(shù)類別樣本點(diǎn)附近都是多數(shù)類別容易產(chǎn)生噪聲,影響對于數(shù)據(jù)集的分類效果。而Hui等人提出的基于邊界線的過采樣算法[12](Borderline-SMOTE),對距離邊界較近的樣本點(diǎn)根據(jù)SMOTE的原理,對模糊樣本點(diǎn)進(jìn)行過采樣,可以確定邊界樣本的類別。但是這種方法只針對了邊界樣本,忽略了類內(nèi)樣本分布的問題,類內(nèi)分布不均衡時(shí)也會導(dǎo)致樣本點(diǎn)重合,難以提供有效的分類信息。
在算法層面,學(xué)者提出了很多基于傳統(tǒng)分類器的算法,但是所有傳統(tǒng)分類器的目的都是減少整體的損失或漏報(bào)率。他們大都認(rèn)為所有類別誤分類的代價(jià)相同。但是網(wǎng)絡(luò)攻擊中誤分類的代價(jià)可能導(dǎo)致系統(tǒng)崩潰,重要信息被篡改等,這些代價(jià)是遠(yuǎn)超我們想象的。Khan等提出的基于代價(jià)敏感的特征算法,對于CNN模型中特征和分類器的訓(xùn)練過程進(jìn)行改進(jìn),增加學(xué)習(xí)特征的判別性,和魯棒性。但是代價(jià)敏感學(xué)習(xí)中代價(jià)參數(shù)的設(shè)定需要有先驗(yàn)經(jīng)驗(yàn),因此很難準(zhǔn)確設(shè)定,從而使分類結(jié)果?;趩晤悓W(xué)習(xí)的不均衡數(shù)據(jù)處理算法主要針對多類別樣本進(jìn)行學(xué)習(xí),它的目標(biāo)是從測試的樣本中選出多數(shù)類,因此雖然可以降低時(shí)間成本,但是在對類間不均衡對少數(shù)樣本過擬合,從而使模型泛化性能差。
從數(shù)據(jù)預(yù)處理方面與增強(qiáng)學(xué)習(xí)融合構(gòu)成分類器,提出了基于CanpoySMOTE和AdaboostM1的入侵檢測分類方法,首先使用Canpoy進(jìn)行粗聚類得到噪聲點(diǎn),去除噪聲點(diǎn),同時(shí)使用降采樣方法將多數(shù)類別的數(shù)量降低,減少模型過擬合,然后用SMOTE線性合成少數(shù)類樣本點(diǎn),提高了少數(shù)類別的數(shù)量,從而減少了類間不平衡,形成平衡數(shù)據(jù)集,該平衡樣本可以很好地彌補(bǔ)少數(shù)類別分類樣本數(shù)量不足的缺點(diǎn),又解決了隨機(jī)采樣時(shí)重要信息丟失的問題。與AdaBoostM1分類器結(jié)合,使用隨機(jī)森林作為基分類器,隨機(jī)選取特征子集的特性讓數(shù)據(jù)維度對分類結(jié)果的影響降低,在每次迭代的過程中獲得局部最佳弱分類器,然后對樣本的權(quán)重進(jìn)行更新,雖然訓(xùn)練時(shí)間會增大,但是與原來的不平衡數(shù)據(jù)集在AdaboostM1分類器上的結(jié)果相比,可以有效地提升少數(shù)類別的準(zhǔn)確率,降低平均漏報(bào)率。
首先使用Canopy算法[13]將訓(xùn)練數(shù)據(jù)根據(jù)歐氏距離計(jì)算樣本點(diǎn)到簇中心點(diǎn)的距離,分為多個(gè)Canopy子集,將包含樣本點(diǎn)較少,距離較遠(yuǎn)的子集視為噪聲點(diǎn),刪除這些噪聲數(shù)據(jù),然后對多數(shù)類進(jìn)行隨機(jī)降采樣,降低模型過擬合,最后通過SMOTE抽樣對訓(xùn)練集進(jìn)行類內(nèi)均衡,得到均衡數(shù)據(jù)集,算法流程圖如圖1所示。
圖1 平衡數(shù)據(jù)集構(gòu)造流程圖
Canopy是一種簡單的粗聚類算法,使用歐式距離計(jì)算樣本點(diǎn)到質(zhì)心的距離,與設(shè)定的距離閾值T1,T2進(jìn)行比較。最后根據(jù)每個(gè)簇中樣本點(diǎn)數(shù)以及與每個(gè)質(zhì)心的距離篩選出數(shù)據(jù)集中的干擾點(diǎn),并刪除噪聲樣本。算法步驟如下:
(1)將原始樣本集隨機(jī)排列成樣本列表L={x1,x2,…,xn}根據(jù)先驗(yàn)知識或交叉驗(yàn)證調(diào)參設(shè)定初始距離閾值T1,T2(T1>T2)。
(2)隨機(jī)從列表L中選取一個(gè)樣本點(diǎn)xi,i∈(1,n),作為第一個(gè)Canopy的質(zhì)心,并把x1從列表中刪除。
(3)隨機(jī)從列表L中選取一個(gè)樣本點(diǎn)xp,p∈(1,n)p≠i,計(jì)算xp到所有質(zhì)心的距離,并檢驗(yàn)最小距離Dmin。
(4)若T2≤Dmin≤T1,則給xp一個(gè)弱標(biāo)記,表示Dmin屬于此canopy,并加入。
(5)若Dmin≤T2,則給xp一個(gè)強(qiáng)標(biāo)記,表示Dmin屬于此canopy,且接近質(zhì)心;并將xp從列表中刪除。
(6)若Dmin>T1,則xp形成一個(gè)新的局促,并將xp從列表中刪除。
(7)重復(fù)第三步,直到列表中元素?cái)?shù)變?yōu)榱恪?/p>
刪除canopy簇中樣本點(diǎn)數(shù)少的簇,并將少數(shù)類樣本點(diǎn)附近有超過一倍多數(shù)類樣本點(diǎn)的噪聲點(diǎn)刪除。
SMOTE算法,該算法只對少數(shù)類別的樣本起作用[14-15]。主要思想是通過隨機(jī)尋找少數(shù)類樣本點(diǎn),在距離該樣本點(diǎn)k個(gè)最臨近類中尋找一點(diǎn),進(jìn)行插值,合成新的少數(shù)類實(shí)例,樣本數(shù)少的類別進(jìn)行人工合成新的樣本加入訓(xùn)練集中。該算法合成數(shù)據(jù)的步驟如下:
(1)從數(shù)據(jù)集中挑選出一個(gè)少數(shù)類別的樣本i,特征向量為xi,i∈{1,…,T};
(2)從少數(shù)類別的全部T個(gè)樣本中找到樣本xi的k個(gè)近鄰(例如使用歐氏距離),記為xi(near),near∈{1,…,k};
(3)從這k個(gè)近鄰中隨機(jī)選取一個(gè)樣本xi(nn),再生成一個(gè)(0,1)之間的隨機(jī)數(shù)λ1,從而合成一個(gè)新樣本xi1:
xi1=xi+λ1·(xi(nn)-xi)
(1)
(4)將步驟3重復(fù)N次,從而可以合成N個(gè)新樣本:xinew,new∈{1,…,N}。
對于網(wǎng)絡(luò)數(shù)據(jù)集來說,不同類型的攻擊所引起的代價(jià)不同,傳統(tǒng)的單層決策樹保持不變的訓(xùn)練數(shù)據(jù)每次迭代找到的都是最好的點(diǎn),也都是同一個(gè)點(diǎn)。因此模型的分類精度低,泛化性能差。而AdaBoostM1可多次迭代訓(xùn)練弱分類器,把錯分類樣本數(shù)量權(quán)值進(jìn)行調(diào)整,提高分類模型的泛化性能。每一次訓(xùn)練好的弱分類器將會參與下一次迭代訓(xùn)練。根據(jù)上一次迭代結(jié)果增大誤分類為多數(shù)類的樣本點(diǎn)在訓(xùn)練集中所占權(quán)值,同時(shí)把正確分類樣本點(diǎn)的權(quán)值減少,并進(jìn)入下一次迭代,可以有效地提高分類器的分類性能。下一次迭代產(chǎn)生的分類器更加關(guān)注上一個(gè)分類器分類錯誤的樣本,增加了樣本分類的正確率,最后根據(jù)每次迭代產(chǎn)生的分類器進(jìn)行投票決定分類結(jié)果。每次迭代產(chǎn)生的分類器根據(jù)分類錯誤率來計(jì)算最后組成強(qiáng)分類器時(shí)所占比重。分類錯誤率越低,權(quán)重越高。因此使用AdaBoostM1可以有效降低分類錯誤率,提高少數(shù)類別的分類準(zhǔn)確率,使模型的泛化性能更好。
本文使用隨機(jī)森林作為弱分類器,對于一個(gè)輸入樣本會產(chǎn)生多個(gè)分類結(jié)果,最終分類結(jié)果由隨機(jī)森林中每個(gè)樹投票產(chǎn)生。隨機(jī)森林因?yàn)樗请S機(jī)選取特征子集,因此減少了維度過多帶來的影響,使模型訓(xùn)練的效果更好,增加魯棒性。AdaBoostM1框架如圖2所示。
圖2 AdaBoostM1框架流程圖
實(shí)驗(yàn)使用數(shù)據(jù)集為KDD CUP 99數(shù)據(jù)集。該數(shù)據(jù)集含有大量網(wǎng)絡(luò)流量數(shù)據(jù),大概包含有5,000,000多個(gè)網(wǎng)絡(luò)連接記錄,同時(shí)包含有測試數(shù)據(jù)大約2,000,0000條。為避免數(shù)據(jù)量過大,按10%比例對數(shù)據(jù)集進(jìn)行隨機(jī)抽樣,把抽樣結(jié)果作為學(xué)習(xí)的訓(xùn)練集,使用測試數(shù)據(jù)的10%作為測試集??梢杂行У販p少建立模型的時(shí)間,同時(shí)在精度上影響較小[16]。本文使用的訓(xùn)練數(shù)據(jù)集包含49,399條訓(xùn)練數(shù)據(jù)。測試集包含311,029條測試數(shù)據(jù)記錄。數(shù)據(jù)集中共有41個(gè)特征,4種攻擊類型,分別是拒絕服務(wù)攻擊(Denial of Service,DOS),源于遠(yuǎn)程主機(jī)的權(quán)限獲取攻擊(Remote to Local,R2L),端口監(jiān)視掃描攻擊(PROBE),提權(quán)攻擊(User to Root,U2R)。具體數(shù)據(jù)集攻擊類型數(shù)目分布如表1所示:
表1 原始數(shù)據(jù)集類型分布
由于原始數(shù)據(jù)集中樣本不平衡,U2R的數(shù)量遠(yuǎn)遠(yuǎn)少于DOS和Normal,因此會對結(jié)果造成影響,影響模型的泛化性能,采用Canopy去除噪聲點(diǎn),SMOTE來提高少數(shù)樣本U2R和R2L的樣本數(shù)量,同時(shí)對含有較多記錄的DOS和Normal類型進(jìn)行降采樣,然后將人工合成的U2R和R2L類型的記錄與降采樣得到的數(shù)據(jù)和Probe類型的數(shù)據(jù)混合成一個(gè)新的平衡數(shù)據(jù)集。本文使用的均衡數(shù)據(jù)集數(shù)據(jù)分布如表2所示:
表2 平衡數(shù)據(jù)集分布
本文使用混淆矩陣、漏報(bào)率、ROC曲線來對分類器進(jìn)行評價(jià)[17]?;煜仃囈步凶髡`差矩陣,用來比較分類結(jié)果跟實(shí)際結(jié)果,是可視化描繪出分類器性能的指標(biāo)。
漏報(bào)率、準(zhǔn)確率計(jì)算公式如下:
漏報(bào)率=把某類攻擊樣本判斷為正常樣本的數(shù)量(FP)/該類攻擊樣本總數(shù)
(1)
準(zhǔn)確率=所有預(yù)測類別正確的樣本數(shù)量(TP+TN)/所有類別總的樣本數(shù)量
(2)
ROC曲線橫軸是偽陽性率FPR,縱軸真陽性率TPR。
(3)
真陽性率或真正性率表示模型把正常樣本預(yù)測為正常樣本的數(shù)量與所有預(yù)測為正常樣本數(shù)量的比值。
(4)
偽陽性率或假正性率FPR表示模型把正常樣本預(yù)測為攻擊類型的數(shù)量與所有預(yù)測為攻擊類型的樣本的數(shù)量的比值。
ROC曲線通常用來表示模型分類器的效果,在最佳狀態(tài)下,ROC應(yīng)該在左上角,這表示在較低假陽率的情況下有高真陽性率。
將隨機(jī)抽樣得到的不平衡訓(xùn)練集使用10折交叉驗(yàn)證,把數(shù)據(jù)集中的數(shù)據(jù)均等分為10份,選取一份做驗(yàn)證集,其余9份做訓(xùn)練,依次迭代10次。最后使用10個(gè)模型的平均實(shí)驗(yàn)結(jié)果作為整個(gè)模型的結(jié)果,使用測試集進(jìn)行測試,將在此訓(xùn)練集中訓(xùn)練的模型命名為AdaboostM1。將平衡數(shù)據(jù)集使用10折交叉驗(yàn)證,把隨機(jī)森林作為基分類器,隨機(jī)森林能夠處理高維度數(shù)據(jù)不需要進(jìn)行特征選擇,對于不平衡的數(shù)據(jù)集可以平衡誤差,因此可以與AdaboostM1進(jìn)行結(jié)合。
把在平衡數(shù)據(jù)集上訓(xùn)練得出的模型命名為SMOTEAdboostM1,在原始數(shù)據(jù)集上訓(xùn)練得出的模型命名為AdaboostM1。使用測試集分別對兩種模型進(jìn)行檢驗(yàn),SMOTEAdboostM1模型得到混淆矩陣如表3所示,AdaboostM1模型得到的混淆矩陣如表4所示。表5是AdaboostM1模型和SMOTEAdboostM1模型在測試集上進(jìn)行測試得到的每個(gè)類別漏報(bào)率結(jié)果。表6是AdaboostM1模型和SMOTEAdboostM1模型在測試集上進(jìn)行測試得到的每個(gè)類別準(zhǔn)確率結(jié)果。
表3 SMOTEAdboostM1混淆矩陣
表4 AdaBoostM1混淆矩陣
表5 AdaBoostM1與SMOTEAdboostM1漏報(bào)率(%)
表6 AdaBoostM1與SMOTEAdaBoostM1準(zhǔn)確率(%)
通過表5和表6數(shù)據(jù)表明在使CanpoySMOTE對樣本處理之后,減少了噪聲,解決了樣本不平衡造成的少類別樣本誤差問題。在沒有改變原有整體準(zhǔn)確率的前提下,極大地提高了U2R、R2L的準(zhǔn)確率,同時(shí)減少了漏報(bào)率。
為了進(jìn)一步表明,本文提出的方法對少類別數(shù)據(jù)有較好的應(yīng)用,本文還比較了U2R和R2L在兩個(gè)模型上的ROC曲線。數(shù)據(jù)集中的少數(shù)類別U2R在SMOTEAdaBoostM1模型上的ROC曲線如圖3所示,AUC=0.9779。
圖3 SMOTEAdaBoostM1-U2R ROC曲線
數(shù)據(jù)集中少數(shù)類別U2R在AdaBoostM1模型上的ROC曲線如圖4所示,AUC=0.6297。
圖4 AdaBoostM1-U2R ROC曲線
數(shù)據(jù)集中少數(shù)類別R2LSMOTEAdaBoostM1模型上的ROC曲線如圖5所示,AUC=0.7091。
圖5 SMOTEAdaBoostM1-R2L ROC曲線
數(shù)據(jù)集中少數(shù)類別R2L在AdaBoostM1模型上的ROC曲線如圖6所示,AUC=0.6486。
圖6 AdaBoostM1-R2L ROC曲線
網(wǎng)絡(luò)環(huán)境中攻擊行為多種多樣,收集到的攻擊數(shù)據(jù)樣本數(shù)量不均衡,很難對少數(shù)類別的攻擊行為進(jìn)行判斷,因此本文中使用Canopy去除噪聲點(diǎn),減少了在合成少數(shù)類別樣本點(diǎn)時(shí)的誤差,SMOTE技術(shù)將某種攻擊數(shù)據(jù)量少的類別(R2L和U2R)進(jìn)行人工合成數(shù)據(jù),增加數(shù)據(jù)所占比例,并同時(shí)減少數(shù)量占比較多的類別(DOS和Normal)樣本的數(shù)量,然后使用平衡數(shù)據(jù)集訓(xùn)練AdaboostM1分類器,與原始數(shù)據(jù)集在AdaBoostM1分類器上訓(xùn)練模型進(jìn)行對比。實(shí)驗(yàn)得出在不減少整體數(shù)據(jù)集準(zhǔn)確率的情況下,少數(shù)類別U2R攻擊的準(zhǔn)確率提升20%,R2L攻擊的準(zhǔn)確率提升5%,同時(shí)平均漏報(bào)率降低9%,證明了該方法可以有效提升少類別準(zhǔn)確率,降低平均漏報(bào)率,有效地解決了網(wǎng)絡(luò)入侵檢測少數(shù)類誤分類問題。