宋冀峰
(中國政法大學, 刑事司法學院, 北京 100088)
隨著社會信息化水平的不斷提升,網絡中的結構化數據呈現爆發式增長。而面對如此海量的結構化數據,確定其中的異常數據能夠充分滿足高速存儲應用、數據備份、數據共享以及數據容災需求。但是由于結構化數據具有較高的復雜性,導致異常點識別精準率低與辨識耗時長的問題出現[1],因此尋找一種面向海量結構數據異常點辨識的方法是很有必要的。
為此相關研究人員陸續提出各種結構化數據辨識算法。文旭等[2]針對數據辨識精度差問題,提出一種基于因子分析的數據異常辨識算法。通過分解大數據負荷曲線,獲得波動特征較為顯著的隨機分量,求解了隨機分量中的異常數,但在實際應用中,這一算法僅適合于單個異常點檢測,對于連續范圍的異常點檢測的效果差;殷浩然等[3]提出一種基于三維卷積神經網絡的數據異常辨識算法,提取數據矩陣中的異常特征,利用三維卷積神經網完成辨識任務。但該算法的運行過程較為復雜,導致耗時增加。
為此,綜合上述問題,提出基于改進隨機森林的海量結構化數據異常辨識算法。隨機森林作為一種深度學習算法,在數據異常點分類問題中的應用較為廣泛,使用隨機選擇特征子集增加結構化數據中決策樹的隨機性,從而縮小異常檢測的范圍;通過局部敏感哈希算法對結構數據異常點度量,引入相關的向量空間,最終完成對數據異常辨識。
由于原始結構化數據中存在大量環境噪聲分量,這些均是大量不可用的數據,即噪聲點,需要對數據中的噪聲點進行去除。通過互補集合經驗模態分解[4]方法,得到結構數據的本征模態函數,對本征模態函數分量進行重構,獲得增強后的數據,實現數據去噪處理。
互補集合經驗模態分解方法[5]主要依賴于經驗模態分解方法,假設初始結構化數據信號為Z(t),在信號引入正值的隨機白噪聲[6]ui(t)與負值的隨機白噪聲-ui(t),此時的結構化數據信號表達式如下:
Zi(t)=Z(t)+ξ0ui(t),i=1,2,…,n
(1)

(2)
式(2)中,k代表最大相關熵。將正數值的隨機白噪聲的輪數進行到2M輪次數時,結合文獻[8]的研究成果對于經驗模態分解互補集合進行推理,其具體的表達式如下:
(3)
將經驗模態分解集合結果與殘差數值進行組合重構,獲得去噪的結構化數據:
(4)
隨機森林[9]是當前最廣泛的分類器之一,通過隨機選擇特征子集來分裂決策樹的節點,提高決策樹的隨機性,以此實現隨機森林改進,進而提高結構化數據異常范圍的確定精準度。

(5)
式(5)中,T代表超參數,fk(x)代表無剪枝的決策樹,抽樣數據集的預測公式為
(6)
式(6)中,I代表指示函數。AdaBoost算法有著非常優秀的泛化能力,該方法通過不斷更新樣本的權重,使決策樹將精力都使用在之前的分類樣本上,進而提高泛化能力,AdaBoost算法對隨機森林進行T輪加權的具體公式如下:
(7)
式(7)中,αi代表每輪權重系數。經過i-1輪迭代隨機森林模型表達式如下:
Fi-1(x)=α1f1(x)U1(x)+…+Ui-1(x)αi-1fi-1(x)
(8)
結合上述分析,搭建泛化風險函數,具體表達式如下:
(9)

(10)
通過局部敏感哈希算法,在數據異常范圍內訓練數據,將牽引數據集按照不同類別進行分類,設定異常縮小范圍后的數據Q,建立相應的哈希表。其在高斯分布中分布均勻,形成高斯矩陣A,通過結構化數據在高維空間中分布稀疏的情況,獲得結構化數據的中空間幾何坐標位置,假設結構化數據的異常特征向量用(wq1,wq2,…,wqj)表示,j代表結構化數據異常簇個數,wqj代表第j個異常簇在結構數據庫中的比重,向量空間模型中結構化數據異常簇之間的相似度[11]表達式:
(11)
式(11)中,wij代表結構化數據異常簇頻率[12]。通過概率設定閾值,完成異常數據的判斷。
為了驗證提出的基于改進隨機森林的海量結構化數據異常辨識算法有效性,選擇因子分析異常辨識算法與三維卷積神經網絡算法進行對比實驗。
實驗的基礎使用Windows 10系統,在仿真軟件中設定二叉樹為100,數據樣本量為400 GB。
為了更深程度地對結構化數據進行異常點辨識,對結構化數據中的特征值與梯度值的變化曲線進行實驗分析。
分析圖1中的結構化數據特征值變化曲線可知,當時間周期為7、9、10的情況下,結構化數據特征值高于告警值,這說明結構化數據可能存在異常問題,因此這些數據中可能存在異常數據,非常適合進行后續實驗。分析圖2中的結果可知,所有周期的結構化數據梯度值均位于下告警值上方,且周期為8的情況下結構化數據梯度值超過了上告警值,說明非結構數據集合中的異常特征顯著,這種幅度突增的關系顯示了結構化數據存在異常點,以此為基礎進行實驗測試所得的結果具備真實性和可靠性。

圖1 結構化數據特征值變化曲線

圖2 結構化數據梯度值變化曲線
海量結構化數據異常辨識精準度表示被正確標注為異常的數據在所有被標識為異常的數據中的比例,其中異常數據總量為5000個,則3種方法的異常數據辨識數量如表1所示。

表1 3種方法的異常數據辨識數量
結合上述數據得出3種算法的海量結構化數據異常辨識精準度對比結果,具體如圖3所示。

圖3 三種方法的辨識精準度對比結果
分析圖3中的數據可知,隨著實驗次數的增加,3種算法的海量結構化數據異常辨識精準度均呈現顯著的波動變化趨勢。因子分析算法與三維卷積神經網絡算法的辨識精準度都相對較低,且曲線浮動過于不穩定,精準度水平并不高。其中,因子分析算法的辨識精準度最大值為74.7%,最小值為61.9%;三維卷積神經網絡算法的辨識精準度最大值為81.2%,最小值為68.4%。與實驗對比算法相比,所提算法的異常數據辨識精準度最高,辨識精準度最高達到了95.8%,且精準度曲線相對穩定,這是由于所提算法使用隨機選擇特征子集增加了結構化數據中決策樹的隨機性,確定了異常范圍,進一步提高了異常數據辨識精準度。
3種算法的異常數據辨識耗時數據如表2所示。

表2 異常數據辨識耗時數據
為了更為清晰的看到3種算法的辨識耗時的變化趨勢,結合上述數據繪制辨識耗時對比結果圖像,具體如圖4所示。

圖4 3種方法的辨識耗時對比結果
分析圖4中的結果可知,隨著結構化數據量的增加,3種算法的辨識耗時均呈現上升趨勢。當結構化數據量為100 G的情況下,所提算法的辨識耗時為0.77 min,因子分析算法的辨識耗時為2.64 min,三維卷積神經網絡算法的辨識耗時為1.85 min;當結構化數據量為200 G的情況下,所提算法的辨識耗時為1.79 min,因子分析算法的辨識耗時為5.74 min,三維卷積神經網絡算法的辨識耗時為4.01 min;當結構化數據量為300 G的情況下,所提算法的辨識耗時為2.52 min,因子分析算法的辨識耗時為5.72 min,三維卷積神經網絡算法的辨識耗時為4.51 min;當結構化數據量為400 G的情況下,所提算法的辨識耗時為2.52 min,因子分析算法的辨識耗時為5.72 min,三維卷積神經網絡算法的辨識耗時為4.51 min。綜合來看,所提算法的辨識耗時更短、效率更高。
為了在海量數據中精準辨識數據結構化數據異常,其首要工作就是解決原始結構化數據中存在外界環境噪聲干擾的問題。由于原始數據中有大量噪聲數據,通過對互補集合經驗模態分解方法進行噪聲點去除,在此基礎上通過改進隨機深林模型確定異常點范圍,憑借局部敏感哈希算法對結構化數據異常點進行異常度量,可以有效辨識結構化數據中的異常點。實驗結果證明,該算法的辨識精準率高、時間短,具有較強的適用性,可以提高海量結構化數據網絡的安全性,有效避免數據錯誤和異常對用戶造成影響。