李斌, 張燕
(1.商洛學院 商洛學院科技處,陜西 商洛 726000;2.商洛學院 數(shù)學與計算機應(yīng)用學院,陜西 商洛 726000)
傳統(tǒng)基于模式識別的入侵檢測方法需要大量完備的訓練數(shù)據(jù)集進行模型訓練,才能使檢測模型具有較高的檢測準確率。而在實際的網(wǎng)絡(luò)入侵檢測中,網(wǎng)絡(luò)入侵方法日新月異,收集完備的訓練數(shù)據(jù)集幾乎是不可能的,并且收集和標記數(shù)據(jù)的過程難度大、費用高,導致數(shù)據(jù)集有少量的有標簽樣本和大量的無標簽樣本,在此情況下,傳統(tǒng)的監(jiān)督學習算法無法取得較好的分類性能。由于這種情況在實際應(yīng)用中普遍存在,如網(wǎng)絡(luò)入侵檢測[1]、軟件檢測[2-4]、醫(yī)療診斷[5]和文本檢測[6]等等。
現(xiàn)有算法大多是面向均衡數(shù)據(jù)集,在均衡數(shù)據(jù)集下有較好的泛化性能,如文獻[7]中的成對標記法,每次迭代對正負類樣本各選擇一個進行標記,這樣就要求數(shù)據(jù)集是均衡的,即兩類樣本的數(shù)量相當,而在實際應(yīng)用中,兩類樣本的數(shù)量是不相當?shù)模缭诰W(wǎng)絡(luò)數(shù)據(jù)流中,存在大量的正常行為數(shù)據(jù)和極少量的入侵行為數(shù)據(jù),而對入侵檢測系統(tǒng)來說真正要關(guān)注的是對入侵行為的查準率和漏報率。因此本文結(jié)合半監(jiān)督學習、bagging算法和online learning等算法思想,提出半監(jiān)督集成學習,并將該算法應(yīng)用到網(wǎng)絡(luò)入侵檢測中。
集成學習算法通過一定方法改變數(shù)據(jù)集的分布,獲得多個訓練數(shù)據(jù)集,進而獲得多個基分類器,然后對多個集分類器按照一定的策略進行集成獲得強分類器,實踐和理論都證明,該方法有較好的泛化性能[8-9]。為了讓集成學習算法有更好的適應(yīng)性,應(yīng)對數(shù)據(jù)集不斷更新的問題,不少專家學者提出了在線集成學習及其改進算法[10]。在線集成學習算法是假設(shè)新到的數(shù)據(jù)都有正確兩點類別標簽,而實際應(yīng)用中,對新的數(shù)據(jù)流的類別進行標記需要花費大量的代價,導致訓練數(shù)據(jù)中有大量的無標記樣本,在線集成學習算法在面對較多無標記樣本時無法取得很好的分類性能。為此,本文結(jié)合半監(jiān)督算法及在線集成學習算法思想,設(shè)計了半監(jiān)督集成學習算法,詳細的算法流程如圖1所示。
半監(jiān)督集成學習算法的關(guān)鍵要解決幾個問題:① 如果獲得多個基分類器,例如可以用Boosting方法或者bagging方法;② 每次迭代中選擇哪些樣本進行標記,一旦標記錯誤,在后續(xù)的迭代中,錯誤會被累積,影響最終分類器的性能;③ 每輪標記多少樣本,每輪迭代標記樣本數(shù)越多,算法的速度越快,但標記錯誤的概率就會增加,每輪迭代標記的樣本數(shù)越少,準確性會提高,但是算法的速度會降低,因此如何在標記速度與準確度之間進行選擇;④ 算法的終止條件。
圖1 半監(jiān)督集成學習模型
針對以上問題,該算法用bootstrap方法進行有放回抽樣,構(gòu)建m訓練數(shù)據(jù)集并獲得m個基分類器,計算法m個基分類器的權(quán)重。每次迭代中選擇優(yōu)選所有基分類器預測結(jié)果相同的樣本進行標記,如果不存在這樣的樣本,則選擇75%以上的基分類器標記相同的樣本進行標記,否則采用2/3的基分類器相同的樣本。本文算法每輪迭代標記樣本的數(shù)量不確定。對于所有分類器預測結(jié)果相同的樣本,全部進行標記;75%以上基分類器相同時采用成對標記;若是2/3以上分類器預測結(jié)果相同時,選擇一個樣本進行標記。當?shù)螖?shù)達到最大值或者所有無標簽樣本都被標記或者沒有滿足條件的樣本,則算法終止。詳細的算法步驟如下。
改進的半監(jiān)督Bagging算法
輸入:有標簽樣本集T, 無標簽樣本集U。
步驟1:循環(huán)m次,用bootstrap方法構(gòu)建m個訓練子集并獲得m個基分類器。
步驟2:若U≠?則用m個基分類器對U進行預測,結(jié)果為prej=predict(Cj,U)。
步驟3:依據(jù)prej選擇樣本LS。
步驟4:對于LS中每個樣本XLik,若XLij≠XLi-1k則,取消該樣本的標記,重新放回U中;否則,標記樣本,從U中刪除該樣本。
步驟5:對LS中每個樣本,對每個基分類器采用泊松分布m←Possion(1)進行重采樣,并對每個基分類器進行m次更新。
在集成階段采用加權(quán)投票的方式進行集成,權(quán)值如何計算是進行加權(quán)集成的關(guān)鍵。為了減少數(shù)據(jù)不均衡對集成分類器的影響,假設(shè)兩類樣本錯分代價綜合相等,用N+表示正類樣本的數(shù)量,N-表示負類樣本的數(shù)量,則兩類樣本的錯分代價用式(1)來計算。
(1)
則基分類器的泛化誤差可表示為被錯分樣本的權(quán)重之和。
(2)
式中:hi(xj)≠yj為樣本xj被分類器hi分欄錯誤。
則基分類器的權(quán)重可表示為:
(3)
數(shù)據(jù)集的選取對算法的性能有較大的影響,但是為了驗證算法的適應(yīng)性,本文采用隨機選擇的方法選擇訓練數(shù)據(jù)集和初始訓練數(shù)據(jù)集。本文試驗部分的試驗數(shù)據(jù)是從NSL-KDD數(shù)據(jù)集20%的訓練集中隨機選擇1 000條數(shù)據(jù)作為訓練數(shù)據(jù)集,用全部的測試集中的數(shù)據(jù)進行測試,并從1 000條訓練數(shù)據(jù)集中隨機選擇的300條作為初始訓練集,用bootstrap方法構(gòu)建初始基分類器,然后用剩余的700條數(shù)據(jù)作為無標簽樣本進行半監(jiān)督學習使用。用NSL-KDD數(shù)據(jù)集的11 850條測試數(shù)據(jù)作為測試數(shù)據(jù)集,試驗數(shù)據(jù)集如表1所示。
表1 試驗數(shù)據(jù)集分布
首先對隨機選取的300條數(shù)據(jù),設(shè)置以式(1)初始化樣本的抽樣概率,然后采用bootstrap方法進行有放回抽樣,迭代多次獲得多個訓練子集,進行訓練并構(gòu)建多個基分類器。然后用剩余的700條數(shù)據(jù)模擬無標簽數(shù)據(jù)進行半監(jiān)督集成學習,最終獲得集成分類器并對測試進行預測。詳細的試驗結(jié)果見表2~表4。決策樹算法C4.5和集成學習算法AdaBoost算法的試驗結(jié)果采用全部訓練集的1 000條數(shù)據(jù)進行訓練,然后對測試集進行測試,而本文算法采用的是先對初始的300條數(shù)據(jù)進行訓練,然后采用半監(jiān)督學習算法對剩余700條數(shù)據(jù)進行半監(jiān)督學習的結(jié)果。
表2 各類數(shù)據(jù)的準確率
表3 各項指標對比
表4 隨機10次試驗的結(jié)果
從表2~表4可以看到,本文所提算法性能要優(yōu)于決策樹C4.5算法。這是因為本文采用試驗數(shù)據(jù)集是不均衡數(shù)據(jù)集,不均衡度比較小,另外訓練數(shù)據(jù)集和測試數(shù)據(jù)集的分布有較大的差異,如表1所示。訓練數(shù)據(jù)集中正常行為數(shù)據(jù)較多,攻擊型數(shù)據(jù)較少,但是在測試集中測試相反,另外本文算法是采用多棵決策樹的集成學習,本文的試驗也再次驗證多棵樹的集成學習算法要比單個決策樹算法性能要好。
另外,從表2~表4還可以看到,本文算法的各項試驗指標的試驗結(jié)果都逼近AdaBoost算法,這是因為AdaBoost算法采用的是全部1 000條記錄進行試驗的結(jié)果,而本文算法采用300條數(shù)據(jù)進行初始訓練,然后采用半監(jiān)督學習的方式對剩余700條數(shù)據(jù)進行學習。即便如此,從表2和表3可以看到,本文所提算法的試驗結(jié)果已經(jīng)接近AdaBoost算法。
由于本文算法在構(gòu)建初始的訓練子集以及對標記樣本加入到對應(yīng)的分類器等過程都有較大的隨機性,因此表2~表4中的數(shù)據(jù)都采用10次試驗。表2中本文算法的試驗結(jié)果是10次試驗中最好和最差兩次試驗對應(yīng)結(jié)果的平均值。表3是計算10次試驗結(jié)果的均值和標準差,然后所得的試驗結(jié)果與C4.5和AdaBoost算法進行對比。圖2是10次試驗中隨機2次試驗結(jié)果對應(yīng)的接受者操作特征曲線(ROC)與C4.5和AdaBoost算法兩種算法對應(yīng)ROC曲線的對比圖。
圖3是對應(yīng)表4 10次試驗結(jié)果各項指標的變化情況,可以看到各項指標的變化相對比較平穩(wěn),表明本文所提算法性能較穩(wěn)定。圖4是多個基分類器中隨機一個分類在100次迭代過程中各個分類器分類準確率的變化曲線,雖然算法在迭代過程中有一些波動,但是算法整體沿主性能提高的方向前進,也就是隨著樣本被標記并加入到訓練數(shù)據(jù)集中,基分類器的性能在不斷提高。由此可以看到,本文算法達到了設(shè)計目標。
圖2 ROC曲線對比圖
圖3 10次試驗各項指標的變化情況
圖4 100次迭代準確率變化情況
針對網(wǎng)絡(luò)入侵檢測無法識別新的攻擊行為,本文結(jié)合半監(jiān)督學習和在線集成學習算法思想,設(shè)計半監(jiān)督集成學習算法,并把該算法應(yīng)用到網(wǎng)絡(luò)入侵檢測中,有效提高網(wǎng)絡(luò)入侵檢測模型的自適應(yīng)性。由算法迭代過程中準確率變化曲線可以看到,算法的波動較大,如何讓算法和檢測模型更加穩(wěn)定將是下階段的主要工作。