王俊,賴會霞,2*,萬玥,張仕,3**
(1.福建師范大學計算機與網絡空間安全學院,福建 福州 350117;2.福建省網絡安全與密碼技術重點實驗室,福建 福州 350117;3.福建師范大學數字福建環境監測物聯網實驗室,福建 福州 350117)
異常檢測通常用于識別偏離正常行為的數據、事件和觀察結果,其在許多領域都有重要應用,如欺詐攻擊[1-2]、網絡安全[3-4]、醫療數據分析[5-6]等。各類傳感器在工業、醫療等領域的廣泛應用帶來了更高維度的數據,但是,高維數據的“維度災難”問題給現有異常檢測方法帶來新的挑戰,主要表現為現有異常檢測方法在面對高維數據時存在不同程度的檢測精度下降問題。所謂的“維度災難”是指隨著數據維度的提升,從樣本點到質心的最大和最小歐氏距離的差值與其最小歐氏距離的比值趨于0,即隨著特征空間維度的增加,數據之間距離的相對差距幾乎消失[7],這也就導致基于距離的異常評估變得更困難。
目前,已有學者提出多種無監督異常檢測方法,其中基于距離的異常檢測算法(如KNN[8])和基于密度的異常檢測算法(如LOF[9]、DBScan[10])依賴于數據節點之間的距離來求異常值,由于距離會隨著維度升高而變得難以區分,從而導致這類算法在高維情況下失效。此外,多數基于距離和密度的異常檢測算法需考慮局部范圍內的近鄰數據,因此,它們的異常檢測精度還受近鄰點數量的影響。為了減少節點間的距離計算,研究人員提出基于樹結構的異常檢測算法(如IFOREST[11]),但是該類算法同樣無法適用于高維數據的情況。此外,高維“噪聲”也會導致基于樹和基于分類器的異常檢測算法精度下降[12]。
隨著深度學習技術的快速發展,研究人員提出了一系列基于深度學習的異常檢測方法,如自動編碼 器(AE)[13]、變分自 動編碼 器(VAE)[14]、DSVDD[15]、對抗神經網絡(GAN)[16]、LUNAR[17]等,但是這些方法仍未能很好地解決高維數據異常檢測問題。其中,在利用神經網絡進行降維的異常檢測方法中,判定過程和學習過程割裂,從而導致模型提取的特征不能表征出異常;利用神經網絡重構誤差以進行異常檢測的方法則在超參數的調節上敏感,且抗干擾能力較差;深度學習和傳統異常檢測算法相結合則仍存在傳統方法中的固有問題;直接使用神經網絡進行端對端異常打分的深度學習模型未能解決高維空間中復雜的數據分布問題[18]。
針對“維度災難”問題,文獻[19]利用角度和節點間距離共同計算節點的異常指標,但其時間復雜度太高。雖然該文獻之后提出的fastABOD 把時間復雜度降到O(n2+kn),但又引入了k的設置問題,同時還導致fastABOD 在中低維度異常檢測中精度下降。
針對目前異常檢測算法無法適應高維數據集以及基于角度的異常檢測方法存在的近鄰參數設置和中低維度適應性問題,本文提出一種基于角度的圖神經網絡異常檢測(A-GNN)方法。該方法以k近鄰點間的角度方差作為節點的初始異常因子,以圖神經網絡(GNN)節點信息交互方式訓練模型[20],以克服“維度災難”和k參數設置問題,增強方法的適應性。利用均勻采樣和數據擾動的負采樣方法,解決缺少異常數據而無法訓練網絡的問題。
異常檢測可以分為無監督、半監督和有監督的異常檢測。由于現實世界中多數數據未經標記,且異常數據通常較難獲取,因此無監督異常檢測得到廣泛關注。
傳統的無監督異常檢測算法可以分為基于統計的異常檢測算法[21-22]、基于距離的異常檢測算法[8]、基于密度的異常檢測算法[9-10,23]、基于樹的異常檢測算法[11,24]、基于分類器的異常檢測算法[12,25]等。
文獻[21]基于數據維度間的無關假設提出一種線性復雜度的異常檢測算法HBOS。文獻[22]提出COPOD 方法,該方法基于所有維度之間的聯合分布估算每個點的尾端概率,實現異常情況評估。基于統計的異常檢測算法的優點在于具有很強的理論支撐,缺點在于需要準確定義不同應用場景下的異常并找到一個合適的模型。此外,基于統計的異常檢測算法可拓展性較差,很難實現模型的拓展使用。
在基于距離的異常檢測算法中,KNN[8]算法的主要思想是通過尋找近鄰點并利用近鄰節點之間的距離來發現異常數據。該類算法的異常評判是基于距離的k最近鄰,在面對高維數據時容易受到“維度災難”的影響導致算法精度下降。此外,選擇正確的k值也難以形成統一的標準。
為了能夠找到局部異常點,以局部離群因子(LOF)[9]、基于連接的異常因子(COF)[23]和DBScan[10]為代表的基于密度的異常檢測算法被提出。這些算法通過計算節點之間的密度關系來尋找局部異常點,以克服基于距離的方法的弊端,但是它們仍然離不開距離計算,需要利用近鄰點來計算密度。在高維度數據集中,數據維度越高,樣本點分布越稀疏,導致高維數據的正常樣本和異常樣本的密度沒有明顯差別,容易造成基于密度的異常檢測算法在高維數據中檢測精度下降。
異常點通常具有“少而不同”的特點,比較容易從整體數據集中分離出來,基于此,有學者提出具有隨機分割思想的基于樹的隔離森林IFOREST[11]異常檢測方法、INNE 方法[24]。IFOREST 的主要思想是通過分割形成隔離樹后,再利用節點在樹中的深度以及每個分割區域所包含的節點數計算異常分數,從而確定異常數據。INNE 在IFOREST 的基礎上結合近鄰距離計算方式,利用近鄰因素提高尋找局部異常的能力?;跇涞漠惓z測方法能夠有效避免異常檢測中的距離計算,但是由于樹形結構是隨機分割的,容易受到噪聲維度的影響。在高維數據的異常檢測中,基于樹的方法可能會隨機選中帶有噪聲的特征作為分割點,從而極大影響異常點的判斷,并且數據集的維度越高,噪聲的影響越明顯。
基于分類器的異常檢測算法源自于機器學習中的各種分類算法,其中的典型代表是單分類支持向量機(OC-SVM)[12],其核心思想是將節點通過核函數映射到一個超平面上,遠離超平面上的點為異常點。OC-SVM 主要針對樣本不均衡情況下的數據分類,更加適用于異常數據和正常數據樣本比例極不均衡的情形。但是,過高的維度會導致分類器模型復雜化,在面對異常檢測判別時加入太多無關維度的考慮,影響模型進行正確判斷。為此,一些研究人員采用先降維再處理的方法,如利用局部敏感哈希降維后進行數據檢索[26]。為提高OC-SVM 在面對高維數據時的表現能力,文獻[25]通過利用主成分分析進行降維提出基于主成分分類器的異常檢測方法PCC,但是降維方法本質上并未有效提高基于分類器的異常檢測算法在高維數據上的檢測精度。
從上述分析可以看出,“維度災難”問題使得高維空間中的正常數據也具有稀疏分布、距離模糊等特點,導致傳統的異常數據檢測方法很難應用于高維數據中。
傳統算法受高維數據“維度災難”影響導致異常檢測精度較低,為此,文獻[19]提出基于角度的異常檢測方法ABOD,其使用角度替換距離作為基本的異常評測指標,實驗結果表明,該方法在高維數據集中表現優于基于距離、基于密度的異常檢測方法。但是,ABOD 方法的時間復雜度為O(n3),無法在大規模數據中得到有效應用。為了提高算法的效率,文獻[19]還提出了一種基于近鄰點的快速角度異常檢測方法fastABOD,其時間復雜度為O(n2+kn),但是,該方法存在需要設置近鄰點個數、在中低維度數據中異常檢測精度退化的問題。
為了縮短ABOD 的運算時間,文獻[27]引入隨機空間投影技術,期望使算法的運行時間達到亞線性時間復雜度,這一改進雖然提高了算法的效率,但是在面對低維度數據時表現不穩定。此外,文獻[28]把基于角度的方法應用于電梯故障檢測任務中??傮w而言,基于角度的異常檢測方法在算法適用性以及算法精度上仍有較大的改進空間。
相較于傳統算法,深度學習在面對高維數據時有著更好的適應性。深度學習在異常檢測中的作用主要分為四大類:1)深度學習用于特征提取;2)利用深度學習重構誤差以進行異常檢測;3)深度學習和傳統算法相結合以學習常態的表達形式;4)以端對端的方式通過深度學習進行異常評分。
利用深度學習進行特征提取的方法旨在利用神經網絡實現數據降維,如利用神經網絡替代傳統的PCA 降維方法[29]和隨機投影方法[30]。相比傳統降維方法,神經網絡在線性特征和非線性特征提取上均表現更 好。例 如,有研究 人員利 用AlexNet[31]、VGG[32]和ResNet[33]來提取低維數據。但是,這類方法只是將深度學習模型作為一個獨立的特征提取工具,并不是專門為了異常檢測而創建模型,這種特征提取方法很難實現異常的精準判斷。
基于重構的深度學習異常檢測方法并不是專門為了異常檢測而設計的,但是通過重構后的數據能有效發現異常。其中的典型代表有AE[13],它使用正常樣本進行訓練,若深入異常樣本,則訓練好的模型再生出來的結果和原樣本通常會有較大誤差。隨后,有研究人員在自動編碼器的基礎上發展出其他變體,如VAE[14]和GAN[16]?;谥貥嫷漠惓z測方法需要大量數據集進行訓練,如果訓練集的數據量不夠,其精度將無法滿足預期,而且這些模型并不是專門為了異常檢測而構建的,當面對不規律數據時將無法進行針對性的優化。
深度學習和傳統算法相結合的異常檢測方法以傳統算法為主導,引導網絡的學習,它們是一種專門為了異常檢測而設計的深度學習模型。LUNAR[17]通過結合基于距離的異常檢測方法和深度學習模型完成異常檢測任務,其驗證了近鄰檢測算法能夠轉換為圖神經網絡信息傳遞的框架,并且實現了對近鄰檢測算法的統一應用,但該方法仍然受到“維度災難”的影響。DSVDD[15]是分類方法與深度學習方法相結合進行異常檢測的典型代表,該方法利用深度學習模型完成核函數的工作,是一種專門針對異常檢測而設計的神經網絡模型。但是DSVDD 還是不可避免地需要調節大量超參數和訓練集,而且基于分類的方法在面對高維、復雜數據分布時可能失效,此外,高維數據集的噪聲也容易使該類方法在面對高維數據時產生偏差,導致性能下降。
以端對端的方式通過深度神經網絡[34-35]進行異常評分的方法不依賴其他方法指導學習,而是通過深度學習模型直接學習以實現異常判別,其優點在于不會受到傳統算法不足的限制。DAGMM 方法[34]將降維和密度估計通過神經網絡有機地結合在一起,并進行端對端的聯合訓練。GDN 方法[35]通過使用注意力機制進行異常權重選擇和圖神經網絡預測,以實現對多維時間序列的異常檢測。但是,端對端深度神經網絡方法的核心在于使用合適的損失函數以及適配的數據集,因此需要設計新的損失函數以完成對數據的異常評分,這也導致端對端深度學習網絡的泛化性不如其他方法,不能很好地對模型進行遷移使用。此外,該類異常檢測方法通常需要大量帶標簽的數據集,這也極大限制了方法的有效應用。
給定一個含有n個d維數據的數據集X={xi?Rd|i=1,2,…,n},A-GNN 旨在準確地檢測出X中的異常數據。
A-GNN 模型工作流程如圖1 所示(彩色效果見《計算機工程》官網HTML 版,下同)。首先將原始數據集X劃分為訓練集X(train)和測試集X(test),對于訓練數據,通過混合使用2 種負樣本采樣以增加訓練集中的負樣本占比(如(a)所示);然后構建近鄰點關系并初始化節點的異常因子數(如(b)所示);接著將預處理數據輸入GNN 網絡中,并利用節點間的信息傳遞進行模型訓練(如(c)所示);最后輸出訓練完成的模型(如(d)所示)。在利用訓練后的模型進行異常檢測時,模型評估輸入數據并輸出異常分數。

圖1 A-GNN 模型流程Fig.1 Procedure of A-GNN model
在多數應用中,負樣本數據遠少于正樣本數據,正負樣本數據的不均衡往往導致深度學習模型難以訓練[17],因此,本文通過負樣本的自動生成使訓練集中的正負樣本達到近似均衡。類似方法也在一些異常檢測任務中被使用,如文獻[17,36]中通過數據增強來有效解決正負樣本不均衡的問題。
本文使用2 種負樣本生成方法:1)在高維數據空間中進行均勻分布采樣以生成負樣本;2)基于訓練數據集的空間擾動生成負樣本。在具體的應用中,2 種方法生成的數據可能包含正樣本,但是在實際的高維空間中,正樣本只占其中的一小部分,因此,把2 種方法生成的樣本均計入負樣本并不會影響最終訓練效果。最后,應用于訓練的正負樣本達到接近1∶1 的均衡狀態。
2 種負樣本生成方法具體如下:
1)均勻分布采樣。該方法在相同空間大小中隨機抽取樣本,并保證每個樣本的抽取概率相同,即樣本在相同空間大小中的分布是等概率的:
在本文應用中,令a=0,b=1,確保數據均勻采樣同時實現數據歸一化。
2)子空間擾動。該方法是基于“正樣本是由負樣本包圍”假設而設計的,其生成的負樣本數據靠近正樣本,有利于模型通過訓練有效區分正負樣本,提高模型的泛化性。子空間擾動采樣如式(2)所示:
其中:M?Rd是二進制隨機向量,M中的每個元素有p的概率為1,有1-p的概率為0,這確定了擾動的維度。
通過混合使用均勻分布采樣和子空間擾動2 種方法,把生成的數據作為負樣本加入訓練集中,最終形成X'(train)。
高維空間中以閔克夫斯基距離為代表的距離衡量方法會引起“維度災難”問題,文獻[19]提出以角度作為異常檢測標準。A-GNN 引入角度作為異常數據評估要素,節點x初始異常因子考慮k個最近鄰節點之間的角度方差和距離因素,因此,能夠更好地適應高維數據。以距離作為角度權重計算節點與k近鄰節點之間的角度方差,則節點的異常因子(AF)初始化如下:
在進行節點異常因子初始化時,A-GNN 首先將普通的數據轉換為圖數據,并為每個節點構建從k個近鄰到該節點的邊,所構造的圖為G=(V,E),其中,V=X'(train),E={(x,y)|y?V,x?Nk(y,V)}。最后利 用式(3)計算每一個節點的初始異常因子。
2009 年,文獻[20]提出GNN,隨著人們對神經網絡研究和應用的深入,GNN 開始在各領域表現出良好的適應性。GNN 節點之間的信息交互使得鄰接節點間能夠互相學習表征關系,多次迭代訓練又有利于節點信息擴散,從而能夠聚合遠近節點的信息。
GNN 的信息交互是一種聚合鄰接節點信息來更新中心節點信息的范式,它將卷積算子推廣到不規則數據領域,實現了圖與神經網絡的連接。遵循消息傳遞范式的圖神經網絡被稱為消息傳遞圖神經網絡,其信息傳遞范式可以理解為3 步,即message、aggregation 和update,分別用符號?、⊕和γ表 示。GNN 圖節點信息傳遞范式如下:
A-GNN 首先與k個近鄰點構造節點對以創建向量,從而構造角度并計算異常因子,之后利用信息傳播機制實現節點異常分數計算。
對輸入已構造k近鄰關系的圖數據,如果一個目標節點xi存在與它相連的源節點xj,即xi是xj的k最近鄰之一,它們之間的邊為(xi,x)j,則邊特征定義為兩點之間的向量,方向如式(5)所示:
針對GNN 信息傳播機制的3 個步驟,A-GNN 中的message、aggregation、update 定義如下:
1)message。節點xi和節點xj沿著邊(xi,xj)傳遞的信息等于其邊特征,如式(6)所示:
上述邊特征及消息傳遞實現示意圖如圖2所示。

圖2 信息傳遞示意圖Fig.2 Schematic diagram of information transmission
2)aggregation。aggregation 是用于k個近鄰 節點的聚合操作。在A-GNN 中,節點的異常分數需要考慮k個鄰居節點異常分數的影響,為此,與傳統圖神經網絡使用平均池化或者最大池化不同,本文方法中的aggregation 使用可學習的聚合方法。對固定的k個近鄰點可以通過一個全連接層來學習節點之間的潛在聯系,該映射關系表示如下:
其中:F表示全連接神經網絡;Θ是神經網絡的權重;是經過信息聚合之后xi的節點信 息;e(i,j)表示從節點xi到節點xj的向量。節 點之間的信息聚合操作如圖3 所示。

圖3 節點間的信息聚合示意圖Fig.3 Schematic diagram of information aggregation between nodes
3)update。update 是通過聚合信息和上一層信息來更新預測節點。update 函數得到aggregation 函數映射后的值x(i1),通過式(8)更新輸出的xi的異常分數。
A-GNN 模型的具體步驟定義如表1 所示。

表1 A-GNN 的信息傳遞步驟定義Table 1 Definition of information transmission steps for A-GNN
綜上可以看出:A-GNN 的異常因子同時利用了角度和距離進行異常分數的初始化;可學習的聚合方法增強了aggregation 操作;利用圖神經網絡的信息傳遞機制可以讓各個節點之間相互學習,使得方法不受近鄰點個數k的限制。因此,A-GNN 模型具有更優的異常檢測能力。
實驗所使用的6 個數據集均為開源數據集,可以在OODS 中下載獲取。6 個數據集均為真實世界中的實際數據,且在眾多研究中被廣泛使用,它們包含了不同維度的數據,從最少的9 維(GLASS)到最多的400 維(SPEECH),可充分展示本文方法對數據維度的良好適應性。表2 中列出了數據集的基本信息。

表2 數據集基本信息Table 2 Basic information of datasets
為了說明本文方法的有效性,將其與以下方法進行對比:經典的異常檢測方法IFOREST、KNN、LOF 和OC-SVM;基于角度的異常檢測方法fastABOD;基于深度學習的異常檢測方法AE、VAE、DSVDD 和LUNAR。各方法的簡要介紹如下:
1)IFOREST[11]:采用隨機切割方式將異常數據隔離在一個獨立子空間。
2)KNN[8]:通過選取k個近鄰點作為標簽來評判節點異常。
3)OC-SVM[12]:通過核函數將數據映射到超平面上尋找異常。
4)LOF[11]:通過近鄰節點計算密度,基于密度判定異常點,能夠計算出局部異常點。
5)fastABOD[19]:通過選取k個近鄰點構造角度方差進行異常打分。
6)AE[13]:根據重構誤差來判定異常點,如果誤差大則為異常,否則為正常。
7)VAE[14]:采用數據重構概率來評判異常,具有高重建概率的數據點被歸類為異常。
8)DSVDD[15]:將OC-SVM 中核函數的映射替換為神經網絡。
9)LUNAR[17]:提出基于距離的圖神經網絡異常檢測框架。
在本文實驗中,設置訓練輪次為200,在GNN 網絡節點aggregation 過程中所使用的全連接網絡F由5 層大小為256 的全連接層組成,除了最后一層輸出層激活函數使用Sigmoid 外,其余層所使用的激活函數均為tanh。訓練過程中使用均方誤差(MSE)作為損失函數,利用Adam 進行優化,學習率為0.001,衰減控制設置為0.1。
表3 所示為本文方法與對比方法在6 個數據集上的實驗結果,所有數據均為5 次實驗取平均的結果,最優結果加粗標注,涉及近鄰點的方法(KNN、fastABOD、LOF、A-GNN)的k均設置為10,評測指標為ROC 曲線下面積(AUC)。

表3 在不同數據集上的實驗結果Table 3 Experimental results on different datasets %
從表3 可以看出:本文方法在5 個數據集上都有最優表現,在另外的1 個數據集(SATELLITE)上精度表現次優,且非常接近最優方法LUNAR,在數據集SPEECH 上,本文方法的AUC 提升最為明顯;與同樣基于角度進行異常檢測的方法fastABOD 對比,本文方法在所有6 個數據集中均表現更優,這一結果說明本文通過構建GNN 進行異常分數計算,能有效利用節點間的信息交互提升節點異常判定精度;與基于GNN 進行異常檢測的方法LUNAR 相比,本文方法在5 個數據集上表現更優,最大AUC 提升達38.72 個百分點(數據集SPEECH),這說明了在GNN中引入基于角度的異常因子計算方法能有效提高異常檢測精度。從上述實驗結果可以看出,本文方法具有良好的異常檢測精度,適用于各類維度的數據集,具有較好的通用性。
從表3 的實驗結果還可以看出,在一些高維數據集(如SPEECH)上,本文方法相對其他方法有顯著的精度提高,而在其他一些高維數據集(如SATELLITE)中精度提高則不明顯。為了進一步探究本文方法產生優勢的內在因素,使用主成分分析(PCA)方法對數據集進行變換,結合數據特點進行結果分析。先給出非形式化的“偽高維數據”定義,所謂的“偽高維數據”是指原始數據具有很高的維度,但數據各維度之間相關性較大,數據本身所隱含的信息并不需要很高的維度便可以表達。與之對應的是“真高維數據”,“真高維數據”是指數據具有很高的維度,同時其各維度之間相關性較小,降維操作很難在保留數據隱含信息的同時大幅降低數據維度。
對實驗所用的6 個數據集進行PCA 變換,把變換后的維度按特征方差進行降序排列,并計算累積成分信息含量,結果如圖4 所示。從圖4 可以看出:SPEECH、IONOSPHERE、GLASS 等3 個數據集的曲線更加平緩,表明數據經PCA 變換后各個維度的重要性較為均衡,其信息能夠均衡地分布到各個維度上;而其他幾個數據集(SATELLITE、SATIMAGE-2和WINE)的信息大都集中于少數的重要維度中,如WINE 的一個維度中就包含了占總體85.8%的信息含量。

圖4 6 個數據集的PCA 結果累積信息量與維度關系Fig.4 The cumulative information and dimensional relationship of PCA results of six datasets
表4列出了在信息含量占比為85%左右時對應的最大主成分個數以及維數占比(**表示本文方法表現格外優秀的數據集),如SPEECH、IONOSPHERE、GLASS 在信息含量占比接近85%時其所需主成分個數分別為256、14、3,分別占總維度數的64.00%、42.42%、33.33%,而在其他幾個數據集中信息含量大于85%時其主成分維數均只占總維度數的10%以內,如SATELLITE 數據維度為36,但實際只需PCA變換后的2 個主成分(5.56%)便占其總信息含量的85.2%。從以上 分析可 以看出,SATELLITE、SATIMAGE-2 和WINE 可以看作“偽高維數據”,而SPEECH 則是“真高維數據”。結合表3 的異常檢測精度可以發現,基于角度的方法在“真高維數據集”上具有更好的表現,如fastABOD 和本文方法在SPEECH 數據集上異常檢測效果較好。本文方法不論在“真高維數據”還是“偽高維數據”的數據集上都表現突出,具有更好的適應性。

表4 PCA 降維至85%時信息保留量和維數的關系Table 4 Relationship between information retention and dimensionality when PCA dimensionality is reduced to 85%
為了進一步考察A-GNN 中參數k的設置對本文方法異常檢測精度的影響,對k設置不同的值并進行實驗,同時對比3 種需要考慮近鄰元素個數的方法(KNN、fastABOD 和LOF),實驗結果如表5~表10所示。

表5 在SPEECH 數據集上參數k 的取值對方法AUC 的影響Table 5 Impact of parameter k values on methods AUC on the SPEECH dataset

表6 在IONOSPHERE 數據集上參數k 的取值對方法AUC 的影響Table 6 Impact of parameter k values on methods AUC on the IONOSPHERE dataset

表9 在WINE 數據集上參數k 的取值對方法AUC 的影響Table 9 Impact of parameter k values on methods AUC on the WINE dataset

表10 在GLASS 數據集上參數k 的取值對方法AUC 的影響Table 10 Impact of parameter k values on methods AUC on the GLASS dataset
上述表格展示了本文方法A-GNN 和KNN、fastABOD、LOF 的檢測精度對比結果,實驗中分別設置k=5、10、20、50、80,以觀察不同近鄰點個數下的算法精度,其中還列出了各種k值情況下的平均精度進行對比。從異常檢測平均表現上看,本文方法的AUC 平均值在6 個數據集上均明顯優于其他方法。在具體數據方面,除了KNN 方法在數據集SATIMAGE-2中k取值為50、80 這2 種情況下的AUC 略高于本文方法外,其他所有數據集在各種k值設置下本文方法都表現最優。
近鄰算法的精度在很大程度上受到近鄰點k的取值的影響,一個合適的k取值往往能在很大程度上影響算法精度。從上述結果可以看出,本文方法在不同k取值情況下都能得到最好的AUC,且波動較小。如在表6 的數據集IONOSPHERE 中,當k從5 增加到80 時,KNN、fastABOD、LOF 的AUC 最大變化分別為8.77%、4.80%、9.11%,而A-GNN 方法的AUC最大變化為2.00%。
結合圖神經網絡的特點分析,本文方法利用多次迭代訓練和圖神經網絡的信息傳遞機制學習各個節點之間的潛在聯系,讓算法能夠有效學習所有k個鄰居的信息,而其他的近鄰算法的近鄰關系是算法一開始就預先設置好的,沒有辦法對其進行有效利用,因此受k值的影響較大。上述實驗結果也驗證了本文方法受k值影響較小,具有更好的魯棒性。
為了驗證方法的運行效率,將本文方法在k=5和k=10 兩種情況下的運行時間與9 種異常檢測方法進行對比,結果如表11 所示。從表11 可以看出:IFOREST、KNN、OC-SVM、LOF 等傳統異常檢測方法運算量較小,具有較高的效率;與基于角度的異常檢測方法fastABOD 相比,在設置相同的k=10 時,本文方法需要更多的計算時間,當設置k=5 時,本文方法與fastABOD 效率接近,但是,由于利用了GNN 節點之間的信息傳播能力,因此A-GNN 的檢索精度無論是在k=10 還是k=5 情況下都比fastABOD 在近鄰點k=10 時更高(如表5~表9 所示);與深度學習異常檢測方法AE、VAE、DSVDD 相比,本文方法的運行速度更快,AE、VAE 這類基于重構的深度學習方法需要更長的訓練時間,而DSVDD 則需要不斷優化映射函數以找到最優參數,本文方法使用的圖神經網絡并不復雜,訓練過程更加快速;與LUNAR 相比,由于本文方法使用角度作為評測指標,每一個節點都需要與k個近鄰 節點構造k(k-1)/2 個角度,而LUNAR 使用的是距離,其每一個節點只需要與k個節點計算k個距離便可,因此,本文方法需要更多的運算時間。

表11 方法運行時間對比Table 11 Comparison of running time of methods 單位:s
現有異常檢測方法多采用以歐氏距離為基礎的異常評價指標,但在高維空間中,“維度災難”問題會模糊數據之間的距離,從而使得這類異常評價指標失效。本文提出一種基于角度的圖神經網絡異常檢測方法,該方法采用以角度為基礎的方式初始化節點異常因子,利用訓練數據構建圖神經網絡,并通過圖神經網絡節點信息交互讓近鄰節點之間互相學習以實現異常評判。此外,為了解決圖神經網絡訓練中正常數據和異常數據不均衡的問題,本文通過對數據空間的均勻采樣和數據擾動來有效增加異常數據,使得訓練數據中正負樣本比例接近1∶1,從而提高模型訓練效果。在6 個自然數據集上進行實驗,結果表明:與9 種對比方法相比,該方法能夠大幅提升各種維度空間上的異常數據檢測精度,特別是在一些“真高維數據”上異常檢測的AUC 提升達40%以上,說明在高維空間中利用k近鄰節點角度方差作為異常評估指標的有效性;本文方法利用GNN 節點間的信息交互能降低k值對檢測結果的影響,使方法具有更強的魯棒性。下一步將改進基于角度的評價方法以減少運算量,提高運行效率,此外,將本文方法應用于高維流數據的異常檢測任務也是今后的研究方向之一。