陳瀅生,周憲章
(1. 重慶人文科技學院計算機工程學院,重慶 401524;2. 西南大學計算機與信息科學學院,重慶 400715;3. 重慶市教育科學研究院,重慶 400015)
隨著科技技術的發展與網絡的普及化,大數據技術逐漸成為熱門領域,被廣泛應用于互聯網檢測[1]、電子商務、經濟學等領域。為了創造安全高效的運行環境,人們對大規模數據集中局部異常挖掘技術提出了更高的要求,不僅要求挖掘技術的效率高,還要求其具備較高的準確性,其關鍵就是對異常挖掘技術作出升級和改進[2]。通過上述分析可知大規模數據集中局部異常挖掘方法成為目前亟需解決的問題和人們研究的熱點。
段曉萌[3]等人首先采集大規模數據集中的局部信息,然后采用機器學習算法提取局部信息的特征值,并推算出異常數據的判斷閾值,最后采用關聯規則算法將特征值與判斷閾值相融合,得到局部異常的數據范圍,完成大規模數據集中局部異常挖掘。該方法沒有剔除大規模數據集中的噪聲,導致方法的挖掘準確率較低。王晗[4]等人提出了一種基于小波-支持向量機的工業取水異常數據挖掘方法,將工業取水數據作為研究樣本,采用小波變換和Fourier函數相結合的方式對異常數據進行識別,然后通過粒子群算法優化最小二乘支持向量機模型,通過優化后的模型實現異常數據挖掘。該方法沒有提取大規模數據中的特征,導致方法的挖掘時間過長。嚴莉[5]等人根據大規模數據的分布情況構建出異構信息網絡模型,然后在模型中引入矩陣分解算法,得到數據之間的相似性,最后采用注意力網絡算法處理數據之間的相似性,得到數據之間的關聯關系,完成數據檢測,挖掘出數據中的異常部分。該方法沒有剔除數據中的噪聲,導致方法的異常挖掘準確率低、精度低。
為了解決上述方法中存在的問題,提出基于堆棧模型的大規模數據集中局部異常挖掘方法。
首先采用離散小波變換剔除數據中的噪聲數據[6],具體步驟如下:
大規模數據集中存在大量的離散型數據,首先通過引入的平方可積函數對大規模數據作傅里葉變換[7],得到具有線性組合的小波函數,公式如下所示

(1)
式中,α表示小波函數;w表示大規模數據中的任意數據點;c表示傅里葉變換參數,K表示平方可積函數。
離散小波變換降噪法利用收縮因子與移動因子對小波函數實行收縮[8]和移動處理,進而得到關于大規模數據的連續小波基函數,公式如下所示

(2)
式中,m、n分別表示收縮因子與移動因子。
通過收縮因子與移動因子的離散化計算,有效地降低了因小波變換引起的數據冗余度。然后將離散后的收縮因子與移動因子重新代入到式(2)中,得到更新后的小波基函數,公式如下所示

(3)
式中,m′、n′分別表示離散化計算后的收縮因子與移動因子。
利用更新后的小波基函數重構離散小波變換函數E(m′,n′),完成大規模數據的降噪處理,公式如下所示:

(4)
將降噪后的大規模數據輸入到堆棧模型中的自編碼器中,完成數據的特征提取[9],具體步驟如下:
1)自編碼器主要由編碼器(輸入層-隱藏層)與解碼器(隱藏層-輸出層)構成,結構如圖1所示。

圖1 自編碼器結構
利用如下公式表示編碼器與解碼器的訓練過程。

(5)
式中,b表示神經元;p、q分別表示堆棧模型中的神經元;V、V′分別表示訓練前、后的數據中心值;a、a′分別表示輸入向量與輸出向量;z、z′分別表示編碼、編碼階段的偏置參數;o表示向量的個數。
2)采用Sigmoid激活函數使大規模數據的輸入向量可以完整的映射[10]在[0,1]區間中,保證輸入向量之間的平行性。激活函數S公式如下所示

(6)
式中,d表示數據之間的映射距離。
3)編碼器將大規模數據集轉換成不同維度的輸入向量,再經過解碼器重新組成輸出向量,計算出兩者之間的重構誤差[11],公式如下所示

(7)
式中,e表示重構誤差。
4)堆棧模型中包含若干個自編碼器,每個自編碼器隱藏層的輸出向量作為下一層的輸入向量,通過自編碼器之間的重復計算完成數據特征的漸進提取,當重構誤差達到最小化時,此時的輸出向量ao即為提取的大規模數據特征。公式如下所示
emin=p(s)[p(r)(…p(1)(ao))]
(8)
式中,s表示堆棧模型的最高層激活函數;r表示中層編碼階段。
采用獨立成分分析算法,對提取的大規模數據特征作投影分析,進而挖掘出數據中的異常值。
提取的大規模數據特征中,包含無限個數據變量,這些變量是由個體原信號與混合矩陣融合得到的。獨立成分分析算法通過對個體原信號與混合矩陣之間的線性變化使數據彼此分離[12],公式如下所示

(9)
式中,Y表示個體原信號;t表示任意時刻;U表示分離矩陣;C表示混合矩陣;F表示數學期望;X表示觀測信號;R表示轉置處理。
個體原信號與分離矩陣作為不確定參數條件,無法同時被確定,所以需要通過先驗知識[13]優化分離矩陣,保證矩陣中的分離信號之間保持最大的獨立性。在獨立成分分析過程中,異常數據可能出現在原信號或者待觀察信號中,個體原信號的模型可用如下公式表示

(10)
式中,G表示數據中的隨機異常值。
為了挖掘出大規模數據集中的異常數據,引入具有投影分析性質的影響函數,其定義公式如下所示

(11)
式中,I表示影響函數;v表示隨機矢量;β表示多項式;D表示可逆矩陣;χ表示影響函數的一般參數;ho表示提取的大規模數據特征向量。
在影響函數中引入協方差矩陣,則由特征向量構成的矩陣中包含協方差矩陣。為了保證消除特征向量矩陣中數據的不必要關聯性,采用主成分分析法得到精度較高的感知矩陣[14],公式如下所示

(12)
式中,W表示感知矩陣;A表示由特征向量構成的矩陣。
引入拉格朗日乘子[15]約束感知矩陣,并選擇出合適的多項式函數,公式如下所示

(13)
式中,l表示拉格朗日乘子;δ表示約束項。
根據式(13)得到的多項式,確定出大規模數據集中異常數據的判斷閾值,將大于閾值的數據視為異常數據,完成大規模數據集中局部異常挖掘。判斷閾值ε公式如下所示

(14)
為了驗證基于堆棧模型的大規模數據集中局部異常挖掘方法的整體有效性,對其做出如下測試。實驗所用數據來自UCI KDD數據集,該數據集是數據挖掘和可視化的研究項目,專注于大型數據收集下載中的實體事件關系。在該數據集中抽取部分數據,相乘15個數據集。將挖掘時間、挖掘準確率和召回率作為評價指標,采用基于堆棧模型的大規模數據集中局部異常挖掘方法、文獻[3]方法、文獻[4]方法和文獻[5]方法做出對比測試。
1)挖掘時間
采用所提方法、文獻[3]方法和文獻[4]方法檢測15組大規模數據集,對比不同方法消耗的局部異常數據挖掘時間。挖掘時間越長,說明方法的效率越低,相反,挖掘時間越短,說明方法的效率越高。不同方法的測試結果用表1表示。

表1 不同方法的數據異常挖掘時間
分析表1中的數據可知,針對大規模數據集中局部異常挖掘,所提方法的挖掘時間在18s附近波動,文獻[3]方法和文獻[4]方法的挖掘時間分別在38s和49s附近波動。通過對比可以發現,針對不同的數據集,所提方法的挖掘時間均低于文獻[3]方法和文獻[4]方法的挖掘時間,表明文獻[3]方法和文獻[4]方法的挖掘效率遠低于所提方法的挖掘效率。
2)挖掘準確率
設P表示數據異常挖掘準確率,其計算公式如下

(15)
式中,TP表示挖掘結果正常、實際為正常的數據數量;FP表示實際為異常但挖掘結果顯示正常的數據數量。
利用所提方法、文獻[3]方法和文獻[5]方法檢測數據集中的異常數據,將不同方法的異常數據挖掘準確率結果繪制成圖,方便分析,結果如圖2所示。

圖2 不同方法的局部異常挖掘準確率
由圖2可知,針對大規模數據集中局部異常挖掘,所提方法的異常挖掘準確率均高于文獻[3]方法和文獻[5]方法的異常挖掘準確率。并且隨著實驗次數的增加,所提方法的異常挖掘準確率沒有發生明顯波動,而文獻[3]方法和文獻[5]方法的異常挖掘準確率上下波動較大。說明所提方法的異常挖掘準確率穩定性強于文獻[3]方法和文獻[5]方法異常挖掘準確率的穩定性。由于所提方法采用離散小波變換算法剔除了大規模數據集中的噪聲數據,預處理后的數據集消除了冗余部分,在異常挖掘過程中降低了噪聲數據的影響,在一定程度上提高了異常挖掘的準確率。
3)召回率
召回率是評價異常數據挖掘精度的重要指標,代表的是在大規模數據集中局部異常挖掘結果中,挖掘出的異常數據量占整體異常數據量的比例,召回率越高,表明方法的挖掘精度越高;召回率越低,表明方法的挖掘精度越低。其計算公式如下所示

(16)
式中,Q表示召回率;FN表示實際為正常但挖掘結果為異常的數據數量。
將所提方法、文獻[4]方法和文獻[5]方法的挖掘召回率測試結果繪制成圖,方便分析,結果如圖3所示。

圖3 不同方法的局部異常挖掘召回率
分析圖3可知,所提方法的挖掘召回率高于文獻[4]方法和文獻[5]方法的挖掘召回率,說明針對大規模數據集中局部異常挖掘,所提方法的挖掘精度高于文獻[4]方法和文獻[5]方法的挖掘精度,其召回率最高值達到了97%,進一步驗證了該方法的挖掘精度。
目前大規模數據集中局部異常挖掘方法存在挖掘時間長、挖掘準確率低、挖掘精度低的問題,因此提出基于堆棧模型的大規模數據集中局部異常挖掘方法。該方法的主要創新點如下:
1)利用離散小波變換算法剔除大規模數據中的噪聲,避免噪聲在異常挖掘過程中產生干擾,進而解決了傳統方法中存在的問題。
2)采用堆棧模型中的自編碼器提取數據的特征,最后采用獨立成分分析算法得到數據中的異常數據,完成大規模數據集中局部異常挖掘,提高了挖掘準確率和挖掘精度的同時,在一定程度上也降低了方法的挖掘時間,為大規模數據的異常挖掘技術奠定了基礎。