論文標題:A Comparative Evaluation of Unsupervised Anomaly Detection Algorithms for Multivariate Data
對比的算法:
摘要
1. 異常檢測只應用於無標簽的數據,也就是說,只能運用無監督學習算法。
2. 異常檢測應用領域有:網絡入侵檢測(network intrusion detection)、欺詐檢測(fraude detection)、生命科學和醫學領域
3. 此論文評估的能反映:不同方法的優勢和劣勢、性能、計算量(computational efforts)、參數設置的影響、全局/局部異常的檢測行為
4. 此論文最后給出了:典型實戰任務中算法選擇的建議
介紹
- anomaly detection=outlier detection,異常值=離群點
- 異常值的定義:樣本中,明顯偏離其他值的實例
- 異常值的特點:異常檢測的原始用途:data cleansing,后者的定義是:消除outliers,因為模式識別算法(pattern recognition algorithm)對異常值非常敏感
- 特征上不同於其他數據
- 數據集中只有少量的異常值
- 異常值檢測目前的應用領域:入侵檢驗、欺詐檢驗、數據防泄密、醫學應用和生命科學領域異常檢驗算法的選取需要考慮到算法的時效性和檢測性能。可以依據檢測出異常的時間點分為:事后分析(post-incident analysis)、准實時監測、預先警告
- 在入侵檢驗中的應用:異常檢驗在這個領域應用最多,通常基於網絡或主機。此時的異常檢驗被供應商稱為行為分析(behavioral analysis),為了實時處理海量數據,往往采用的是簡單而快速的算法。通常使用模式匹配來檢測已知的威脅,用額外的異常檢驗模塊嘗試識別未知的可疑行為
- 在欺詐檢驗中的應用:通常分析日志數據,檢測欺詐性會計;或通過信用卡支付日志檢查濫用或丟失的信用卡。
- 在數據防泄密(data leakage prevention, DLP)的應用: 類似於欺詐檢驗,但要求准實時分析,從而可作為預防措施
- 在醫學應用領域和生命科學的應用:病人監護(借助ECG信號或其他傳感器)、分析醫學圖像(如CT)以檢測畸形細胞或腫瘤。在生命科學,異常檢驗也可用來尋找突變體
- 其他領域,如:利用監視攝像數據分析可疑的行為,檢測耗能異常,監控移動通信網絡,異常識別偽造文件等等
異常檢測分類
1. 異常檢驗設置
不同於分類設置,取決於可獲得的標簽,可分為三大類:
1.1 監督異常檢測:
類似於模式識別,但他的類通常極其不平衡。C4.5決策樹分類算法不適用,但SVM和ANN(Artificail Neural Networks)還行。由於通常異常不是提前知道的,或者是測試階段實時產生的,這種設置通常意義不大。
1.2 半監督異常檢測:
1.3 無監督異常檢驗:
2. 異常檢測算法輸出
3. 異常類型

- 點異常檢測
- 集合異常檢測(可通過相關性、分組與合計來產生新特征,再使用點異常檢測。需要有對數據集非常熟悉,這個過程也叫做數據視圖的產生)
- 情境異常檢測(可通過加入改變情境的因素作為新特征,再使用點異常檢測)
4. 標准化(Normalization)
相關工作
無監督異常檢測算法

1. k-NN全局異常檢測(全局,近鄰)
2. LOF局部異常因子(局部,近鄰)
3. COF基於連通性的異常因子(局部,近鄰)
類似於LOF,但密度估計不一樣。LOF是基於歐氏距離的,即默認數據是以球形分布的,假設是特征是線性相關的,LOF就無能為力。
COF中,近鄰的局部密度是基於最短路徑方法求得的,亦稱鏈式距離(鏈接當前實例和所有k個近鄰的最短距離之和)。
4. INFLO受影響的異常(局部,近鄰)
算法使用k近鄰和反向近鄰集
(待續...)
5. LoOP局部異常概率(局部,近鄰)
6. LOCI局部關聯積分(局部,近鄰)
7. aLOCI近似局部關聯積分(局部,近鄰)
8. CBLOF基於聚類的局部異常因子(全局,聚類)
9. LDCOF局部密度簇異常因子(局部,聚類)
10. CMGOS基於聚類的多變量高斯離群點得分(局部,聚類+子空間)
基於聚類的異常檢測的另一個加強版。
11. HBOS基於直方圖的離群點得分(全局,統計)
假定特征獨立,這貌似會帶來不利影響,但有個明顯的優勢:處理速度大大提高。(基於近鄰的計算要花超過23小時的數據,HBOS可以在1分鍾內完成)
分別為每個特征作一個直方圖,對某個實例,連乘所有特征中他的所在的柱的反高度(代表密度估計)。這類似於分類算法中的朴素貝葉斯算法(連乘所有獨立特征的概率)。
在半監督異常檢測中非常受歡迎。
兩種作圖方式:1.固定的柱寬度。2.柱個數大致相同,但導致不同的柱寬度。 當有大量離群值的時候,第二種方法更強固。
這篇論文用的是第2種作圖方式
12. One-Class SVM(分類器)
常被用作半監督異常點監測,但一開始是設計為無監督算法的(使用軟余量)。
在無異常值的數據集中訓練one-class SVM,然后,SVM給測試集中的異常值和普通數據分類。
這篇論文使用的是無監督算法:普通的one-class SVM和拓展的η one-class SVM
13. rPCA強固的主成分分析(子空間)
主成分是協方差矩陣的特征向量,因此和CMGOS一樣計算有困難(異常值對協方差矩陣有很大的影響,密度評估可能不准確)。
提出一種強固的版本,即rPCA,它基於馬氏距離計算兩次協方差矩陣
一旦確定了主成分,問題就到了選取哪個特征值來算得分上了。用主要成分會展示出相對大部分數據的全局偏離,然而使用次要成分會表示出較小的局部偏差
審查算法的復雜性和實現
1. 基於近鄰的算法中,主要時間都花在尋找近鄰上(其他的,如計算密度或LOF只需要不到1%的運行時,可忽略不計)。而尋找近鄰的時間復雜度除了LOCI為O(n3),其他都是O(n2)。
基准數據集
數據集總結
數據集涵蓋了廣泛的應用領域,如醫療應用、入侵檢測、圖像和語音識別以及復雜系統的分析。
作者發布了數據集,以鼓勵研究人員將其提出的算法與此工作進行比較。
比較評估
對無監督學習,一種常見的評估策略是:將結果根據異常值得分進行排名,然后迭代地從第一名到最后一名設置閾值。這會形成N個元祖值(真陽率和假陽率),可得一個ROC曲線。ROC的積分AUC,可用作檢驗性能措施。
一個對AUC不錯的解釋是:一個算法分配給“隨機選取的普通實例的score低於隨機選取的異常實例的score”的概率。因此,作者認為這是一個不錯的評估方式。
AUC缺點是:1. 只考慮排名,沒考慮得分之間的相對差異。2. 不適合不平衡類問題。 但基於AUC的評估依然是無監督異常檢測的事實標准。
調節AUC曲線的方法 | |
無監督 | 通過改變排好序的結果列表中的離群閾值 |
監督 | 通過改變某個參數,如k |
基於近鄰的算法的結果
1. LOCI:計算量大、不隨着k值改變、最不推薦、不穩定。
2. aLOCI:非確定的(20次求平均值)、最不推薦、不穩定。
3. 兩個k-NN和LOF變體,結果差不多。
4. 對於全局異常檢測任務中,局部異常只檢測算法效果不佳。
5. 在高維數據集上,k值的取值要偏小些才能達到稍微好點的效果(AUC可達0.78),k的增大會造成AUC的迅速下跌,一般不要超過5。
基於聚類的算法的結果
1. CBLOF在大多數情況下表現不好,尤其是作用在小數據集上。可能是由於該算法算分時用簇成員數量加權造成的,因為去掉全中后的uCBLOF算法會好很多。
2. 基於近鄰的算法的結果中的第4點結論
3. CMGOS-Red和CMGOS-MCD表現都不錯,但CMGOS-MCD在高維度的數據集上不能在規定時間內完成,因此更推薦前者。
4. 總體上,基於近鄰>基於聚類
其他算法的結果
1. HBOS,4個數據集當中(共10個數據集)都效果最佳,並且大數據集上效果幾近完美。
2. cPCA表現一般,例外:在其中一個(shuttle)數據集下能和HBOS並列第一
3. one-class SVM算法表現平平。與加強版的gamma one-class SVM相比,其實還是前者更好。
算法的計算時間比較
1. 對於小數據集,除苛刻的LOCI外,小數據集運行足夠快,可以把重心放在檢測性能上
2. 對於大型數據,相差可以橫跨4s到6d以上(HBOS vs. CMGOS-MCD)
3. 運行時: 基於近鄰>基於聚類 (除了CMGOS-MCD)
4. HBOS迄今為止最快
5. 不推薦使用CMGOS-MCD
6. 基於SVM的算法運行時間相當高,主要用於具有二次復雜度的自動伽馬調諧
總結
上面提到過的不寫。
1. 在准實時場景中,基於聚類的異常檢測可能更好。
2. 在基於最近鄰的方法中:全局k -NN算法是一個很好的候選者。雖然LoOP大多情況下性能最好,但在某些數據集上表現不好。特別是對於全局異常檢測問題,該算法應該完全避免。如果提前知道要解決的問題涉及局部異常,LOF也是一個很好的候選者。
3. 在基於聚類的算法中:簡單的uCBLOF算法還顯示了所有數據集的平均良好性能,CMGOS-Reg在大多數數據集中似乎也是可靠的。由於算法設計缺陷,應該避免原始的CBLOF算法。具有基於子空間的MCD密度估計的CMGOS不應該是第一選擇,因為密度估計太慢並且檢測性能更差。
4. HBOS又快又好,在大型數據集中強烈推薦!
5. 對具有400維度的數據集來說,只有當k<5時,基於鄰近的算法才能有用。而對於無監督算法,全軍覆沒。
6. 作為算法選擇的一般總結,建議使用基於近鄰的方法,特別是k -NN用於全局任務,LOF用於本地任務,而不是基於聚類的方法。如果計算時間是必要的,HBOS是一個很好的候選者,特別是對於較大的數據集。