王青松,李 菲
(遼寧大學(xué) 信息學(xué)院,遼寧 沈陽(yáng) 110036)
數(shù)據(jù)分析伴隨著大數(shù)據(jù)時(shí)代的發(fā)展,Web用戶的異常行為檢測(cè)技術(shù)[1-3]是當(dāng)前研究熱點(diǎn).近幾年,面對(duì)大規(guī)模用戶每天都會(huì)訪問(wèn)Web網(wǎng)頁(yè)所產(chǎn)生的數(shù)據(jù)處理的需求,數(shù)據(jù)分析技術(shù)得以蓬勃發(fā)展.從大量數(shù)據(jù)中找到其背后隱藏的規(guī)律和模式,對(duì)異常數(shù)據(jù)的實(shí)時(shí)檢測(cè)具有重要的實(shí)際應(yīng)用意義[4].統(tǒng)計(jì)數(shù)據(jù)預(yù)測(cè)采用分布式處理、并行處理和網(wǎng)格計(jì)算等方法,結(jié)合相關(guān)的數(shù)據(jù)特征挖掘和聚類,實(shí)現(xiàn)數(shù)據(jù)預(yù)測(cè)[5].
早期人們通常采用端口掃描、報(bào)文特征字段匹配等方法對(duì)異常行為進(jìn)行深入分析以獲取特征,從而實(shí)現(xiàn)Web用戶異常行為的檢測(cè)[6].而人工智能技術(shù)的發(fā)展,機(jī)器學(xué)習(xí)技術(shù)更多地被用于從網(wǎng)絡(luò)數(shù)據(jù)中自動(dòng)計(jì)算異常行為模式、提取其特征,從而自動(dòng)產(chǎn)生檢測(cè)規(guī)則,大大降低了開發(fā)代價(jià),而機(jī)器學(xué)習(xí)主要分為無(wú)監(jiān)督學(xué)習(xí)和有監(jiān)督學(xué)習(xí).
傳統(tǒng)的無(wú)監(jiān)督機(jī)器學(xué)習(xí)算法處理的是無(wú)標(biāo)記或者數(shù)據(jù)趨勢(shì)模糊的情況下,這類算法不僅開銷大而且訓(xùn)練出來(lái)的模型可讀性差,準(zhǔn)確度較低,復(fù)雜度高且不適合時(shí)間序列數(shù)據(jù),對(duì)Web用戶異常行為的檢測(cè)準(zhǔn)確率較低,例如期望最大化算法(Exceptation Maximization)等.
基于有監(jiān)督的機(jī)器學(xué)習(xí)算法通過(guò)利用帶標(biāo)簽的訓(xùn)練數(shù)據(jù)構(gòu)建模型,來(lái)對(duì)未知數(shù)據(jù)進(jìn)行預(yù)測(cè),該類方法在模型可讀性、魯棒性等方面優(yōu)于無(wú)監(jiān)督學(xué)習(xí)的檢測(cè)方法,但易出現(xiàn)過(guò)擬合或欠擬合,泛化能力較差的問(wèn)題.而且對(duì)訓(xùn)練樣本中標(biāo)記數(shù)據(jù)都要檢索一遍,關(guān)鍵特征提取率不高,增加了很多不必要的開銷.例如Teodoro[7]等人研究出基于異常的網(wǎng)絡(luò)入侵技術(shù),提出基于知識(shí)、統(tǒng)計(jì)和機(jī)器學(xué)習(xí)的方法,但是他們的研究并沒(méi)有提出一套最先進(jìn)的機(jī)器學(xué)習(xí)方法.Wu和Banzhaf[8]等人研究計(jì)算智能方法及其在入侵檢測(cè)中的應(yīng)用,詳細(xì)地介紹了人工神經(jīng)網(wǎng)絡(luò)、模糊系統(tǒng)、進(jìn)化計(jì)算、人工免疫系統(tǒng)和群體智能等方法,只描述智能計(jì)算方法,不包括主流的機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘技術(shù)[9],例如決策樹算法(Decision Tree algorithm)、樸素貝葉斯算法(Naive Bayesian algorithm,NB)等.Bing[10]等人研究基于圖分析和支持向量機(jī)的企業(yè)網(wǎng)異常用戶檢測(cè)模型中所提取的特征雜亂,沒(méi)有對(duì)特征的重要性進(jìn)行區(qū)分.
綜合現(xiàn)有的數(shù)據(jù)處理與數(shù)據(jù)挖掘的算法,將C4.5決策樹模型與過(guò)濾特征選擇Relief-F算法相結(jié)合,利用混淆矩陣的理念計(jì)算閾值并進(jìn)行驗(yàn)證,提出一種新的Web用戶異常行為檢測(cè)算法F_C4.5算法.通過(guò)消除冗余特征、減少特征集的大小降低模型建立的復(fù)雜度,對(duì)于用戶行為的分類效果更優(yōu),提高Web用戶異常行為檢測(cè)的效率和準(zhǔn)確度.
在對(duì)訓(xùn)練樣例數(shù)t維度為d的樣本點(diǎn)進(jìn)行回歸時(shí),可能存在d大于或者遠(yuǎn)遠(yuǎn)大于t的情況,在d中可能存在f個(gè)無(wú)用特征,若去除這些無(wú)用特征可能需要枚舉所有可能產(chǎn)生的情況,使用交叉驗(yàn)證的方法對(duì)每一種情況計(jì)算其對(duì)應(yīng)的錯(cuò)誤率,根據(jù)得到的結(jié)果衡量應(yīng)該消除的無(wú)用特征,這種方法對(duì)樣本數(shù)據(jù)的訓(xùn)練和測(cè)試次數(shù)過(guò)多,浪費(fèi)時(shí)間和空間資源.可以采用過(guò)濾特征選擇(Filter feature selection)的方法處理樣本數(shù)據(jù),降低復(fù)雜度并且提高了算法的效率.
過(guò)濾特征選擇方法通過(guò)對(duì)數(shù)據(jù)的常用屬性(例如一致性、相關(guān)性、距離等)進(jìn)行不同的度量來(lái)選擇特征[11].其中最著名的方法是Kira和Rendell在1992年提出的Relief(Relevant Features),以及由Kononenko于1994年提出的上述算法的改進(jìn)版Relief-F[12],這兩種方法通過(guò)設(shè)計(jì)出一個(gè)“相關(guān)統(tǒng)計(jì)量”來(lái)度量某個(gè)特征對(duì)于學(xué)習(xí)任務(wù)的重要性.Relief-F算法[13-14]能處理多分類問(wèn)題,解決了Relief算法在不完全、有噪聲、多類別標(biāo)記的數(shù)據(jù)集上遇到的問(wèn)題.
Relief-F算法的“相關(guān)統(tǒng)計(jì)量”是一個(gè)向量,其每個(gè)分量分別對(duì)應(yīng)一個(gè)初始特征.而子集中的每個(gè)特征對(duì)應(yīng)的的相關(guān)統(tǒng)計(jì)分量的和決定其重要性.算法過(guò)程中需要選取一個(gè)合適的閾值ε,選擇相關(guān)統(tǒng)計(jì)量分量比ε大的對(duì)應(yīng)特征作為訓(xùn)練數(shù)據(jù)進(jìn)行后期的模型構(gòu)建.
算法步驟如下:
1)假定數(shù)據(jù)集D中的樣本來(lái)自|y|個(gè)類別.對(duì)于示例xi若它屬于第k類(k∈{1,2,…,|y|}),則算法先在第k類的樣本中尋找xi的最近示例xi,nm并將其作為猜中近鄰,然后在其他類中找到一個(gè)xi的最近示例將其作為猜錯(cuò)近鄰,記為xi,l,nm(l=1,2,…,|y|;l≠k).
(1)
決策樹算法相當(dāng)于一個(gè)投影,是一種預(yù)測(cè)模型,通過(guò)分類給多個(gè)樣本賦予不同標(biāo)簽,分類的過(guò)程用一棵樹來(lái)表示,分叉后的過(guò)程就是劃分特征的過(guò)程,將屬性值映射到樹的分叉路徑上.
C4.5算法是最著名和最廣泛使用的決策樹算法之一,精度水平高,獨(dú)立于要處理的數(shù)據(jù)量[15].在近幾年的一項(xiàng)比較決策樹和其他學(xué)習(xí)算法的研究表明,C4.5算法是一種追求更低誤報(bào)率和更高速率的結(jié)合型算法.該算法的生成規(guī)則易于理解,使用信息增益來(lái)進(jìn)行決策樹的劃分屬性選擇,充分考慮了關(guān)鍵特征對(duì)分類的影響,對(duì)于離散型和連續(xù)型屬性變量都有較好的處理能力,產(chǎn)生的決策樹泛化能力強(qiáng),預(yù)測(cè)未見數(shù)據(jù)示例的結(jié)果較準(zhǔn)確.
算法步驟:
計(jì)算整個(gè)數(shù)據(jù)集的信息熵Info(D)和各個(gè)屬性的信息熵Infoa(D),其中Pi:當(dāng)前樣本集合D中第i類樣本所占比例(i=1,2,…,m),Dv:第v個(gè)分支結(jié)點(diǎn)包含D中所有在屬性a上取值為av的樣本(假設(shè)離散屬性a有v個(gè)可能的取值{a1,a2,…,av}).
(2)
(3)
計(jì)算分裂信息H(V),通過(guò)信息增益Gain(D,a)來(lái)計(jì)算,一般信息增益越大,代表使用屬性a來(lái)進(jìn)行劃分所獲得的“純度提升”越大.其中a:樣本集中的某一個(gè)特征,V:當(dāng)前被計(jì)算熵特征取值為v的樣本集.
Gain(D,a)=Info(D)-Infoa(D)
(4)
(5)
計(jì)算信息增益率Gain_ratio(D,a),選擇信息增益率最高的特征來(lái)選擇最優(yōu)劃分屬性,構(gòu)建分支.其中:Ⅳ(a)為考慮分裂信息的度量,屬性a的取值數(shù)目越多(即V越大),則Ⅳ(a)的值越大.
(6)
(7)
(4)計(jì)算去除已經(jīng)被使用的特征,按照步驟(1)和(2)、(3)重復(fù)計(jì)算未被選擇的特征,直到數(shù)據(jù)集不能或不用被再次劃分.
Web用戶異常行為檢測(cè)過(guò)程包括對(duì)數(shù)據(jù)模型進(jìn)行訓(xùn)練和對(duì)用戶行為進(jìn)行檢測(cè).在訓(xùn)練階段,系統(tǒng)首先定義并收集大量的正常行為數(shù)據(jù),例如,應(yīng)用程序一段時(shí)間對(duì)外的訪問(wèn)量、主機(jī)CPU利用率、程序占用系統(tǒng)內(nèi)存大小等[16].再利用過(guò)濾特征選擇Relief-F算法對(duì)這些數(shù)據(jù)進(jìn)行預(yù)處理,然后根據(jù)Web用戶正常行為數(shù)據(jù)和Web用戶異常行為數(shù)據(jù)建立C4.5決策樹模型.在檢測(cè)階段,若未知行為數(shù)據(jù)實(shí)例在檢測(cè)模型中的測(cè)試距離與Web用戶正常行為數(shù)據(jù)具有更近的距離,則該數(shù)據(jù)為Web用戶正常行為數(shù)據(jù),否則該數(shù)據(jù)為Web用戶異常行為數(shù)據(jù).
描述一個(gè)樣本可以通過(guò)很多特征,對(duì)于Web日志記錄的數(shù)據(jù)中,有些特征是對(duì)于檢測(cè)Web用戶異常行為的有價(jià)值的“相關(guān)特征”,有些則是幾乎無(wú)價(jià)值“無(wú)關(guān)特征”.對(duì)訓(xùn)練樣本進(jìn)行必要的預(yù)處理可以減輕計(jì)算過(guò)程的復(fù)雜度,有助于提高計(jì)算額準(zhǔn)確性.C4.5決策樹算法雖然能做到處理連續(xù)屬性變量的訓(xùn)練樣本數(shù)據(jù)集,但是需對(duì)訓(xùn)練集反復(fù)進(jìn)行排序及按一定規(guī)則順序掃描,導(dǎo)致算法效率低下[17],而對(duì)數(shù)據(jù)集進(jìn)行過(guò)濾特征選擇處理后改善了由于特征變量過(guò)多決策數(shù)構(gòu)造過(guò)程所造成復(fù)雜度過(guò)高的情況.在Web用戶異常行為檢測(cè)過(guò)程中,F(xiàn)_C4.5算法的實(shí)現(xiàn)過(guò)程分為如下兩個(gè)階段:
1)第一個(gè)階段評(píng)估原始特征集與類的相關(guān)性,從給定的特征集合中選擇出相關(guān)特征子集,處理劃分訓(xùn)練樣本子集,刪除相關(guān)度較低的特征.在給定數(shù)據(jù)集的所有屬性中,通過(guò)過(guò)濾特征選擇Relief-F算法對(duì)數(shù)據(jù)集進(jìn)行第一步預(yù)處理:定義兩個(gè)類別標(biāo)簽,Web用戶正常行為類別標(biāo)簽和Web用戶異常類別標(biāo)簽.更新每個(gè)特征的權(quán)重W(A),公式如下:
(8)
基于從最近的數(shù)據(jù)構(gòu)建好每個(gè)被檢測(cè)數(shù)據(jù)的估計(jì)值,使用混淆矩陣的思想選取閾值ε,混淆矩陣的各個(gè)參數(shù)設(shè)置如表1所示,使用Precision/Recall計(jì)算F1Score,找到閾值ε使得F1Score的值最高.
(9)
(10)
(11)
其中TP為正確預(yù)測(cè)正常樣本(true positives),TN為正確預(yù)測(cè)異常樣本(true negatives),TP和TN得到的都是正確結(jié)果.FP為錯(cuò)誤預(yù)測(cè)正常樣本(false positives),模型預(yù)測(cè)為正常值實(shí)際樣本為異常值;FN為錯(cuò)誤預(yù)測(cè)異常樣本(false negatives),實(shí)際樣本為正常值但模型預(yù)測(cè)為異常值.
2)第二個(gè)階段將兩個(gè)類別標(biāo)簽中保留的相關(guān)特征傳遞給C4.5算法,通過(guò)Web用戶行為的訓(xùn)練數(shù)據(jù)集進(jìn)行遞歸分析構(gòu)建決策樹模型,使用Web用戶行為測(cè)試數(shù)據(jù)集對(duì)構(gòu)建好的決策樹模型進(jìn)行檢測(cè).
當(dāng)有新的Web用戶異常行為發(fā)生時(shí),使用F_C4.5算法進(jìn)行檢測(cè).Web用戶異常行為檢測(cè)算法總體實(shí)現(xiàn)過(guò)程描述如下:
算法:F_C4.5算法
輸入:訓(xùn)練數(shù)據(jù)集D
樣本抽樣次數(shù)m
特征權(quán)重閾值δ
最近鄰樣本個(gè)數(shù)k
輸出:以root為結(jié)點(diǎn)的決策樹
1.置0所有特征權(quán)重,T為空集
2.fori=1 tomdo
(1)從D中隨機(jī)選擇一個(gè)樣本R;
(2)從R的同屬性樣本集中找到樣本R的最近鄰Hj(j=1,2,…,k),找到與R不同屬性集的最近鄰Mj(C),同為k個(gè);
3.forA=1 toNAll feature updateW(A)
4.篩選出比閾值ε大的特征集
5.產(chǎn)生訓(xùn)練集D*={(x1,y1),(x2,y2),…,(xm,ym)},
屬性集A={a1,a2,…,ad} then
6.計(jì)算函數(shù)TreeGenerate(D*,A)
7.得到root結(jié)點(diǎn);
8.ifD*中所有樣本都屬于C類屬性then
9.C類葉節(jié)點(diǎn)更新為root;return
10.end if
11.ifD*中樣本在A上取值相同orA為空集then
12.root更新為葉節(jié)點(diǎn),將對(duì)應(yīng)類屬性更新為D*中有著最多樣本數(shù)的類;return
13.end if
14.從A中選擇Gain_ratio(D*,a)最大的ai作為最優(yōu)劃分屬性
18.分支結(jié)點(diǎn)更新為葉結(jié)點(diǎn),將對(duì)應(yīng)類屬性更新為D*中樣本最多的類;return
19.else
21. end if
22.end for
實(shí)驗(yàn)在Windows10系統(tǒng)下,使用Python語(yǔ)言3.5版本,PyCharm工具運(yùn)行代碼實(shí)現(xiàn)本文的Web用戶異常行為檢測(cè).在UNSW-NB 15數(shù)據(jù)集[18]和KDD CUP1999數(shù)據(jù)集[19]上實(shí)現(xiàn)算法的性能評(píng)估任務(wù).UNSW-NB 15數(shù)據(jù)集的原始網(wǎng)絡(luò)數(shù)據(jù)包是由澳大利亞網(wǎng)絡(luò)安全中心(ACCS)網(wǎng)絡(luò)范圍實(shí)驗(yàn)室的IXIA Perfect Storm工具創(chuàng)建的,用于生成真實(shí)的現(xiàn)代正?;顒?dòng)和合成的現(xiàn)代攻擊行為的混合.TCPDump工具用于捕獲100 GB的原始流量(例如,Pcap文件).該數(shù)據(jù)集有九種類型的攻擊,即模糊攻擊、分析攻擊、后門攻擊、DoS攻擊、利用攻擊、通用攻擊、偵察攻擊、外殼代碼攻擊和蠕蟲攻擊.使用Argus、bros-ids工具,開發(fā)了12種算法來(lái)生成總共49個(gè)帶有類標(biāo)簽的特性.KDD CUP1999數(shù)據(jù)集用于1999年舉行的KDD CUP競(jìng)賽采用的數(shù)據(jù)集,雖然年代久遠(yuǎn),但KDD99數(shù)據(jù)集是網(wǎng)絡(luò)異常檢測(cè)領(lǐng)域的基準(zhǔn).
將UNSW-NB 15數(shù)據(jù)集中的一個(gè)分區(qū)配置為訓(xùn)練集和測(cè)試集,兩個(gè)子集都包含Web用戶正常行為數(shù)據(jù)集和Web用戶異常行為數(shù)據(jù)集.訓(xùn)練集為UNSW_NB15_training-set.csv,記錄數(shù)為175 341條;測(cè)試集為UNSW_NB15_test-set.csv,記錄數(shù)為82 332條.通過(guò)將網(wǎng)絡(luò)流的標(biāo)識(shí)符與相應(yīng)的條件標(biāo)簽相結(jié)合可以跟蹤Web用戶異常行為示例,條件標(biāo)簽描述前面提到的將記錄分為“異?!被颉罢!钡姆诸惣夹g(shù)的結(jié)果.
為了評(píng)估Web用戶異常行為檢測(cè)算法的優(yōu)劣,本文采用混淆矩陣思想進(jìn)行評(píng)價(jià).混淆矩陣是模式識(shí)別領(lǐng)域中一種常用的表達(dá)形式,它描繪樣本數(shù)據(jù)的真實(shí)屬性與識(shí)別結(jié)果類型之間的關(guān)系,是評(píng)價(jià)分類器性能的一種常用方法[20].采用2.2中表1混淆矩陣的定義,創(chuàng)建兩個(gè)指標(biāo):準(zhǔn)確率OSR和誤報(bào)率FAR,使用這兩個(gè)指標(biāo)來(lái)評(píng)估分類器.
(12)
(13)
將F_C4.5算法、C4.5算法、樸素貝葉斯算法(NB)和關(guān)聯(lián)規(guī)則挖掘分類算法(Association rule mining method,ARM)分別用于Web用戶異常行為檢測(cè)中,基于四種不同的模型在UNSW-NB 15數(shù)據(jù)集訓(xùn)練得到的數(shù)據(jù)結(jié)果如表2所示,用戶行為特征分類結(jié)果如表3和圖1所示.
表2 混淆矩陣數(shù)據(jù)
表3 算法分類器性能對(duì)比
圖1 UNSW-NB 15數(shù)據(jù)集中評(píng)價(jià)指標(biāo)的對(duì)比
表4 測(cè)試數(shù)據(jù)集
表5 算法預(yù)測(cè)性能對(duì)比
實(shí)驗(yàn)結(jié)果對(duì)比可以看出,將決策樹算法用于Web用戶異常行為檢測(cè)中準(zhǔn)確率提高并且誤報(bào)率得到了有效降低.與樸素貝葉斯算法(NB)和關(guān)聯(lián)規(guī)則挖掘分類算法(ARM)相比,決策樹C4.5算法的準(zhǔn)確率達(dá)到93.227%,誤報(bào)率則是6.773%,較適用于Web用戶異常行為檢測(cè).而本文的F_C4.5算法在C4.5決策樹算法基礎(chǔ)上先將數(shù)據(jù)集進(jìn)行特征過(guò)濾,消除一部分無(wú)用數(shù)據(jù)后再進(jìn)行決策樹模型構(gòu)建,一方面充分利用了決策樹的優(yōu)勢(shì),用戶行為分類效果更優(yōu);另一方面數(shù)據(jù)集的精確度提高,構(gòu)建決策樹的復(fù)雜度更低.如表3數(shù)據(jù)所示,準(zhǔn)確率達(dá)到94.038%,誤報(bào)率降低到5.962%,從兩個(gè)評(píng)價(jià)指標(biāo)來(lái)看,將F_C4.5算法用于Web用戶異常行為檢測(cè)達(dá)到了更好的效果.
為了進(jìn)一步驗(yàn)證本文算法的可靠性,使用KDD CUP1999入侵?jǐn)?shù)據(jù)集中的測(cè)試數(shù)據(jù)集corrected.gz進(jìn)行第二輪測(cè)試,實(shí)驗(yàn)將測(cè)試集中的Web用戶異常特征分為U2R、DoS、PROBING、R2L,這四類在檢測(cè)中都?xì)w為Web用戶異常行為檢測(cè)數(shù)據(jù)集.測(cè)試數(shù)據(jù)集如表4所示.
用測(cè)試集1和測(cè)試集2分別對(duì)構(gòu)建好的C4.5模型和F_C4.5模型進(jìn)行檢測(cè).實(shí)驗(yàn)結(jié)果顯示,F(xiàn)_C4.5算法的Web用戶異常行為檢測(cè)和Web用戶異常行為檢測(cè)的準(zhǔn)確率都高于C4.5算法,誤報(bào)率低于C4.5算法,由表5的實(shí)驗(yàn)數(shù)據(jù)進(jìn)一步證明,F(xiàn)_C4.5算法的在Web用戶異常行為的檢測(cè)性能優(yōu)于C4.5算法.
本文在Web用戶異常行為檢測(cè)過(guò)程中,綜合考慮了復(fù)雜度過(guò)高對(duì)特征提取的影響,將過(guò)濾特征選擇的思想和混淆矩陣的理念與C4.5決策樹算法結(jié)合提出一個(gè)新的算法F_C4.5算法.過(guò)濾特征選擇利用Relief-F算法,在選擇閾值上通過(guò)混淆矩陣的理念進(jìn)行計(jì)算,得出優(yōu)化特征子集的搜索范圍,從而降低決策樹構(gòu)架過(guò)程中的復(fù)雜度.實(shí)驗(yàn)表明在運(yùn)行性能方面,F(xiàn)_C4.5算法有效降低原始特征集的維數(shù),有效摒除了一部分無(wú)用數(shù)據(jù),從而減少了訓(xùn)練和測(cè)試時(shí)間的消耗,復(fù)雜度降低,對(duì)于Web用戶異常行為檢測(cè)來(lái)說(shuō)該算法取得了很好的效果,具有更高的分類性能.