劉 祥,李高明,李林陽
(武警工程大學 基礎部,陜西 西安 710086)
入侵檢測技術研究由JamsP.Anderson首次提出[1]。W.T.Tenr在1986年設計出第一款入侵檢測系統。然而,隨著大數據時代的到來,傳統入侵檢測系統存在自適應能力差、漏報率、誤報率高等缺陷。W.Lee和Stolfo首次將數據挖掘技術應用到入侵檢測領域,隨著人工智能的發展,人工智能算法應用于入侵檢測逐漸成為研究的熱點。
支持向量機[2]是基于VC維和結構風險最小理論提出的一種機器學習方法,主要有以下優點:(1)小數據集,泛化能力強;(2)可以有效避免“維數災難”;(3)引入核函數,解決非線性分類問題。因其良好的性能,它被廣泛應用于各領域[3]。2003年饒鮮等[4]將支持向量機應用到入侵檢測領域。自20世紀90年代以來,SVM理論不斷發展和完善,越來越多的改進模型應用到入侵檢測中。近年來,越來越多的進化算法應用到SVM參數優化問題中,標準的粒子群算法(Particle Swarm Optimization,PSO)的思想與傳統進化算法類似,最大的缺點是算法不能保證以概率1收斂到全局最優甚至是局部最優[5]。2004年,我國學者孫俊[6]提出了量子粒子群算法,因量子態的粒子可以以一定的概率出現在搜索空間的任何區域,因此不僅具有傳統粒子群的優點,而且具有很強的全局搜索能力。應用QPSO優化SVM,然而優化后期種群適應度差異小,導致局部收斂。2010年,XL Liu等人利用網格搜索算法搜索核參數和懲罰因子,由于網格搜索算法在全局優化中尋找的點多,找到的模型泛化性能強,耗費了大量的計算資源。
本文主要將精英策略融入量子粒子群算法,在大范圍內初步尋找核參數和懲罰因子。由于量子粒子群算法實現簡單、易操作、收斂速度快、具有全局收斂性,能夠快速得到參數的大致范圍,而后通過網格搜索算法,基于更小精度對參數進行細致搜索,尋找更優質的參數。
支持向量機是一種二分類方法,基本思想是尋找一個最優分類超平面,使得該超平面到兩類點中最近點的距離最大。支持向量機通常可分為線性可分、線性支持及非線性支持向量機3類,分別對應線性可分、近似線性可分及線性不可分數據集。

這里將ai*>0所對應的點叫做支持向量,并用支持向量求解b*,得出決策函數:

針對線性近似可分數據集,對于每一個訓練數據引入一個松弛變量εi,模型允許少量的點落在間隔邊界內或者錯分。此時的數學模型為:

模型的對偶形式不變,約束條件變為0≤ai≤C,C為懲罰因子,C值的大小體現了訓練中對誤分類數據的重視程度。C值的大小與模型的泛化性能相關,此時將ai*>0所對應的點也叫做支持向量。
針對線性不可分數據集,引入核函數思想。先通過升維將低維線性不可分數據映射到高維可分的特征空間,需注意這個高緯空間可能是無限維。引入核函數,將高維空間的內積轉化為原始空間中的運算,常用的核函數有高斯、多項式以及字符串核函數等。在給定數據集的前提下,影響SVM的泛化性能主要有懲罰因子C、核函數類型以及核函數參數3個因素,通常用高斯核函數。本文采用高斯核函數,主要對核函數參數σ和懲罰因子C對模型泛化性能的影響進行討論。優化目標和決策函數為:

量子粒子群算法(Quantum Particle Swarms Optimization,QPSO)是基于量子力學和粒子群算法(Particle Swarms Optimization,PSO)的一種新型種群進化算法,不僅具有PSO算法的優點,而且具有全局收斂的優點。文獻[5]對PSO算法收斂性進行了分析,表明在收斂過程中粒子i以pi為吸引子,隨著迭代次數的增加粒子不斷接近pi,粒子收斂的前提是粒子的每一個維度都收斂到吸引子的對應維度,式(7)是其每一維的更新:

其中,n為粒子的維度;φj(t)是0到1之間的隨機數;pbestij(t)是粒子當前最優位;pgbestj(t)是種群當前全局最優粒子,實現了種群粒子間信息和粒子自身歷史信息的溝通;pi對種群產生約束作用。由于PSO算法中粒子速度有界,并沿著軌道逐步收斂,這種束縛作用使得粒子在一個有限的區域內搜索,導致粒子不能保證以概率1收斂。在QPSO算法中,通過δ勢井場建立這種束縛作用,與PSO算法不同的是,粒子可以概率p在任何區域出現,距離吸引子pi無窮遠的地方出現的概率為0;QPSO的位置信息通過波函數Ψ(X,t)刻畫,處于量子態的粒子滿足薛定諤方程:

其中m為粒子質量,V(X)為粒子所在的勢場。
將式(9)帶入(8),得波函數滿足的微分方程:

假定粒子處于定態,則粒子具有一定的能量,因此波函數為:

其中E為相應的能量,以吸引子pi為中心p建立δ勢井場,其勢能函數V(X)可表示為:

做坐標變換Y=X-p,得到:

將式(9)~式(13)帶入(8),得到:

解出φ,根據波函數的物理意義,波函數模的平方即為概率密度,即:

求得概率分布函數為:

通過蒙特卡洛方法得到位置X的表達式為:

L是特征長度,與質量、普朗克常量等有關;u服從0到1之間的均勻分布。在標準QPSO算法中,L具有時變性,對于第i個粒子的第j維,有:

Cj(t)是平均最優位置,則粒子的進化公式為:

其中,r為0到1之間的隨機數;因子α叫做CE系數,α大小影響算法的性能。
量子粒子群算法盡管擁有較快的收斂速度、良好的全局開發能力,然而仍然避免不了早熟收斂問題。本文將精英策略引入量子粒子群算法,通過精英算法每次迭代保留E個最優粒子并生成NP-E個隨機粒子,即保留了最優信息加快收斂。同時,由于每次迭代粒子的隨機生成提高了全局開發能力,一定程度上避免了局部收斂問題。設NP為種群數量,E為精英數量,算法基本步驟如下。
步驟1:初始化NP個粒子;
步驟2:計算適應度值,更新當前粒子的最優位置和全局最優位置;
步驟3:根據式21)和式(22)計算吸引中心P和平均最優位置C;
步驟4:判斷是否滿足終止條件,若未滿足終止條件,則繼續執行;
步驟5:保留E個最優粒子,隨機生成NP-E個粒子,返回第2步。
網格搜索算法是一種暴力算法,通過枚舉遍歷所有可能的情況來尋找最優解。然而,當不知道參數范圍或者參數范圍很大時,網格搜索算法將消耗大量的計算資源。網格搜索算優化支持向量機的思想,主要是通過預先設定精度將核參數和懲罰因子劃分為網格,遍歷網格中的點。交叉驗證是一種檢驗模型性能的一種統計方法,通過將訓練集劃分為K個子集,每次訓練用K-1個子集訓練,1個子集測試共得到K個結果。本文在前期精英量子粒子群優化時和網格搜素優化時均利用利用3折交叉驗證的方法。
工作原理可簡述如下。
(1)將數據進行預處理,而后數據分為訓練集、驗證集和測試集提取特征。在特征提取方面,本文參考前人已提取的較好的特征;訓練集用來訓練模型;驗證集用來調整超參數即懲罰因子C和核參數σ。
(2)利用EQPSO算法初始化或者更新超參數,參數更新時以第4步的檢測率作為適應度值。
(3)訓練SVM。
(4)利用驗證集驗證SVM模型,判斷是否滿足條件,如果滿足則進行下一步,否則返會第2步。
(5)利用EQPSO算法選擇的參數范圍將其網格化。
(6)逐一枚舉參數訓練SVM。
(7)得出最優參數,利用得到的參數訓練SVM。
(8)利用測試集測試模型泛化性能。
目前,在入侵檢測試驗中比較常用的數據集為KDDCUP99及其修改版NLSKDD。許多研究證明,這兩個數據集并不能代表現代的網絡入侵行為,主要存在以下缺點:(1)訓練數據集中存在大量冗余信息;(2)多條數據存在數據值缺失,且缺失值都是一些重要的因素;(3)數據不平衡;(4)NLSKDD盡管解決了上述問題,然而KDDCUP99是1999年美國軍方的網絡入侵數據,20年前的數據并不能代表現代的網絡流量狀態和入侵環境。因此,本文采用UNSW-NB15數據集。該數據集是澳大利亞網絡安全中心(Australian Centre for Cyber Security,ACCS)網絡實驗室創建的,由真實的正常行為的網絡流量和綜合的攻擊行為網絡流量組成,包括10個標簽,其中1個正常類標簽和9個異常類標簽。本文利用SVM模型解決二分類問題,將Nomal標簽記為1,其余異常類記為0,其中每條記錄有49個特征屬性,特征對應的數值類型有字符型、整數型、浮點型和二進制。由于本文重點研究優化的SVM的入侵檢測效果,故在特征選擇方面參考官網給出的特征選取文中采用的44個特征,分別為 dur、proto、service、state、spkts、dpkts、sbytes、dbytes、rate、sttl、dttl、sload、dload、sloss、dloss、sinpkt、dinpkt、sjit、djit、swin、stcpb、dtcpb、dwin、tcprtt、synack、ackdat、smean、dmean、trans_depth、response_body_len、ct_srv_src、ct_state_ttl、ct_dst_ltm、ct_src_dport_ltm、ct_dst_sport_ltm、ct_dst_src_ltm、is_ftp_login、ct_ftp_cmd、ct_flw_http_mthd、ct_src_ltm、ct_srv_dst、is_sm_ips_ports、attack_cat、label。其 中,前42個特征和最后一個Label特征用于訓練;第43個特征為攻擊類型,用于數據抽樣。數據預處理主要采用字符型數據數字化、稀疏特征合并以及標準化等方法。
3.2.1 利用EQPSO優化SVM初步尋找參數
本文主要研究懲罰因子C和高斯核參數σ,取g=1/2σ2。高斯核函數K(x,y)=exp(-g||x-y||2),將C的取值(0,1 000),g的取值(0,100)。在對SVM參數做粗略搜索時,設置懲罰因子C的精度為1(即搜索域為0到1 000的整數),g的精度設置為0.1(即搜索域為0到100間隔為0.1的所有值)。系數,其中tmax為最大迭代次數,t為當前代數。種群大小PN=20,精英個數E=10,tmax=200;以交叉驗證的正確率的平均數作為適應度值。圖1為迭代次數與適應度的關系圖,得到的最優參數C1=875,g1=0.3,交叉驗證平均正確率為0.930 9。

圖1 迭代次數與適應度關系
3.2.2 利用GS-SVM精細化尋找參數
利用上述所得到的初步最優參數,選取參數C、g范圍分別為(837,877)、(0,0.8)設置懲罰因子C的精度為0.5,g的精度設置為0.01。將在C的范圍中等分出80個點,在g的范圍中等分出80個點。網格搜索算法遍歷6 400個點,最終得出的結果如圖2所示。

圖2 網格搜索算法遍歷6400個點結果
最終得到最優參數C=867、g=0.38,交叉驗證平均正確率為0.941 0。從圖2中可知,當懲罰因子C范圍給定在(837,877)時,核參數g所選的范圍內,對適應度并不敏感,變動微小。C在逐步增大的過程中,適應度值先增大后減小。
為了將本文的入侵檢測模型與量子粒子群優化(QPSO-SVM)模型、差分進化優化(DE-SVM)模型、粒子群優化(PSO-SVM)模型對比,鑒于對比的公平性,將種群數量統一設置為20,參考文獻將懲罰因子C false的范圍為(0,1 000),高斯核參數的范圍為(0,100)訓練數據3 000個,測試數據為3 000,隨機從測試數據中抽取1 000,抽取5次取平均值。比較適應度值(即交叉驗證的平均正確率)以及比較用測試數據測試,以最優參數訓練得出各個模型的正確率、誤報率和漏報率。圖3分別為QPSO-SVM模型、DE-SVM模型、PSOSVM迭代次數與適應度值關系圖,其中檢測率為正確率、誤報率、漏報率3個指標。

圖3 QPSO-SVM模型、DE-SVM模型、PSO-SVM迭代次數與適應度值關系
最優參數和最優適應度如表1所示。用對應的參數、相同的數據訓練表中4個模型并測試,得到4個模型的正確率、誤報率和漏報率。

表1 EQPSO-GS-SVM模型、QPSO-SVM模型、DE-SVM模型和PSO-SVM模型測試結果表
從表1可以看出,EQPSO-GS-SVM模型相比其他3個模型正確率提高,誤報率和漏報率降低。從迭代代數與交叉驗證的準確率的關系圖可以看出收斂速度。本文做了大量實驗,精英量子粒子群模型平均在25次迭代后進入收斂,其余3個模型平均在40次、60次、90次迭代后進入收斂,且泛化性能較后三者好。
本文主要進行了以下3項工作:(1)將精英策略融合于量子粒子群算法中初步優化支持向量機,利用精英策略及量子粒子群算法的優勢,提高了收斂速度,且一定程度上避免了局部收斂;(2)利用網格搜索算法進一步優化支持向量機,提高了收斂精度;(3)在過去的幾十年里,入侵檢測的實驗一直使用KDD99,然而該數據存在許多缺陷,本文使用具有代表性、時效性的UNSW-NB15數據集進行對比實驗,結果較為理想,提高了泛化性能,正確率、誤報率和漏報率均有所改善。本文是對入侵檢測方法的一次有效探索,在探索過程中也存在不足。例如,現實生活中入侵檢測數據的不平衡性、樣本的采集、特征的選擇等都影響著模型的泛化性能,這些問題值得進一步探索。