陳瀅生,周憲章
(1. 重慶人文科技學院計算機工程學院,重慶 401524;2. 西南大學計算機與信息科學學院,重慶 400715;3. 重慶市教育科學研究院,重慶 400015)
隨著科技技術的發(fā)展與網(wǎng)絡的普及化,大數(shù)據(jù)技術逐漸成為熱門領域,被廣泛應用于互聯(lián)網(wǎng)檢測[1]、電子商務、經(jīng)濟學等領域。為了創(chuàng)造安全高效的運行環(huán)境,人們對大規(guī)模數(shù)據(jù)集中局部異常挖掘技術提出了更高的要求,不僅要求挖掘技術的效率高,還要求其具備較高的準確性,其關鍵就是對異常挖掘技術作出升級和改進[2]。通過上述分析可知大規(guī)模數(shù)據(jù)集中局部異常挖掘方法成為目前亟需解決的問題和人們研究的熱點。
段曉萌[3]等人首先采集大規(guī)模數(shù)據(jù)集中的局部信息,然后采用機器學習算法提取局部信息的特征值,并推算出異常數(shù)據(jù)的判斷閾值,最后采用關聯(lián)規(guī)則算法將特征值與判斷閾值相融合,得到局部異常的數(shù)據(jù)范圍,完成大規(guī)模數(shù)據(jù)集中局部異常挖掘。該方法沒有剔除大規(guī)模數(shù)據(jù)集中的噪聲,導致方法的挖掘準確率較低。王晗[4]等人提出了一種基于小波-支持向量機的工業(yè)取水異常數(shù)據(jù)挖掘方法,將工業(yè)取水數(shù)據(jù)作為研究樣本,采用小波變換和Fourier函數(shù)相結合的方式對異常數(shù)據(jù)進行識別,然后通過粒子群算法優(yōu)化最小二乘支持向量機模型,通過優(yōu)化后的模型實現(xiàn)異常數(shù)據(jù)挖掘。該方法沒有提取大規(guī)模數(shù)據(jù)中的特征,導致方法的挖掘時間過長。嚴莉[5]等人根據(jù)大規(guī)模數(shù)據(jù)的分布情況構建出異構信息網(wǎng)絡模型,然后在模型中引入矩陣分解算法,得到數(shù)據(jù)之間的相似性,最后采用注意力網(wǎng)絡算法處理數(shù)據(jù)之間的相似性,得到數(shù)據(jù)之間的關聯(lián)關系,完成數(shù)據(jù)檢測,挖掘出數(shù)據(jù)中的異常部分。該方法沒有剔除數(shù)據(jù)中的噪聲,導致方法的異常挖掘準確率低、精度低。
為了解決上述方法中存在的問題,提出基于堆棧模型的大規(guī)模數(shù)據(jù)集中局部異常挖掘方法。
首先采用離散小波變換剔除數(shù)據(jù)中的噪聲數(shù)據(jù)[6],具體步驟如下:
大規(guī)模數(shù)據(jù)集中存在大量的離散型數(shù)據(jù),首先通過引入的平方可積函數(shù)對大規(guī)模數(shù)據(jù)作傅里葉變換[7],得到具有線性組合的小波函數(shù),公式如下所示
(1)
式中,α表示小波函數(shù);w表示大規(guī)模數(shù)據(jù)中的任意數(shù)據(jù)點;c表示傅里葉變換參數(shù),K表示平方可積函數(shù)。
離散小波變換降噪法利用收縮因子與移動因子對小波函數(shù)實行收縮[8]和移動處理,進而得到關于大規(guī)模數(shù)據(jù)的連續(xù)小波基函數(shù),公式如下所示
(2)
式中,m、n分別表示收縮因子與移動因子。
通過收縮因子與移動因子的離散化計算,有效地降低了因小波變換引起的數(shù)據(jù)冗余度。然后將離散后的收縮因子與移動因子重新代入到式(2)中,得到更新后的小波基函數(shù),公式如下所示
(3)
式中,m′、n′分別表示離散化計算后的收縮因子與移動因子。
利用更新后的小波基函數(shù)重構離散小波變換函數(shù)E(m′,n′),完成大規(guī)模數(shù)據(jù)的降噪處理,公式如下所示:
(4)
將降噪后的大規(guī)模數(shù)據(jù)輸入到堆棧模型中的自編碼器中,完成數(shù)據(jù)的特征提取[9],具體步驟如下:
1)自編碼器主要由編碼器(輸入層-隱藏層)與解碼器(隱藏層-輸出層)構成,結構如圖1所示。
圖1 自編碼器結構
利用如下公式表示編碼器與解碼器的訓練過程。
(5)
式中,b表示神經(jīng)元;p、q分別表示堆棧模型中的神經(jīng)元;V、V′分別表示訓練前、后的數(shù)據(jù)中心值;a、a′分別表示輸入向量與輸出向量;z、z′分別表示編碼、編碼階段的偏置參數(shù);o表示向量的個數(shù)。
2)采用Sigmoid激活函數(shù)使大規(guī)模數(shù)據(jù)的輸入向量可以完整的映射[10]在[0,1]區(qū)間中,保證輸入向量之間的平行性。激活函數(shù)S公式如下所示
(6)
式中,d表示數(shù)據(jù)之間的映射距離。
3)編碼器將大規(guī)模數(shù)據(jù)集轉(zhuǎn)換成不同維度的輸入向量,再經(jīng)過解碼器重新組成輸出向量,計算出兩者之間的重構誤差[11],公式如下所示
(7)
式中,e表示重構誤差。
4)堆棧模型中包含若干個自編碼器,每個自編碼器隱藏層的輸出向量作為下一層的輸入向量,通過自編碼器之間的重復計算完成數(shù)據(jù)特征的漸進提取,當重構誤差達到最小化時,此時的輸出向量ao即為提取的大規(guī)模數(shù)據(jù)特征。公式如下所示
emin=p(s)[p(r)(…p(1)(ao))]
(8)
式中,s表示堆棧模型的最高層激活函數(shù);r表示中層編碼階段。
采用獨立成分分析算法,對提取的大規(guī)模數(shù)據(jù)特征作投影分析,進而挖掘出數(shù)據(jù)中的異常值。
提取的大規(guī)模數(shù)據(jù)特征中,包含無限個數(shù)據(jù)變量,這些變量是由個體原信號與混合矩陣融合得到的。獨立成分分析算法通過對個體原信號與混合矩陣之間的線性變化使數(shù)據(jù)彼此分離[12],公式如下所示
(9)
式中,Y表示個體原信號;t表示任意時刻;U表示分離矩陣;C表示混合矩陣;F表示數(shù)學期望;X表示觀測信號;R表示轉(zhuǎn)置處理。
個體原信號與分離矩陣作為不確定參數(shù)條件,無法同時被確定,所以需要通過先驗知識[13]優(yōu)化分離矩陣,保證矩陣中的分離信號之間保持最大的獨立性。在獨立成分分析過程中,異常數(shù)據(jù)可能出現(xiàn)在原信號或者待觀察信號中,個體原信號的模型可用如下公式表示
(10)
式中,G表示數(shù)據(jù)中的隨機異常值。
為了挖掘出大規(guī)模數(shù)據(jù)集中的異常數(shù)據(jù),引入具有投影分析性質(zhì)的影響函數(shù),其定義公式如下所示
(11)
式中,I表示影響函數(shù);v表示隨機矢量;β表示多項式;D表示可逆矩陣;χ表示影響函數(shù)的一般參數(shù);ho表示提取的大規(guī)模數(shù)據(jù)特征向量。
在影響函數(shù)中引入?yún)f(xié)方差矩陣,則由特征向量構成的矩陣中包含協(xié)方差矩陣。為了保證消除特征向量矩陣中數(shù)據(jù)的不必要關聯(lián)性,采用主成分分析法得到精度較高的感知矩陣[14],公式如下所示
(12)
式中,W表示感知矩陣;A表示由特征向量構成的矩陣。
引入拉格朗日乘子[15]約束感知矩陣,并選擇出合適的多項式函數(shù),公式如下所示
(13)
式中,l表示拉格朗日乘子;δ表示約束項。
根據(jù)式(13)得到的多項式,確定出大規(guī)模數(shù)據(jù)集中異常數(shù)據(jù)的判斷閾值,將大于閾值的數(shù)據(jù)視為異常數(shù)據(jù),完成大規(guī)模數(shù)據(jù)集中局部異常挖掘。判斷閾值ε公式如下所示
(14)
為了驗證基于堆棧模型的大規(guī)模數(shù)據(jù)集中局部異常挖掘方法的整體有效性,對其做出如下測試。實驗所用數(shù)據(jù)來自UCI KDD數(shù)據(jù)集,該數(shù)據(jù)集是數(shù)據(jù)挖掘和可視化的研究項目,專注于大型數(shù)據(jù)收集下載中的實體事件關系。在該數(shù)據(jù)集中抽取部分數(shù)據(jù),相乘15個數(shù)據(jù)集。將挖掘時間、挖掘準確率和召回率作為評價指標,采用基于堆棧模型的大規(guī)模數(shù)據(jù)集中局部異常挖掘方法、文獻[3]方法、文獻[4]方法和文獻[5]方法做出對比測試。
1)挖掘時間
采用所提方法、文獻[3]方法和文獻[4]方法檢測15組大規(guī)模數(shù)據(jù)集,對比不同方法消耗的局部異常數(shù)據(jù)挖掘時間。挖掘時間越長,說明方法的效率越低,相反,挖掘時間越短,說明方法的效率越高。不同方法的測試結果用表1表示。
表1 不同方法的數(shù)據(jù)異常挖掘時間
分析表1中的數(shù)據(jù)可知,針對大規(guī)模數(shù)據(jù)集中局部異常挖掘,所提方法的挖掘時間在18s附近波動,文獻[3]方法和文獻[4]方法的挖掘時間分別在38s和49s附近波動。通過對比可以發(fā)現(xiàn),針對不同的數(shù)據(jù)集,所提方法的挖掘時間均低于文獻[3]方法和文獻[4]方法的挖掘時間,表明文獻[3]方法和文獻[4]方法的挖掘效率遠低于所提方法的挖掘效率。
2)挖掘準確率
設P表示數(shù)據(jù)異常挖掘準確率,其計算公式如下
(15)
式中,TP表示挖掘結果正常、實際為正常的數(shù)據(jù)數(shù)量;FP表示實際為異常但挖掘結果顯示正常的數(shù)據(jù)數(shù)量。
利用所提方法、文獻[3]方法和文獻[5]方法檢測數(shù)據(jù)集中的異常數(shù)據(jù),將不同方法的異常數(shù)據(jù)挖掘準確率結果繪制成圖,方便分析,結果如圖2所示。
圖2 不同方法的局部異常挖掘準確率
由圖2可知,針對大規(guī)模數(shù)據(jù)集中局部異常挖掘,所提方法的異常挖掘準確率均高于文獻[3]方法和文獻[5]方法的異常挖掘準確率。并且隨著實驗次數(shù)的增加,所提方法的異常挖掘準確率沒有發(fā)生明顯波動,而文獻[3]方法和文獻[5]方法的異常挖掘準確率上下波動較大。說明所提方法的異常挖掘準確率穩(wěn)定性強于文獻[3]方法和文獻[5]方法異常挖掘準確率的穩(wěn)定性。由于所提方法采用離散小波變換算法剔除了大規(guī)模數(shù)據(jù)集中的噪聲數(shù)據(jù),預處理后的數(shù)據(jù)集消除了冗余部分,在異常挖掘過程中降低了噪聲數(shù)據(jù)的影響,在一定程度上提高了異常挖掘的準確率。
3)召回率
召回率是評價異常數(shù)據(jù)挖掘精度的重要指標,代表的是在大規(guī)模數(shù)據(jù)集中局部異常挖掘結果中,挖掘出的異常數(shù)據(jù)量占整體異常數(shù)據(jù)量的比例,召回率越高,表明方法的挖掘精度越高;召回率越低,表明方法的挖掘精度越低。其計算公式如下所示
(16)
式中,Q表示召回率;FN表示實際為正常但挖掘結果為異常的數(shù)據(jù)數(shù)量。
將所提方法、文獻[4]方法和文獻[5]方法的挖掘召回率測試結果繪制成圖,方便分析,結果如圖3所示。
圖3 不同方法的局部異常挖掘召回率
分析圖3可知,所提方法的挖掘召回率高于文獻[4]方法和文獻[5]方法的挖掘召回率,說明針對大規(guī)模數(shù)據(jù)集中局部異常挖掘,所提方法的挖掘精度高于文獻[4]方法和文獻[5]方法的挖掘精度,其召回率最高值達到了97%,進一步驗證了該方法的挖掘精度。
目前大規(guī)模數(shù)據(jù)集中局部異常挖掘方法存在挖掘時間長、挖掘準確率低、挖掘精度低的問題,因此提出基于堆棧模型的大規(guī)模數(shù)據(jù)集中局部異常挖掘方法。該方法的主要創(chuàng)新點如下:
1)利用離散小波變換算法剔除大規(guī)模數(shù)據(jù)中的噪聲,避免噪聲在異常挖掘過程中產(chǎn)生干擾,進而解決了傳統(tǒng)方法中存在的問題。
2)采用堆棧模型中的自編碼器提取數(shù)據(jù)的特征,最后采用獨立成分分析算法得到數(shù)據(jù)中的異常數(shù)據(jù),完成大規(guī)模數(shù)據(jù)集中局部異常挖掘,提高了挖掘準確率和挖掘精度的同時,在一定程度上也降低了方法的挖掘時間,為大規(guī)模數(shù)據(jù)的異常挖掘技術奠定了基礎。