丁衛(wèi)東
(德州職業(yè)技術學院 山東省德州市 253000)
隨著網絡技術和應用的飛速發(fā)展,網絡資源的雙刃劍效應日漸凸顯。網絡數據竊賊、黑客侵襲以及各種惡意攻擊行為,嚴重損害了人們的利益。在大數據環(huán)境下,海量的數據流需要不斷的去更新和處理,不可避免的給網絡異常檢測帶來了巨大的挑戰(zhàn)。為此,在這一趨勢下迫切需要探索出一種能夠檢測異常數據的機制,該機制不僅能夠檢測網絡中的常見故障,而且能夠及時發(fā)現攻擊行為、判別不法行為。關于網絡異常數據檢測算法,學者進行了一系列探索,朱應武、楊家海、張金祥(2010)的基于流量信息結構的異常檢測方法[1];張玉清、呂少卿、范丹(2015)的在線社交網絡中異常帳號檢測方法[2];周鵬、熊運余(2017)的基于數據挖掘的網絡狀態(tài)異常檢測[3];丁建立、鄒云開、王靜等(2019)提出的基于深度學習的ADS-B 異常數據檢測模型[4]。這些算法都為異常數據監(jiān)測提供了依據,但是適用范圍有限,計算過程復雜。為此,本文以聚類分析為基礎,提出異常數據檢測算法,旨在為網絡中異常數據的檢測提供新的方法。
本文對異常數據檢測算法進行研究,主要是采用K-means 算法構建網絡正常行為模型后,通過將正常行為模型與待檢測數據進行對比,從而判斷數據是否異常。
K-means 算法的核心思想是給定數據集合和需要的聚類數目k時,通常情況下,用戶指定 k,根據某個距離函數進行迭代運算,把所有的數據分入k 個聚類中,直到類簇的數據點與類簇中心的平均距離最小位置[5]。
該算法的基本步驟如下:
(1)從n 個樣本集里隨機選取k 個樣本作為初始聚類中心;
(2)對于樣本集里的其他樣本點,計算它們與初始聚類中心的距離,根據距離最近原則,將其分配到聚類中心所在的類,具體距離采用歐幾里得距離公式(1)計算;
(3)通過計算每一個新類的均值,從而更新聚類中心;
(4)重復第(2)和第(3)兩步驟,直到所有的樣本點分類不再改變?yōu)橹梗?/p>
(5)將(4)中最后得到的簇集V 進行初始化操作,從中得到一個最大的cNi,將Ni 劃分為q 個子簇,每一個子簇對Ni 進行聚類操作,來計算誤差平方和大小,進而選擇出具有一個子簇,該子簇具有最小總數誤差平方和;
(6)重復第(5)步的步驟,直到得到k 個簇。
式中:Dist(Xi,Xj)——樣本點Xi與Xj之間的距離;Xik、Xjk分別表示第i 和第j 個樣本第K 個指標的取值;m——待聚類的個體特征,本文取4。其中,Dist(Xi,Xj)越小,說明樣本之間的性質距離就越相近。
圖1:兩種算法的檢測率
圖2:兩種算法的檢測率與誤報率平衡關系
采用K-means 算法對網絡異常數據進行檢測,主要是構建網絡正常行為模型,判定待檢測的數據是否正常,進而進行異常檢測。其中,Xik、Xjk在網絡異常數據檢測中表述不同時刻的數據屬性度量值。
在K-means 算法中,計算效率為O(tKmn),其中,t 為迭代次數,K 為類簇格式,m 為參與聚類的特征屬性個數,n 為待處理的數據集大小。但是K-means 算法中需要對類簇中心進行迭代修正,因此算法的復雜度較高,且無法對其聚類信度進行檢驗,不適合于直接對網絡異常數據進行檢測。
針對K-means 算法的不足,本文采用直推式信度機(TCM)形成一種新的K-means-TCM 算法,該算法改進了K-means 聚類算法異常數據檢測算法。直推式信度機核心思想是對樣本歸屬已知類別的可信程度評價,利用檢測函數得到P 值。實際上,P 代表一個概率,若P 越大,表示這個將要分類的樣本被分配到某一類已知樣本集的概率越大,剛好能夠彌補K-means 算法的不足。
K-means-TCM 算法是將直推式信度機與K-means 聚類算法結合的綜合性算法,具體是首先根據現有的樣本集,計算將要分類的樣本點與樣本集的空間距離,然后采用直推式信度機對P 值進行計算,從而對分類樣本進行分類。K-means-TCM 算法步驟如下:
(1)采用1.1 中的網絡正常行為模型將正常數據集劃分成h個簇,采用歐氏距離公式分別計算h 個簇與待測樣本點的簇中心距離,將距離最近的一個簇作為檢測樣本點加入到正常數據集中;
(2)根據奇異值,計算得到待測樣本點相對于正常類別的P值;
(3)判定P 值,如果P 值小于設定的閾值(通常為0.05),那么置信度(判定異常的指標)就為1-τ。
關于奇異值計算公式如下:
式中:
k——參數,即最近距離數目。
待測樣本點i 相對于類別m 的P 值為:(3)
式中:
#——集合的“勢”,主要表示有限集合的元素個數;
αi——待分類樣本i 的奇異值;
αj——集合中任意樣本的奇異值;
N——集合的個數。
為了驗證基于聚類分析的異常數據檢測算法有效性,采用1999DARPA 數據集包作為原始數據集。1999DARPA 數據集包中有5 周時間采集的sniffer 網絡流數據,本次仿真分析主要是以“inside”流數據為主,即網關路由與受害主機之間的數據。第一周和第四周中沒有含有任何惡意攻擊數據,在研究中作為正常行為模型的訓練集;第二周、第三周和第五周是正常和異常的混合數據集,其中異常數據中包含DoS 攻擊、U2R、R2L 等201 個攻擊,為此將混合數據集作為待檢測網絡數據。
本次算法仿真軟件為MATLAB R2008b。仿真環(huán)境中,CPU為Intel Pentium4 3.20GHz,內存為2GB,操作系統(tǒng)為Microsoft Windows XP Professional SP2。
在基于聚類分析的異常數據檢測算法仿真分析中,本文采用檢測率和誤報率對算法性能進行評價,具體計算公式如下:
檢測率(TPR):
誤報率(FPR):
式中:
TP——將屬于類別S 的樣例正確地判定為屬于S;
FN——將屬于類別S 的樣例錯誤地判定為不屬于S;
FP——將不屬于類別S 的樣例錯誤地判定為屬于S;
TN——將不屬于類別S 的樣例正確地判定為不屬于S。
異常數據檢測的基本流程是數據采集、數據清理、正常行為模型建立、異常數據檢測。通過對2.1 中原始數據進行清理,得到5000 條數據集樣本。采用基于聚類分析的異常數據檢測算法對數據集樣本進行30 次檢測。檢測過程中,網絡正常行為模型聚類個數為5,異常數據檢測模型中最近鄰數目k 為8,得到異常數據檢測率以及誤報率。
總體來說,本文提出的算法檢測率較高,30 次檢測的均值達到了96.73%,同時誤報率也保持在一個較低的水平。由此可知,基于聚類分析的異常數據檢測算法不僅能夠增強異常數據檢測的高檢測率,而且能夠保持較低的誤差。
為了進一步檢驗基于聚類分析的異常數據檢測算法的優(yōu)勢,將基于聚類分析的異常數據檢測算法與傳統(tǒng)的KNN 算法檢測效果進行比較。具體是從數據集合中分別取10000 條正常的數據及1000條異常的數據,利用十折交叉驗證,取90%作為訓練分類器的訓練集,剩下的10%數據作為測試集,用來驗證不同異常數據檢測算法的效果。檢測過程中,聚類個數為5,最近鄰數目k 為8。檢測10 次后,兩種算法的檢測結果比較見圖1所示。
由圖1可知,本文提出的算法檢測率明顯高于KNN 算法。進一步對兩種算法的檢測率與誤報率平衡關系進行仿真,結果見圖2所示。
通過圖2可知,本文基于聚類分析的異常數據檢測算法,具有較高的檢測率,較低的誤報率,該算法能夠有效地解決異常數據檢測問題。
聚類分析在大數據處理中具有廣泛的應用,但是針對海量數據背景下聚類結果不穩(wěn)定和收斂速度較慢的問題。本文結合K-means算法優(yōu)勢與不足,提出K-means 算法與直推式信度機相結合的異常數據檢測算法。通過仿真分析,基于聚類分析的異常數據檢測算法總體檢測率較高且誤報率低,檢測效果明顯優(yōu)于傳統(tǒng)KNN 算法。隨著大數據時代的深入發(fā)展,未來還需要對基于聚類分析的異常數據檢測算法進行不斷改進與優(yōu)化,從而提高總體性能與應用效果,發(fā)揮其在數據檢測方面的巨大優(yōu)勢。