異常檢測--ADBench (NeurIPS'22) is ALL You Need

語言: CN / TW / HK

異常檢測 (又稱outlier detection、anomaly detection、離群值檢測) 是一種重要的資料探勘或機器學習方法可以找到與“主體資料分佈”不同的異常值 (deviant from the general data distribution),比如從信用卡交易中找出詐騙案例,從正常的網路資料流中找出入侵,在正常案例中找到罕見病患者,有非常廣泛的商業應用價值。同時它可以被用於機器學習任務中的預處理(preprocessing),防止因為少量異常點存在而導致的訓練或預測失敗。

當然,每年各大會議和期刊都少不了異常檢測的論文,少則幾篇,多則幾十篇。 但是,我們真的看到異常檢測領域的發展了嗎?新提出的演算法真的更好嘛?為了回答這個問題,這兩年我參與發表了三篇NeurIPS分別研究了:

  1. 圖資料上的異常檢測( Benchmarking Node Outlier Detection on Graphs
  2. 網格資料上的異常檢測 ( ADBench: Anomaly Detection Benchmark )
  3. 時間序列上的異常檢測( Revisiting Time Series Outlier Detection: Definitions and Benchmarks

在我們最新的45頁論文 ADBench:Anomaly Detection Benchmark 中,我們(@芝士確實是熱量@局關THU)嘗試通過10萬個實驗來定量分析網格資料(tabular data)中的這個問題。你會在這篇論文中看到:

  1. 30個異常檢測演算法在57個基準資料上的表現( 演算法和資料均可下載 ,其中有10個我們設計的新資料)
  2. 不同變數下的異常檢測演算法表現:(i)比如當我們有一定的標籤時(supervision)(ii)比如我們遇到不同型別的異常時(iii)以及當我們的資料中存在噪音(noise)或者損壞時(corruption)
  3. 我們認為的新的重要的異常檢測研究方向:
  • 無監督異常檢測的評估、模型選擇和設計 :我們的實驗結果說明了自動機器學習(automl)和自監督學習、遷移學習對於無監督異常檢測的重要性。
  • 半監督學習在極少標籤的優異效果指明瞭它可能是最適合我們繼續探索的方向
  • 當我們知道(資料的)異常型別時,它可以被用作重要的先驗知識
  • 面對資料中的噪音和問題,設計抗噪(noise-resilient)異常檢測演算法是很重要的方向

2. 如何設計一個好的benchmark?

這些年來很多人都做過異常檢測的benchmark,我們不是最早的,也肯定不是最後一個,但我們的角度是最實際的,囊括的演算法和資料也是最全面的。

首先我們根據異常檢測的實際應用設計了三個角度

  1. 從完全無監督異常檢測到完全監督的異常檢測,標籤的數量有多重要?
  2. 對於不同種類的異常,如何分析演算法的優劣?
  3. 對於資料質量中面臨的問題,比如噪音、重複、錯誤等,哪些演算法更加魯棒?

而我們所有的實驗都是在57個數據上進行的綜合分析 ,包括使用統計檢驗等。對於有隨機性的演算法也進行了多次重複取平均,因此結果應該是穩健的。具體的實驗過程歡迎檢視我們的GitHub(並star):

1. 標籤對於異常檢測的重要性

我們最驚人的發現在於, 沒有任何一個無監督異常檢測演算法比其他的在統計意義上更好(見下圖) 。那為什麼每年還有各種新演算法被提出來了?因為大家都只在少量小資料進行試驗,稍微多點資料,你就知道無監督上的異常檢測其實沒有太大進展,綜合來看(準確度和效率)isolation forest和ECOD是最推薦的。

而對於半監督和全監督模型而言,效果自然會比純無監督學習要好的多。此處特別要誇獎一下半監督演算法(左圖),大部分演算法只要1%的資料就比最好的無監督演算法要好。

而半監督演算法其實這些年的進展其實還是顯著的,它的效率是遠比監督模型要高的。所以我們基本認為未來的發展發現還是在半監督模型上,它既不像無監督那麼“缺少指導”,又遠比監督演算法節約標籤。值得大家特別關注。

2. 異常的型別可以被用於當做強先驗知識

另一個有趣的發現是雖然標籤重要,但其實對於資料的理解同樣重要。當我們知道不同資料中主要的異常型別時,選擇合適的演算法比監督學習的效果還要好。比如LOF在檢測區域性異常上遙遙領先其他演算法,比如kNN在檢測全域性異常是顯著的最強。

這樣的發現告訴我們,無監督演算法不是沒用,只是沒有被用對地方。

3. 噪音下的模型魯棒性

在我們設計的三種噪音、錯誤和資料損失下, 我們發現無監督學習受到重複型別錯誤的影響最大 ,核心原因在於無監督異常更加依賴於對於資料分佈的假設,和資料重複會把分佈帶偏。而監督學習不太受到類似情況的影響。

同時,半監督和監督學習對於無關特徵的魯棒性都比較好,原因也在於標籤會自動幫助模型進行特徵選擇,避免由於噪音所造成的的錯誤。

總體來看,無監督學習在資料質量變差時(X-軸向右)受到的影響最大,而監督模型的魯棒性最好。

未來的研究發展方向

綜上我們提出了異常檢測未來的重要發展方向,包括:

  1. 既然無監督檢測模型效果上沒有統計上的區別,那麼我們不該輕信隨便選擇一個模型就用的結果 。未來的研究發展應該著力於自動化機器學習來輔助異常檢測模型的選擇和調參,其中的代表工作可能是我去年的NeurIPS文章( Automatic Unsupervised Outlier Model Selection )。同時,我們應該更加關注自監督學習(self-supervised learning)、遷移學習在異常檢測中的應用,隨便套個已有的模型,跟摸彩票一樣不靠譜。
  2. 半監督異常檢測(semi-supervised learning)在我們的實驗中體現出了驚人的好效果,這也是我們認為未來異常檢測需要繼續發力的方向 。純無監督太隨機,而全監督又不現實,如何既利用無監督的資料作為支援,又高效使用標籤資訊,是未來的重要發展方向。
  3. 如何把異常型別作為先驗知識融入模型設計 ?我們認為這個方法是有效提升模型效果,降低標籤依賴的好方法。
  4. 如何抵抗資料質量低下所造成的模型效果變差 ?未來的工作可以考慮從半監督模型入手,融入弱監督學習的方法。我們在最近的一個工作裡也有所使用( ADMoE: Anomaly Detection with Mixture-of-Experts from Noisy Labels )。對於這樣的研究較少的領域,大家不妨來填坑。

當然,一篇知乎文章不足以介紹我們接近十萬個實驗所帶來的理解,感興趣的小夥伴歡迎移步我們的文章 ADBench:Anomaly Detection Benchmark演算法和資料

在下篇文章中,我會和大家介紹我們的另一篇NeurIPS‘22 文章,帶你走入圖異常檢測的世界。

All you need for anomaly detection is __.