論文http://202.119.32.195/cache/10/03/cs.nju.edu.cn/da2d9bef3c4fd7d2d8c33947231d9708/tkdd11.pdf
1. INTRODUCTION
異常是與正常樣例有着不同的數據特性的數據模式。檢測異常的能力具有重要的相關性,異常經常在多種應用領域中提供關鍵和可操作的信息。比如在信用卡交易中能夠顯示信用卡的使用有欺詐行為;在天文圖像中的異常點能夠說明發現了新的星星;一個不正常的計算機網絡流量模式能夠代表(stand for)一個為授權訪問。這些應用需要用着高檢測精度和快執行效率的異常檢測算法。
很多現存的異常檢測方法,包括基於分類的方法[Abe et al. 2006; Shi and Horvath 2006]、Replicator神經網絡(RNN)[Williams et al. 2002]、one-class SVM[Tax and Duin 2004]和基於聚類的方法[He et al. 2003],都是構造一個正常樣例的大概描述,然后認證異常是那些不符合正常描述的樣例。這些異常檢測方法基本上都是一種算法的“副作用”或副產品,這種算法最初設計的目的不是為了異常檢測(例如分類或聚類)。這將會導致兩種主要的后果:
- (i)這些方法不能有效地檢測異常——結果就是,這些方法經常導致過多的錯誤警告(即將正常樣例認證為異常),或者是檢測出來的異常過少;
- (ii)很多現存的方法都限制使用在低維數據和小的數據大小中,這是其最初算法的歷史遺留問題。
該論文提出了一個通過隔離樣例,不依賴於任何距離和密度措施的檢測異常的不同方法。為了達到這個目的,我們推薦的方法利用了兩個異常的本質特性:
- i)它們是少量的,僅包含少數樣例;
- ii)它們有着和其他正常樣例不同的屬性值。總之異常是“少且不同的”,這讓她們能夠很好地被隔離機制檢測出來。
無論如何,隔離機制能夠被用來隔離樣例。我們選擇使用稱為隔離樹(iTee)的二進制數結構,其能夠有效地構造來隔離樣例。因為隔離的易測性,異常通常更可能被隔離在靠近iTree的根部的地方;然而正常點則更可能被隔離在iTree的深處。這就形成了我們用於檢測異常的方法的基礎理念。雖然這是一個十分簡單的機制,但是我們展示在這篇論文中的是一個集高效和准確性為一體的檢測異常的方法。
該推薦方法叫做孤立森林(iForest, Isolation Forest),根據給定的數據集構建一個iTree;異常就是那些在iTrees中有着短的平均路徑長度的樣本。在該方法中有着兩個訓練參數和一個評價參數:訓練參數是構建的樹的數量以及子采樣的大小;評估參數是在評估時樹的高度限制。我們說明了iForest的檢測精度能夠在少量樹中快速收斂;它僅需要一個小的子采樣大小就能夠獲得一個高效且高檢測精度的結果;不同的高度限制用來迎合不同密度的異常集。
除了上面說的使用隔離作為檢測異常的方法的主要不同之處外,iForest與現存的基於模型的 (e.g. [Abe et al. 2006; He et al. 2003])、基於link的(e.g. [Ghoting et al. 2004])、基於深度的 (e.g. [Rousseeuw and Leroy 1987])、基於距離的 (e.g. [Knorr and Ng 1998])以及基於密度的(e.g. [Breunig et al. 2000]) 方法有着很大的不同,如下所示:
- 隔離樹的特性使得它能夠子采樣到一定長度,這是現有方法中沒有的靈活度(更多的細節將提供在5.5中)
- iForest不使用距離和密度措施來檢測異常。這將減少在所有基於距離和密度方法中的大量距離計算損失
- iForest有着線性的時間復雜度,且帶有少量的常量和內存需求;它是一種訓練時間和空間復雜度恆定的算法。據我們所知,現有方法中性能最好的方法只能獲得近似線性的時間和空間復雜度[Angiulli and Fassetti 2009]。
- iForest能夠擴展去解決極大數據量和有着大量不相關屬性的高維問題(可見5.6部分)
該論文僅關注用於多變量數據異常檢測的無監督、無參數方法,且僅關注於連續性數據。我們假設數據集中的所有屬性都等價用於異常檢測,在該論文中並不解決條件異常問題[Song et al. 2007]
該論文的結構如下:
- 第二部分闡述了使用一個iTree遞歸地對數據進行分區來實現隔離
- 第三部分比較了隔離、密度和距離方法去理解他們結構化的不同
- 第四部分提供了構造iTrees和iForest的算法。一個基於iTrees的新異常分數概念被提出。使用子采樣大小和評估高度限制來處理數據中出現的遮擋和淹沒問題(即數據之間過於相似的情況)
- 第五部分經驗性地將iForest與4個先進的異常檢測方法進行比較;同時分析iForest的檢測性能:
- 在不同參數下的性能
- 在聚集異常數量增長情況下的性能(即數據有遮擋情況下)
- 在異常和正常數據點之間的距離減小情況下的性能(即數據有淹沒的情況下)
- 當數據是高維時
- 當訓練樣本中沒有異常數據的情況下
- 第六部分調查了相關工作
- 第七部分描述了未來可能需要進行的工作
- 第八部分即總結
從文章 [Liu et al. 2008a]的初始版本進行擴展,我們使用額外的闡述和新的在 3, 4.5, 5.2, 5.3, 5.4, 5.5, 5.7, 6, 7 部分以及A, B, C, D和E附錄中找到的材料來豐富了第二部分的內容
2. ISOLATION AND ISOLATION TREES
介紹隔離和隔離樹概念
在該論文中,術語“隔離”意味着“從剩下的樣例中分離樣本”。通常來說,一個基於隔離的方法度量了單個樣例的易隔離性;異常即那些有着高易隔離性的樣例。為了實現隔離的想法,,我們提出能夠自然隔離數據的數據結構。在樣例能夠被遞歸分區的隨機生成二進制樹中,這些樹能夠為異常生成明顯的更短的路徑,有兩種情況能實現短路徑:
- 該區域被異常所占據時,少的異常導致一個更少數量的分區——在樹結構中即更短的路徑,即因為異常數量很少,這個分區的路徑一定很快就結束二分叉;
- 有着可區分的屬性值的樣本更可能在分區過程中被更早地分離出來
因此,當森林中的每個隨機樹都為一些獨特點共同生成更短的路徑長度時,那么這些特殊點就很有可能是異常點
在圖1(a)和2(b)中,我們觀察到一個正常點xi通常需要進行更多次地分區才能夠被隔離出來。與此相反的則是異常點x0則僅僅需要少量的分區就能夠被隔離出來
在該例子中,分區是通過隨機選擇一個屬性值,然后隨機選擇該屬性值最大和最小值之間中的一個值作為分割值(split)來生成的。當遞歸分區能夠通過一個樹結構來表示時用於隔離一個點需要的分區數量等於從根節點到終端節點的路徑長度遍歷。在該例子中,xi的路徑長度是比x0的路徑長度大的。
當每一個分區隨機生成后,帶着不同分區集的獨立樹也就生成了。然后平均所有樹的路徑長度去得到期望的路徑長度值。圖1(c)顯示了x0和xi在樹的數量增長的情況下收斂的平均路徑長度:
可見當使用1000棵樹時,x0和xi的平均路徑長度分別收斂到了4.0和12.8。可見異常需要的路徑長度是比正常點需要的路徑長度要短的。
除了可上面所示的檢測分散的外圍異常點的情況,iForest也能夠檢測那種異常被正常數據包圍的情況。如圖2就闡述了一種正常點形成了一個環形,而異常數據處在這個環形的中間而不是外面的這種情況:
一個帶着兩條來自iForest的0.7異常分數等高線的異常分數等高線圖如上所示,可見異常點的異常分數是高於0.7的(顏色發橘),而正常數據則是低於0.7的(顏色發黃)。異常分數的公式將會在4.3部分說明
Definition : Isolation Tree。定義T為隔離樹的節點。T即可能是沒有孩子節點的外部點,也可能是帶着test的有着兩個孩子節點(Tl, Tr)的內部節點。節點T上的test包含一個屬性q和該屬性的分割值p,比如通過 q<p 測試(test)來決定該數據點是往左Tl 還是往右Tr。
定義X={x1, ... , xn}為給定的d維分布的數據集。有Ψ個樣本的采樣X'屬於X被用來構建一個隔離樹(iTree)。我們通過隨機選擇一個屬性q和一個該屬性的分割值p來遞歸地划分X',直到:
- 剩下的節點中只有一個樣本,不能再划分
- 或剩下的樣本都有相同的值
這兩種情況才停下來。iTree是一個恰當的二叉樹,樹中的每一個節點都要么有0個或兩個孩子節點。假設所有樣本都是可區分的,在一個iTree完全生成時,每一個樣本都被隔離為一個外部節點(即沒有孩子節點),在這種情況下外部節點的數量為Ψ,而內部節點的數量為Ψ-1,這樣該iTree的節點總數為2Ψ-1;因此需要的內存是有邊界的,並且僅是樣本數量Ψ的線性增長。對於符號和注釋的定義可以參考下面的表1:
異常檢測的任務是提供一個能夠反射異常程度的排序。使用iTrees,檢測異常的方法就是根據它們的平均路徑長度來排序數據點;異常數據則是那些排在列表前面的數據點。定義路徑長度的方法如下所示:
Definition : Path Length 一個點x的路徑長度h(x)是通過從一棵iTree的根節點遍歷到一個外部節點經過的邊界數量。
我們使用路徑長度作為隔離敏感性程度的測量:
- 短的路徑長度表示高的隔離敏感性
- 長的路徑長度表示低的隔離敏感性
iTree的概率解釋可在附錄A中找到
3. ISOLATION, DENSITY AND DISTANCE MEASURES
介紹隔離和基於密度、長度方法的差別
在該論文中,我們斷言基於路徑長度的隔離方法是比基本的密度和長度測量方法更適合用於異常檢測任務的。
使用基本的密度測量,其假設是“正常點出現在密集區域,而異常點出現在稀疏區域”。使用基本的距離測量方法,其基本假設是“正常點和其鄰居相鄰,而異常點則遠離其鄰居”[Chandola et al. 2009]
但也有違反這些假設的情況,如高密度和短距離並不總是意味着正常樣本;同時低密度和長距離也不總是意味着異常樣本。當密度和距離在局部上下文中測量時,通常情況下,得到的密度高或距離短的點在整個數據集的全局上下文中可能是異常的。可是在基於路徑長度的方法中就不會出現這樣的模糊性,我們將會在接下來的三個段落中闡述該內容
在基於密度的異常檢測中,異常被定義為在低密度區域中的數據點。密度通常被測量為:
- k近鄰的平均距離的倒數
- 給定固定半徑中的點的數量
在基於距離的異常檢測中,異常被定義為遠離其他點的數據點。基於距離的異常分數的兩種常用定義方式為:
- kth最近鄰的距離
- kth最近鄰的平均距離[Tan et al. 2005]
這種密度和距離測量方法的一個缺點在於沒有辦法去處理帶有不同密度區域的數據集。同時,對於這些用來檢測密度異常聚類的方法,k必須比最大異常聚類的大小大。這就造成了一個搜索問題:即找到最合適的k值。注意一個大的k值將大幅增加計算
表面上,隔離測量方法的函數和密度、長度測量方法相似,比如隔離將分散的外部點排得比正常點高。可是我們發現基於路徑長度的隔離在有着不同分布的數據下有着與密度、長度測量方法不同的表現。在圖3中,異常點在左邊,而正常聚集點則在右邊。路徑長度、密度(k-nn)和kthnn距離值被分別點在圖3(a)和3(b)中。在密度和距離估計中使用k=10。在圖3(a)中密度值顯示了異常點有着高密度,而正常聚集點有着低密度:
在圖3(b)中kthnn距離值顯示了異常點有着短距離,而正常聚集點有着相對大一點的距離:
該基於距離和密度的結果與我們的期望是相反的。但是路徑距離就能夠通過給隔離的密集點更短的路徑距離來解決這個問題。主要的原因是路徑長度是在自適應的上下文中生成的,每個分區的上下文都是不同的從第一個分區(根節點)有着整個數據集的上下文,到最后一個分區(葉子節點)則有着局部數據點的上下文信息。可是密度(k-nn)和kthnn距離僅關注着k個鄰居(局部上下文),並沒有將整個數據集的上下文考慮進來
總之,我們對比了這三個用於檢測異常的基本方法;即基於隔離、密度和長度的方法。我們發現基於隔離(路徑長度)的測量方法能夠檢測聚集和分散的異常;然而密度和長度方法只能檢測分散的異常。有很多用來加強基本密度和長度測量的方法,隔離方法更好是因為在檢測聚集和分散的異常時不需要對基礎的測量方法進行調整,更簡單。
4. ANOMALY DETECTION USING IFOREST
如何使用iForest實現異常檢測
在該部分將描述iForest機制的細節以及對異常檢測有意義的異常分數公式。同時我們將會解釋為什么使用更小的子采樣將能夠帶來更好的隔離模型,同時通過調整評估高度限制來測試檢測效果的變化
使用iForest異常檢測是一個兩個階段的過程:
- 第一個是訓練階段,使用從給定訓練集中子采樣的樣本集來構建隔離樹
- 第二個是評估階段,傳遞測試樣例到隔離樹中來獲得每個樣本的異常分數
4.1 Training Stage
在訓練階段,通過遞歸分區一個子樣本X'來構建iTrees,直到所有樣本都被隔離。訓練階段的細節能夠見下面的算法1和2。每一個iTree都是用一個從X中無放回隨機選擇的X'構造而成
算法1:
- 即先從整個數據集X中采樣大小為ψ的子樣本X'
- 然后使用該子樣本構建隔離樹iTree,並將其放入Forest列表中
- 循環進行上面兩個步驟,直到生成的iTree的數量滿足t
在算法1中可見iForest算法有着兩個輸入。即子采樣集的大小Ψ和樹的數量t;該參數的影響將在下面說明:
subsampling size ψ控制訓練數據的大小。我們發現當ψ增加到某個期望的大小時,Iforest的檢測結果就是可信賴的了,不需要再繼續增加,因為繼續增加只會增加運行時間和內存大小,並不會提高檢測的精確度。如我們假設異常是“少且不同的”,正常數據則是“多且相同的”。在這個假設下,對於iForest來說,一個小的子采樣大小就足夠用於從正常數據中區分異常了
按經驗來說,我們發現將ψ設置在2^8或256大小就足夠在一個大的數據范圍內實現異常檢測了。除非具體說明,我們在實驗中都將ψ=256作為默認值。對子采樣大小的影響的分析可見5.5部分,其將展示檢測性能在默認設置中接近最優值,並在一個大范圍的ψ值中不敏感。
Number of trees t控制集合大小。我們發現路徑長度通常在t=100時收斂得最好。除非具體說明,我們在實驗中都將t=100作為默認值。
在訓練過程的最后,樹的集合將返回並准備用於評估。最糟糕情況下訓練一個iForest的的時間復雜度為O(tψ2),空間復雜度為O(tψ)
算法2:
即算法1中構造樹的詳細內容:
- 如果X'滿足了上面說的不能夠繼續下分的兩種情況,那就說明到了葉子結點,將該集合的大小|X'|作為size值輸入exNode生成一個外部結點,返回向上遞歸
- 否則就進行分割,隨機從d維的屬性集Q中選擇一個屬性q,然后隨機在該屬性的最大、最小值中選取一個分割值p,樣本中屬性q的值 < p的,就分為左節點Xl;q的值 >= p的,就分為右節點Xr,然后構建一個中間節點inNode,同時繼續對生成的左節點Xl和右節點Xr向下遞歸
- 重復上述的過程直至都沒有可再分的樣本集X'
4.2 Evaluation Stage
該算法即計算測試樣例x在iTree樹T上的路徑長度:
- 首先先查看此時的節點是否為外部節點或路徑長度e是否已經超出了定義的高度限制hlim。如果是外部節點,則說明已經遍歷到了x樣本屬於的分區,返回此時的e即其路徑長度;如果e已經大於或等於定義的高度限制hlim,則返回e+c(T.Size)作為該樣例x的路徑長度
- 否則就查看此時的分割屬性T.splitAtt,並賦值給a,如果樣本x的該屬性值xa小於該分割屬性的分割值T.splitValue,則遍歷到該內部節點的左子樹;如果xa大於該分割屬性,則遍歷到該內部節點的右子樹,然后循環進行這兩步操作,直到返回路徑長度值
在評估階段,就想在算法2中實現的一樣,單一的路徑長度h(x)是通過計算樣本x遍歷整個iTree,從根節點到外部節點經過的路徑e的數量。當遍歷到了預先定義好的高度限制hlim時,返回的路徑長度 = e + 調整的c(Size) (c(.)定義在下面的式子1中)。該調整用於估計隨機子樹的平均路徑長度,該子樹可以使用超過樹高限制的Size數據構建。當為集合的每個子樹都計算得到了x在這些子樹上的路徑長度h(x)后,其異常分數就能夠計算了。異常分數和調整的c(Size)將在下面進行定義。
該評估階段最糟糕情況下的時間復雜度為O(ntψ),n為測試數據大小
4.3 Anomaly Score
對於任何的異常檢測方法,異常分數都是需要的。從h(x)生成該分數的難度在於iTree的最大可能高度隨着Ψ的值一起增長,平均高度隨着logΨ的值一起增長 (即對於一個包含Ψ條記錄的數據集,其構造的樹的高度最小值為log(Ψ),最大值為Ψ-1)。當從不同采樣大小的模型中要求可視化或者比較路徑長度時,用上述任何一項(即logΨ或Ψ)對h(x)進行歸一化要么不是有界的,要么就是不能直接比較。因此為了實現上述的目的,就需要一個歸一化的分數
當iTrees有着和二叉搜索樹(BST)有着等價的結構時,對外部節點終端進行的平均h(x)的估計就等價於在BST中的不成功搜索。在這里我們借用BST的分析去估計iTree的平均路徑長度。對於一個有着Ψ個樣本的采樣集,[Preiss 1999]論文的10.3.3部分給出了在BST中不成功搜索的平均路徑長度計算:
其中H(i)是諧波數( harmonic number),能夠通過計算ln(i) + 0.5772156649(歐拉常量)來估計該值。c(Ψ)是給定的Ψ的h(x)的均值,使用它來歸一化h(x),因此一個樣本x的異常分數定義為:
E(h(x))是iTrees集合的h(x)均值。如下條件提供了三種異常分數的特殊值:
即當整個iTrees集合的h(x)均值(即E(h(x)))為0時,則說明該樣本x一定是異常點,所以s=1;如果 E(h(x))=Ψ-1,則說明該樣本x一定是正常點,所以s=0;如果 E(h(x))=c(Ψ),則說明該樣本x並不是很易於區別,所以s=0.5。
圖4闡述了E(h(x))和s之間的相關性,s的范圍為[0,1], h(x)的范圍為[0,Ψ-1]:
使用異常分數s,我們能夠進行以下的判定:
- 如果樣本返回的s接近於1,則其一定是異常
- 如果樣本返回的s遠遠小於0.5,則能夠認為其為正常樣本
- 如果所有的樣本返回的s都約等於0.5,則說明整個數據集都沒有明顯的異常值
通過傳遞一個格點樣本給iForest得到異常分數的等高線,便於對檢測結果進行詳細分析。圖5顯示了一個這樣的等高線的例子,為了可視化和判別樣本空間中的異常:
使用等高線能夠清楚地識別3個點,當s大於0.6時,就是一個潛在的異常點
4.4 Small Sub-samples Build Better Isolation Models
說明小的子采樣大小能夠構建更好的隔離模型
淹沒和遮擋問題在異常檢測[Murphy 1951]中被全面地研究了。
淹沒提及的情況為正常數據被錯誤判定為異常。它出現在正常樣本數量增加或正常樣本變得分散了的情況下。
另一方面來說,遮擋則是因為存在過多的異常,遮擋了它們自身的存在,讓它們無法被判斷為異常。它出現在異常聚類變得更大和更密集了。在這種情況下,很多異常檢測就會崩潰。注意無論時淹沒效應或遮擋效應都是用於異常檢測的數據過多導致的。
iForest能夠通過使用多個子采樣構建模型去減少淹沒和遮擋效應。我們發現沒有有着小的大小的子采樣將能夠構建一個比使用來自整個數據集構建的iTree更好的性能。這是因為子采樣有着更少被異常點干擾的正常點;這樣就使得異常更容易被檢測
為了闡述子采樣是如何減少淹沒和遮擋效應的,圖6(a)展示了一個通過Mulcross數據生成器生成的 [Rocke and Woodruff 1996],有着4096個樣本的數據集。我們故意設置兩個相當大且密集並且與正常點的大聚集點很接近的異常聚集點來闡述淹沒和遮擋效應。有干擾的正常點分布在異常聚點的周圍,該異常聚點比正常聚點還有密集。圖6(b)展示了一個來自原始數據的有着128個樣本的子采樣。可見異常聚集點在子樣本中能夠很好地被識別出來。那些圍繞在兩個異常聚集點的“假的”正常樣本將會導致淹沒效應,這些正常樣本將會被清除;在圖6(a)中的異常聚集點的數據大小將導致遮擋效應,子采樣后將會變小,如在圖6(b)中展示的那樣。最終的結果是,它們使異常集群更容易分離。
當使用在圖6(a)中的整個數據集時,iForest的AUC為0.67。當使用子采樣為128或256時,iforest的AUC分別達到0.91和0.83。結果表明,iForest通過顯著減少子樣本,在處理淹沒和遮擋效應方面表現優異。請注意,即使在子采樣下,異常仍然比正常點更密集,如圖6(b)所示;而且它們仍然能夠逃避基於距離和密度的檢測方法。在下一小節中,我們將看到iForest如何利用評估高度限制來進一步處理密集的異常集群。
4.5 Adjusting the Granularity of Anomaly Scores
在異常檢測中,需要做的一個決定是否一個隔離數據聚集點是不正常的或其周圍的數據集是不正常的。在該部分中展示了孤立森林方法能夠通過在評估階段改變樹的高度限制來檢測這兩種情況。注意,在評估階段調整高度限制並不會改變訓練后的模型,也不需要對模型進行重新訓練。使用Mulcross數據生成器生成的數據集,在圖7中所示,表示兩個使用不同高度限制得到的異常分數等高線,即hlim = 1和6。生成的數據具有一個稀疏的集群,比一個小的密集集群(在右上角)大得多。可以注意到,在較高的高度限制,即hlim = 6中,大、小集群周圍的散點的異常分數均高於兩個集群的核心點。在這種情況下,大集群和小集群周圍的散點都被認為是異常:
當hlim = 1時,整個小而密的集群的異常分數較高,被認為是異常。使用較低的高度限制的效果可以描述為降低異常分數的粒度,較高的高度限制提供較高的粒度來檢測數據集群周圍的分散點。該粒度的改變帶來了檢測密集異常的優勢,詳情可見5.3:
在iForest的正常使用中,默認的評估高度限制為最大值,即Ψ-1,因此異常分數有着最高的粒度(即密集的點可能會被檢測為正常點)。除了特殊說明,評估樹高度將設置為最大值
我們描述了使用iForest進行異常檢測的過程——通過隔離實現異常檢測,給出了一種基於路徑長度的有意義的異常評分公式。我們還分析和解釋了為什么iForest使用較小的子采樣大小能夠產生更好的性能模型,並在評估階段通過調整樹高限制提供了不同級別的檢測粒度。
5. EMPIRICAL EVALUATION
本節詳細介紹了用於評估iForest的7組實驗的結果,並與4個最先進的異常檢測器進行了比較。第5.1節給出了本節中使用的數據集。在5.2節中,我們提出了兩個用於基准評估的實驗。在第一個實驗中,我們使用兩個已知的統計數據集來驗證每個檢測器的異常檢測能力。實驗驗證了這些探測器的性能。在第二個實驗中,我們使用12個數據集來將iForest與其他檢測器進行了比較,這些數據集以前曾用於評估文獻中的異常檢測器。在5.3節中,第三個實驗研究了所有異常探測器在增大異常集群大小的情況下,由於遮擋作用而產生的崩潰特性。研究了不同的評估的高度限制及其對iForest崩潰特性的影響。在5.4節中,第四次實驗研究了異常接近法線點(沼澤效應)時,由於沼澤化而引起的擊穿特性。在第5.5節中,第五個實驗研究了不同的子樣本大小對iForest的影響。這些結果為應該使用何種子采樣大小及其對檢測性能的影響提供了一些見解。我們還證明了當子樣本大小和總體大小固定時,訓練時間復雜度是恆定的。在第5.6節,第六次實驗研究了iForest處理高維數據的能力;我們使用一個簡單的單變量測試來減少樹構造之前的屬性空間。我們的目的是找出這個簡單的機制是否能夠提高iForest在高維空間的檢測性能。在許多情況下,異常數據很難獲得;在第5.7節中,第7個實驗檢驗了iForest在只有正常實例可供訓練時的性能。
在所有的實驗中,都報告了實際CPU時間和Area Under Curve(AUC)。所有數據點的異常值均用於AUC計算。AUC等於異常檢測器在異常點分數高於正常點分數時的概率。由於AUC是獨立於cutoff點的,所以不管數據集中有多少異常,它都可以測量探測的准確性。在我們實驗中的AUC值都是通過在R語言中的一個標准的性能分析包“ROCR” [Sing et al. 2005]進行計算的。用於異常檢測的計算AUC的過程將放在附錄中。所有的實驗都是在Linux集群中以2.3GHz處理單線程作業的方式進行的。
使用在實驗中的四個先進的異常檢測算法為ORCA、one-class SVM、LOF和Random Forest方法
5.1 Data Sets
忽略
5.2 Empirical Comparison of iForest, ORCA, SVM, LOF and Random Forests
本小節由兩個實驗組成。在第一個實驗中,我們使用兩個以前使用過的統計數據集hbk和wood (Rousseeuw和Leroy 1987)來檢驗每個異常檢測器的基本行為。在第二個實驗中,我們根據AUC和處理時間來評估每個檢測器的性能。
Statistical data sets.我們的第一個統計數據集是hbk數據集,它包含75個實例,其中14個是異常。異常由兩個小的集群組成,其中一個集群比另一個集群更分散。圖8顯示了來自5個異常檢測器的前20個異常,以及由原來的4個屬性建立的由前兩個主要成分畫成的圖。結果表明,iForest和RF是僅有的兩個將所有異常排在首位的探測器:
我們的第二個統計數據集是wood數據集,它由20個實例組成,其中6個是異常。異常都在一個較小的集群中。圖9顯示了所有異常檢測器排列的前10個實例,以及由原始6維屬性中的兩個主要成分畫成的二維圖。ORCA和LOF正確地識別了所有四個異常,而iForest錯誤地排列了一個實例,RF在這個數據集中表現很差:
總的來說,iForest是唯一一個在這兩個統計數據集中表現同樣出色的異常檢測器。
Performance Evaluation.第二個實驗的目的是比較iForest與ORCA、LOF、SVM、RF的AUC和處理時間。
表IV報告了AUC分數和所有方法的實際運行時間。從表中可以看出,iForest在AUC和處理時間上都優於其他所有方法。特別是,對於大於1000個點的數據集,iForest是最快和最准確的。唯一的例外是表IV(a)所示的ForestCover數據集,其中SVM的AUC略好於iForest(AUC相差0.03)。
注意,iForest、ORCA、SVM和LOF之間的執行時間差異很大,尤其是在大數據集上;這是因為iForest不需要像ORCA和LOF那樣計算成對距離,也不需要像SVM那樣進行核優化。注意,LOF的運行時間較長,RF的內存要求較高;它們無法在大型數據集上運行。
在AUC方面,iForest在12個數據集中有9個對ORCA比較有利,SVM在12個數據集中有11個,LOF在8個數據集中有7個,RF在4個數據集中有4個。在處理時間上,iForest在大於1000點的數據集上優於ORCA和SVM,在所有數據集上iForest都優於LOF和RF。
iForest的性能是穩定在一個廣泛的t值(即樹的數量)間。使用兩個有着最大的維數的數據集,圖10顯示了AUC收斂在一個小t上。完整的結果可在附錄b 查看。因為增加t也會增加處理時間,AUC的早期收斂表明如果將t調到一個數據集,iForest的執行時間可以進一步降低:
對於Http和Mulcross數據集,由於異常集群的大小很大,而且與正常實例相比異常集群具有相同或更高的密度(即遮擋效應),在這些數據集上ORCA報告的結果比隨機猜測的結果差。我們還使用了更高的k值(其中k = 150)對這些數據集進行了ORCA實驗,但是檢測性能相似。這突顯出一個在ORCA數據集中有問題的假設和其他類似的基於k-nn的方法:他們只能檢測到大小小於k的低密度異常集群數據的。增加k可能會解決這個問題,但由於處理時間的增加,這是一個不實際的高容量設置,需要找到一個合適的k。
5.3 Breakdown Analysis with data-size-increasing Anomaly Clusters (Masking Effect)
在本小節中,我們將結合iForest通過設置不同的評估高度限制來改變檢測行為的能力來研究其崩潰特性。為了便於比較,我們還研究了本節開始介紹的四種異常探測器的崩潰特性。
利用Mulcross數據生成器生成4096個帶有不同污染(contamination)程度的異常和不同異常聚類數量的正常實例,檢驗了所有檢測器的檢測精度(AUC)。AUC通常隨着污染水平的增加而下降——AUC下降的速度表明異常探測器在這種情況下崩潰的速度有多快。污染水平在a = 0.02和a = 0.5之間。
在圖11(a)中,所有其他四個異常檢測器在整個污染范圍內的檢測性能都明顯低於iForest,盡管隨着污染水平的增加,有些檢測器的檢測性能要優於其他檢測器。密集異常集群對其他異常探測器的誤導作用大於iforest,其中大部分在污染水平達到a = 0.1之前就崩潰了,檢測性能很差;iForest更加健壯,隨着污染水平的增加,它的崩潰更加緩慢。注意,有十個異常集群的問題要比只有一個異常集群的問題容易。這是因為相同數量的異常現在被分成十個簇,而不是集中在同一污染水平的一個集群上。iForest幾乎保持了對整個污染范圍的檢測性能。但是,這對其他四個探測器的影響很小,異常集群的高體積和高密度仍然是一個難題。
對於iForest,在圖11(b)中,我們發現設置較低的評估高度限制對於處理密集的異常集群是有效的。iForest使用hlim = 1獲得最佳性能。這是因為iForest使用最粗粒度來檢測聚集異常。
5.4 Breakdown Analysis with Local Anomalies (Swamping Effect)
當異常與正常情況太接近時,由於異常的接近性,異常檢測器就會崩潰。為了檢驗不同探測器對局部異常的魯棒性,我們在兩個不同密度的正常集群的背景下,生成離正常集群不同距離的異常。
我們使用距離因子= l/r,其中l為異常集群與正常集群中心之間的距離,r為正常集群的半徑。當距離因子為1時,異常集群正好位於密度較大的正常集群的邊緣。在本次評估中,LOF和ORCA取k = 15,使得k大於最大異常集群的大小。隨機森林和支持向量機在此分析中表現不佳。為了清晰起見,本分析只顯示了前三個檢測器。
如圖12(a)所示,當異常分散時,iForest的性能與LOF相似,其次是ORCA。當異常聚集在一起時,如圖12(c)和(d)所示,iForest的性能明顯優於LOF和ORCA。圖12(b)和(d)顯示了距離因子= 1.5的兩種場景。iForest在集群異常中的突出表現歸功於隔離的使用,它涵蓋了整個數據集的上下文以及局部的上下文。當聚類異常接近正常聚類時,很難檢測到異常,比如當它們與鄰居相距不遠,而且它們的相對密度與其他地點相似時。然而,這些聚集異常在整個數據集的上下文中仍然是可區分的,這就是為什么iForest能夠很好地檢測聚集異常:
5.5 Analysis on the effect of subsampling
下面的實驗根據內存需求和訓練時間調查iForest的效率,子采樣大小ψ相關。此外,我們還研究了在有限的數據供應下,探測器的性能如何。在這個實驗中我們在范圍ψ= 2,4,8,16,……,65536中調整子采樣大小。
兩個例子的研究結果如圖13所示,我們觀察到的iForest的AUC很快收斂在一個小ψ上。在ψ= 128時,Http的AUC接近最優;當ψ= 512時則是ForestCover,他們只有一小部分原始數據(Http為0.00045和ForestCover為0.0018),這使得iForest在使用小ψ時更高效。對於較大的ψ, AUC的變化很小:分別為±0.0014和±0.023。還要注意,當ψ從4增加到8192時處理時間增加非常緩慢。iForest在這個范圍內保持了臨近最優的檢測性能。結果表明,該算法的檢測性能主要來自於基於樹的算法,而非子采樣。ψ的增加在ψ> 64之后對Mulcross生成的數據有不利影響。這是由於密性異常集群的遮擋效應導致的。如4.4節所述,遮擋效應可以通過減少iForest中的子采樣來解決。簡而言之,高檢測性能是iForest的特點和使用一個小ψ將導致較低的處理時間,以及進一步提高ψ是不必要的。所有數據集的完整結果見附錄C。
使用較小的子樣本大小意味着可以輕松地以最小的內存占用來托管在線異常檢測系統。使用ψ= 256,節點的最大數量是511。設節點的內存需求為b字節,t為樹的個數。因此,檢測異常的工作模型估計小於511tb字節,這在現代計算設備中是微不足道的。需要注意的是,使用固定數量的樹和子采樣大小,內存需求是恆定的。
至於訓練時間,當我們在不同大小的Mulcross生成的數據中使用一個常數ψ= 256,iForest的訓練時間在數據大小雙倍增長時僅增長不到一半的大小,如表V所示:
不考慮在加載訓練數據到內存的操作和子采樣過程,時間,構造t = 100棵樹的時間是恆定的,大約0.04秒。只有當數據量非常大時,iForest的總處理時間才會以與數據量相同的速度增長;否則它就是次線性的。相比之下,ORCA和SVM的執行時間在數據翻番時都是數據大小的4倍左右。
當數據量較大時有很大的不同,如100萬個數據點時,iForest從ORCA中提取的數據量不足ORCA的1 / 1500,從SVM中提取的數據量不足SVM的1 / 6000;而且檢測精度也提高了很多。注意,使用較小的數據量並不能提高ORCA和SVM的檢測結果。使用常數ψ和t時,構建iForest的運行時間和內存需求基本上是恆定的,無論訓練數據的大小是多少。
此外,我們還根據AUC和處理時間研究了子采樣在不同異常檢測器的效果。每個實例的鄰域從一個子樣本到另一個子樣本都發生了顯著的變化;這可能會影響基於k近鄰(k-nn)算法的性能。隨着子樣本中數據大小的減小,我們可以預期處理時間會減少。在下面的段落中,我們將演示使用兩個數據集進行子采樣的效果。
在圖14中,三個檢測器(a) iForest、(b) ORCA和(c) SVM)在原始數據集不同子采樣大小下的性能分別以四種采樣比(0.25、0.5、0.75和1.0)展示。我們觀察到iForest和SVM在不同比例下的測試性能是穩定的(即上面那條線是直的)。然而,當采樣率從1降低到0.75時,ORCA的檢測性能會下降。ORCA中顯示的檢測性能類似於分類模型中常見的學習曲線,訓練數據的減少通常會導致分類性能下降。與[Wu and Jermaine 2006]展示相同。由於SVM為正常點構造了一個邊界,因此能夠構造一個小樣本的正常點邊界;因此,SVM在采樣率為0.25時達到了最佳的檢測性能。然而,它的最佳表現並不是具有競爭性的,就像在Annthyroid數據中。
在處理時間方面(即下面那條線),ORCA和SVM的處理時間隨着子采樣大小的增加呈超線性增長,而iForest在ForestCover數據集上呈線性增長,在Annthyroid數據呈亞線性增長。上述結果表明,iForest適合於大數據集,因為它在處理時間上有線性或次線性的增長,並且在不同數據大小下具有穩定的檢測性能。注意,iForest的時間復雜度是(對於訓練和評估)是O (tψ(ψ+ n))。對於大型的數據集,其中n≫ψ,時間復雜度由n決定。
5.6 High Dimensional Data
異常檢測的一個重要挑戰是處理高維數據。對於基於距離或基於密度的方法,每個點在高維空間中都是同樣稀疏的,呈現距離是無用的度量(注意,許多基於密度的方法使用距離來估計密度)。沒有任何幫助,iForest也遭受同樣的“維度詛咒”。但是,使用一個簡單的屬性選擇器,我們將看到是否可以改進iForest處理高維數據的能力。
在本實驗中,我們研究了一個高維數據的特殊情況,其中數據集具有大量不相關的屬性。結果表明,iForest在處理時間上具有明顯的優勢。我們使用表III中介紹的前13個數據集模擬這些高維數據集。對於每個數據集,都添加值在0到1之間的均勻分布隨機屬性。因此,每個數據集中共有512個屬性。我們使用一個簡單的統計測試,Kurtosis[Joanes and Gill 1998],在構建每個iTree之前,從子采樣中選擇一個屬性子空間。Kurtosis度量的是單變量分布的“峰度”。Kurtosis對異常的存在很敏感,是一種很好的異常檢測屬性選擇器。當Kurtosis為每個屬性提供了一個排序后,根據這個排序選擇一個子空間的屬性來構造每棵樹。結果表明,當子空間大小接近原始屬性個數時,檢測性能得到了提高。我們還可以從其他屬性選擇器中進行選擇,例如,Grubb的測試。然而,在本節中,我們只關注展示iForest在降低異常檢測任務的維數方面使用屬性選擇器的能力。
如圖15所示,a)在子空間大小的整個范圍內,iForest在Mammography和Arrhythmia數據中的處理時間均小於10秒;b)當子空間大小等於原始屬性個數時,AUC達到峰值。完整的結果見附錄D。
當在這兩個高維數據集上使用ORCA時,它報告AUC接近0.5,處理時間超過100秒。這表明這些高維數據集是具有挑戰性的,然而,iForest能夠通過一個簡單的Kurtosis測試在小的子采樣中而不是整個數據集上提高檢測的性能。很可能有其他方法可以應用類似的屬性約簡技術來在高維數據提高檢測精度,但是他們需要對整個數據集進行測試。iForest的另一個優點是即使在高維數據中處理時間也很短。
5.7 Training Using Normal Instances Only
“當訓練集只包含正常實例時,iForest是否能工作?”為了回答這個問題,我們從訓練樣本中去除異常,並用異常和正常樣本來評估訓練后的模型。我們在表VI中報告了平均AUC。結果表明,異常的包含對檢測性能沒有影響,或者影響很小。
iForest在訓練集中沒有異常時仍然能夠檢測異常的原因是iForest描述了如附錄A中所示的數據分布,其中高路徑長度值對應於數據點的存在。因此,異常的存在與iForest的檢測性能無關——在使用iForest時無需擔心這一點。
8. CONCLUSIONS
本文提出了第一種隔離方法iForest,並在異常檢測領域做出了三個關鍵貢獻。首先,我們介紹了利用隔離作為一種比常用的基本距離和密度測量更高效和有效的異常檢測手段。我們展示了隔離的概念,當在樹結構中實現時,充分利用了異常的“少數和不同的”特性,與正常點相比,這些特性將異常隔離在離根節點更近的位置。這允許使用路徑長度構造樣本空間的概要。
其次,iForest是一種有着低線性時間復雜度、內存需求小的算法。無論數據集有多大,它都使用固定大小的小子采樣和少量的樹來構建一個性能良好的模型。它在訓練過程中具有恆定的時間和空間復雜性。
第三,我們與四種最先進的異常探測器的經驗對比表明,iForest在以下方面具有優勢:
- 運行時間、檢測精度和內存需求,特別是在大數據集,
- 與i)遮擋和淹沒效應相關的魯棒性,和ii)聚集異常能力
- 處理具有不相關屬性的高維數據的能力。
我們還表明iForest能夠:
- 在訓練數據中有無異常情況下都能進行訓練
- 提供不同粒度級別的檢測結果,無需重新訓練