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