劉 云,鄭文鳳,張 軼
昆明理工大學(xué)信息工程與自動化學(xué)院,云南 昆明 650500
數(shù)據(jù)特征選擇在大數(shù)據(jù)挖掘和分析及機(jī)器學(xué)習(xí)等領(lǐng)域都有廣泛應(yīng)用,尤其在入侵檢測系統(tǒng)(intrusion detection system,IDS)中,選擇重要數(shù)據(jù)特征是識別網(wǎng)絡(luò)攻擊準(zhǔn)確性的關(guān)鍵因素[1]。為了給分類模型構(gòu)建高效的特征選擇(feature selection,F(xiàn)S)算法,通常用基于互信息(mutual information,MI)的方法學(xué)習(xí)和估算高維數(shù)據(jù)特征的重要性,該方法可以快速找到數(shù)據(jù)特征中的相關(guān)信息,選擇出最大相關(guān)最小冗余(maximum relevance minimum redundancy,mRMR)的 特 征子集[2,3]。
Wang等[4]結(jié)合數(shù)據(jù)特征的關(guān)聯(lián)性,構(gòu)建了互信息增益最大化(mutual information gain maximize,MIGM)算法,通過等效分區(qū)概率對特征數(shù)據(jù)進(jìn)行劃分,并用最大聯(lián)合互信息準(zhǔn)則對候選特征進(jìn)行評估。該方法可以快速識別有效的特征子集,比傳統(tǒng)方法具有更好的適用性。Wei等[5]根據(jù)動態(tài)特征重要性(dynamic feature importance,DFI)指標(biāo),提出基于MI的動態(tài)特征重要性特征選擇(M-dynamic feature importance based feature selection,MDFIFS)算法,使用最大信息系數(shù)有效排除冗余特征,再通過隨機(jī)森林的基尼系數(shù)選出重要特征,所選的特征數(shù)據(jù)與類要素之間有更強(qiáng)的相關(guān)性。但是這些方法都沒有考慮信息熵的偏差校正。
為了在入侵檢測系統(tǒng)中減少信息熵偏差對分類性能的影響,構(gòu)建實時可靠的IDS,本文提出了卡方校正算法(chi-square correction algorithm,CSCA)。首先對所有候選特征進(jìn)行離散化處理,根據(jù)特征的潛在概率分布估計特征選擇相關(guān)標(biāo)準(zhǔn)的偏差;然后,通過考慮偏差的目標(biāo)函數(shù)得到特征選擇的臨界值;最后,通過χ2檢驗優(yōu)化離散化水平和特征偏差,更新特征子集。
選擇重要相關(guān)的特征并及時做出數(shù)據(jù)更新對IDS防御攻擊非常重要。特征選擇的目的就是在所有候選特征集F中選出最優(yōu)特征子集f={f1,f2,…,fs},為分類模型提供在類之間具有最大區(qū)分力的特征數(shù)據(jù),并降低數(shù)據(jù)維度[6]。針對高維數(shù)據(jù)流中存在的特征變化,基于MI的特征選擇方法可減少無關(guān)特征和冗余特征對模型的影響。
為了簡化特征數(shù)據(jù),通常在特征選擇之前把連續(xù)值的特征轉(zhuǎn)換為離散特征。在圖1入侵檢測模型中,將數(shù)據(jù)流中提取的特征和訓(xùn)練后的標(biāo)準(zhǔn)特征動態(tài)離散化為n個區(qū)間,則離散化間隔為{[d0,d1],…,[d n-1,d n]},特征fi的最小值為d0,最大值為d n,d i s是間隔點。特征離散化可能存在信息丟失,但可以減少數(shù)據(jù)噪聲,增加模型的穩(wěn)定性和分類準(zhǔn)確性[7]。
圖1 入侵檢測的特征選擇模型Fig.1 Feature selection model for intrusion detection
數(shù)據(jù)特征離散化后,通過特征選擇的標(biāo)準(zhǔn)為分類器選擇最優(yōu)特征子集,并將該特征子集更新為下一次檢測的候選特征。最后使用支持向量機(jī)(sup?port vector machines,SVM)分類模型檢測攻擊,SVM有效減少了數(shù)據(jù)維度的影響,有較高的分類精度[8]。
為了獨立于分類算法并降低計算成本,一般構(gòu)建基于MI過濾的特征選擇方法評估特征。MI方法能夠測量隨機(jī)變量之間的非線性依賴關(guān)系,評估復(fù)雜分類任務(wù)中數(shù)據(jù)特征的信息內(nèi)容[9]。兩個變量的MI通常用熵表示,熵為信息不確定性的度量,計算形式如下I(X;Y)=H(X)+H(Y)-H(X,Y)(1)其中,H(X)和H(Y)為邊際熵;H(X,Y)為聯(lián)合熵,為變量X和Y平均所需要的信息量。若X是連續(xù)型隨機(jī)變量,則f(x)表示X的概率分布函數(shù)。若用N個等長Δx分隔X,則第i個間隔中觀測樣本的概率值pi=∫f(x)dx≈f(x i)Δx,假設(shè)f(x)在一個區(qū)間內(nèi)近似恒定,熵的近似值如下
其中,N表示總的樣本數(shù),ni為第i個間隔的觀測樣本
假設(shè)一組數(shù)據(jù)集中有K個特征數(shù)據(jù)和M個數(shù)據(jù)類別,用互信息I(f;C)表示特征數(shù)據(jù)中包含的關(guān)于目標(biāo)類別C的信息量,從最大化下式
可以得到特征子集f的最小集合。
為了減少I(f;C)的計算成本,通過聯(lián)合互信息(joint mutual information,JMI)方法[10]選擇第i個特征fi的模型如下式
通過最大化(4)式得到特征選擇標(biāo)準(zhǔn)的最優(yōu)值,即最大特征的相關(guān)性R、最小的特征冗余r和最大特征的互補(bǔ)信息CI,根據(jù)這三個標(biāo)準(zhǔn)可以選擇當(dāng)前最重要的特征。用潛在的概率分布估計特征熵時會引入偏差,假設(shè)樣本ni是多項式獨立分布的,根據(jù)概率函數(shù)在處的泰勒級數(shù),樣本期望為
N是變量X中的離散間隔數(shù),觀測樣本的期望和方差如(7)式
將變量Y分為J個間隔可用下式表示
若x-y平面被分為N×J個大小相等(Δx×Δy)的單元,則變量X和Y聯(lián)合熵的期望為
結(jié)合式(1)可以得到
根據(jù)兩個連續(xù)隨機(jī)變量熵的期望,可以看到互信息I(X;Y)的偏差是
根據(jù)MI計算信息熵中存在的偏差會對特征選擇產(chǎn)生影響,因此需要進(jìn)行偏差校正。設(shè)存在有N個間隔的連續(xù)隨機(jī)變量X和離散的類變量C,K表示類別C的個數(shù),X和C的MI用信息熵表示為
結(jié)合(8)式,假設(shè)給定X的信息熵是一個固定值,用代 替用估 計p(c),則(12)式可寫為
由此可以看到I(X;C)和I(X;Y)產(chǎn)生的偏差是 相 似 的,同 理 可 得I(fi;C),I(f i;fj)的 偏 差。因此,
若N和J是特征fi和fj中的間隔數(shù),可以得到I(fi;fj|C)的偏差是此時,在(4)式的目標(biāo)函數(shù)中添加偏差項為
添加偏差后的目標(biāo)函數(shù)有助于準(zhǔn)確計算JMI,分別對R,r和CI進(jìn)行偏差校正,選出最優(yōu)的特征子集。
由(15)式可以發(fā)現(xiàn),當(dāng)fi和C統(tǒng)計獨立時,相關(guān)性I(fi;C)服從自由度為(N-1)(K-1)的χ2分布。當(dāng)fi和fj統(tǒng)計獨立時,冗余I(f i;fj)服從自由度為(N-1)(J-1)的χ2分布。臨界值和分別如下
同理若給定變量Z,兩個獨立隨機(jī)變量X和Y的條件互信息為
其中,p(x,y,z)是聯(lián)合概率,p(x|z)和p(y|z)是條件概率。假設(shè)q(x,y,z)≡p(x|z)p(y|z)p(z),則有
令p1=p(x,y,z),q1=q(x,y,z),則f(p1)=時泰勒展開,展開式第三項簡化為并忽略高階項,得到下式
將(19)式化為標(biāo)準(zhǔn)表達(dá)式后,I(X;Y|Z)服從自由度為(|X|-1)(|Y|-1)Z的χ2分布。因此,對于給定類別C且在fi和C統(tǒng)計獨立的情況下,I(f i;fj|C)服從自由度為(N-1)(J-1)K的χ2分布。的計算如下
由于特征數(shù)據(jù)的R,r和CI都服從χ2分布,將χ2分布同時用于檢驗離散化和特征選擇,可以減少離散化的信息丟失,同時優(yōu)化偏差得到最優(yōu)目標(biāo)函數(shù)[12]。因此,通過比較(15)式、(16)式和(20)式的臨界值,可以做出特征選擇和離散化水平?jīng)Q策。
首先,CSCA算法使用類信息C計算其MI,根據(jù)其相關(guān)性分別計算每個特征的離散度
其中,f d i i表示特征fi的離散化水平為d i,算法用χ2分布檢驗離散化可以選擇最小的d i,即根據(jù)特征對類別C的依賴,每個特征中不同值的總數(shù)可以確定最大離散間隔d。因此,不同特征值有不同的離散間隔。但是,為了在最大的d內(nèi)實現(xiàn)特征數(shù)據(jù)最佳的離散化水平,對所有特征使用相同的間隔。離散化水平設(shè)置和特征選擇的主要步驟如算法1。
?
在算法1中,訓(xùn)練得到的特征按照相關(guān)性降序排序,選出相關(guān)性高的特征向量。為了使選擇的特征和類變量C的聯(lián)合性更加相關(guān),通過偏移少量的δ改變新特征的離散化水平,若偏移過大則使特征數(shù)據(jù)將變得不相關(guān)。算法在JCSCA大于特征選擇標(biāo)準(zhǔn)的臨界值時,數(shù)據(jù)特征被選擇。
通過算法1檢驗所有特征的R,r和CI來評估特征的重要程度,若某個特征的r高,則丟棄,若R和CI有意義,則選擇該特征,最終可得到適當(dāng)離散程度的最優(yōu)特征子集。
CSCA在應(yīng)對高維數(shù)據(jù)特征時,可以篩選出重要相關(guān)的約簡特征,提高IDS的檢測準(zhǔn)確性。為了評估算法的性能,使用準(zhǔn)確率(A)、召回率(R)、查準(zhǔn)率(P)和誤報率來衡量IDS的優(yōu)劣。
準(zhǔn)確率為正確分類的樣本數(shù)占總樣本的比例,計算如下
召回率表示被正確分類的樣本中正常數(shù)據(jù)所占的比例,計算如下
查準(zhǔn)率表示預(yù)測為正確的樣本數(shù)中,正確分類數(shù)據(jù)的占比,計算如下
以上式子中,TP表示準(zhǔn)確分類正常數(shù)據(jù)的樣本數(shù),F(xiàn)P表示正常的數(shù)據(jù)中存在誤報的樣本數(shù),TN表示準(zhǔn)確分類攻擊數(shù)據(jù)的樣本數(shù),F(xiàn)N表示攻擊數(shù)據(jù)中被漏報的樣本數(shù)[5,13]。
實際數(shù)據(jù)中R和P指標(biāo)不會都達(dá)到理想值,需要加權(quán)調(diào)和平均F1值進(jìn)行綜合考慮,計算如下
誤報率是將正常的樣本數(shù)據(jù)預(yù)測為攻擊類別所占的比例,計算公式如下
高性能的IDS一定是低誤報率。
為了研究數(shù)據(jù)特征選擇的影響,選用兩個常用的基準(zhǔn)數(shù)據(jù)庫NSL-KDD數(shù)據(jù)集[14]和UNSWNB15數(shù)據(jù)集[15]進(jìn)行實驗仿真。NSL-KDD數(shù)據(jù)集有含125 973個訓(xùn)練樣本和22 543個測試,有4個攻擊類型,提取了41個分類特征,分為符號特征,0-1類型特征和百分比類型特征。UNSW-NB15數(shù)據(jù)集有175 341個訓(xùn)練數(shù)據(jù)和82 332個測試數(shù)據(jù),包含9個攻擊類,提取了44個數(shù)據(jù)特征,主要分為:時間特征,內(nèi)容特征,流特征,基本特征,標(biāo)記特征和其他原始特征。具體的數(shù)據(jù)特征分布如表1。
表1 NSL-KDD和UNSW-NB15數(shù)據(jù)集的特征分布Table 1 Feature distribution of NSL-KDD and UNSW-NB15 datasets
為了提高模型的訓(xùn)練效率,在預(yù)處理中對特征數(shù)據(jù)進(jìn)行歸一化處理,將非數(shù)值特征數(shù)據(jù)轉(zhuǎn)換為數(shù)值,使所有的特征值處于相同的數(shù)量級[16],并采用10折交叉驗證進(jìn)行數(shù)據(jù)仿真,取10次交叉仿真結(jié)果的均值作為對算法性能的估計。
IDS檢測數(shù)據(jù)的準(zhǔn)確率是分析算法精度的重要指標(biāo),可以評估不同特征選擇方法的有效性。在兩個不同的數(shù)據(jù)集中分別選擇幾組特征子集進(jìn)行訓(xùn)練,可以提高算法的可靠性和穩(wěn)定性。MIGM,MDFIFS和CSCA在SVM分類器中的檢測準(zhǔn)確率結(jié)果如圖2所示。
根據(jù)圖2所示,算法的檢測準(zhǔn)確率隨著特征子集的增加而增加,達(dá)到穩(wěn)定值后變化不明顯。CSCA檢測的準(zhǔn)確率明顯更高,平均準(zhǔn)確率比另外兩個算法提高了約5%,達(dá)到95.2%。MIGM算法受冗余特征的影響較大,在準(zhǔn)確率達(dá)到峰值后,檢測準(zhǔn)確率隨著特征的增加有明顯下降。但CSCA達(dá)到收斂時選擇的特征數(shù)更少,說明該算法降低了候選特征的冗余性。
圖2 不同數(shù)據(jù)集中算法的檢測準(zhǔn)確率分析Fig.2 Analysis of detection accuracy of algorithms in different data sets
算法收斂時,IDS的召回率和查準(zhǔn)率也能直接反映特征數(shù)據(jù)選擇算法的檢測精度。表2和表3記錄了不同數(shù)據(jù)集中算法仿真的平均召回率、查準(zhǔn)率和F1值。
在算法的仿真結(jié)果中,通過觀察不同特征數(shù)在多次10折交叉驗證中的綜合指標(biāo)的均值,可以對比不同算法檢測正常數(shù)據(jù)的精度。從表2和表3中可以看到CSCA在兩個數(shù)據(jù)集中的檢測結(jié)果都比較穩(wěn)定,相比于另外兩個算法,該方法R和P的結(jié)果表現(xiàn)更好,且綜合調(diào)整的F1值分別達(dá)到0.955和0.950,明顯提高了模型的檢測性能。
表2 NSL-KDD數(shù)據(jù)集中算法的平均綜合指標(biāo)分析Table 2 Analysis of the aver age comprehensive index of the algor ithm in the NSL-KDD dataset
表3 UNSW-NB15數(shù)據(jù)集中算法的平均綜合指標(biāo)分析Table 3 Analysis of the average comprehensive index of the algorithm in the UNSW-NB15 dataset
誤報率是衡量IDS系統(tǒng)性能的關(guān)鍵指標(biāo),誤報過高會導(dǎo)致系統(tǒng)檢測性能下降。隨著特征選擇個數(shù)的變化,NSL-KDD數(shù)據(jù)集和UNSWNB15數(shù)據(jù)集的誤報率結(jié)果如圖3所示。
從圖3可以看出,選擇的特征過少時,特征子集不足以代表所有的類別信息,算法檢測數(shù)據(jù)的誤報率較高。隨著特征個數(shù)的增多,算法的誤報率整體呈下降趨勢,但在某些區(qū)域會出現(xiàn)增長的情況,這主要是受到冗余特征的影響。CSCA通過偏差校正后減少了冗余特征,模型的平均誤報率均比另外兩個算法低3%左右,并且收斂性更快,訓(xùn)練選擇最優(yōu)的特征子集后的誤報率都接近0.01,可以在數(shù)據(jù)動態(tài)變化時減少分類錯誤。
圖3 不同數(shù)據(jù)集中算法的誤報率Fig.3 False alarm rate of algorithms in different data sets
在面臨高維復(fù)雜的網(wǎng)絡(luò)入侵?jǐn)?shù)據(jù)時,傳統(tǒng)MI特征選擇算法的性能達(dá)不到理想的效果?;趧討B(tài)離散化的CSCA能更好地減少特征冗余,選擇最優(yōu)的特征子集。利用離散化方法對所有候選特征預(yù)處理,再根據(jù)MI的特征選擇標(biāo)準(zhǔn)計算相關(guān)偏差;然后通過卡方檢驗校正偏差目標(biāo)函數(shù),最后選出當(dāng)前最重要的特征子集。仿真結(jié)果表明,CSCA精確提取重要的數(shù)據(jù)特征,使IDS具有更高的檢測精度和更低的誤報率。為了提高IDS對未知攻擊的檢測度,下一步將深入研究如何應(yīng)對數(shù)據(jù)流中的漂移變化。