1. 程式人生 > >異常檢測綜述

異常檢測綜述

原文地址:http://www.cs.umn.edu/sites/cs.umn.edu/files/tech_reports/07-017.pdf

摘要

這篇文章對常見的異常檢測演算法進行了分類,在每一類中,給出了這一類問題的基本假設(什麼是正常,什麼是異常),針對該類問題的基礎方法,以及對基礎方法的擴充套件。最後給出了關於計算複雜度的討論。

1. 引言

異常檢測應用廣泛。本文給出的方法,有些只適用於某些場景,但有些方法有很強的普適性。本文的目標是給出一個結構性的關於異常檢測方法的介紹。

1.1 異常的定義

異常檢測與噪聲去除以及噪聲適應不同,噪聲去除需要在正常訊號中去除噪聲訊號,而噪聲適應實際上關注的是模型在噪聲出現時的魯棒性。異常發現與創新發現也不同,創新發現是為了發現與正常模型不適配的模式。

1.2 挑戰

  • 定義一個正常的區域並不容易,有時候正常和異常很難區分;
  • 異常如果來自惡意入侵,入侵者通常會偽裝,這使得異常的檢測格外困難;
  • 在某些領域,正常訊號的定義是會不斷變化的,當前的正常訊號可能過一段時間就是異常的;
  • 不同領域對異常的定義是不一樣的,某個領域的經驗很難遷移到另外一個領域;
  • 異常檢測模型的訓練樣本,通常很難獲取;
  • 正常的資料中通常含有噪聲,使得它看起來很像異常資料,因此很難判斷;

1.3 相關工作

1.4 我們的貢獻

針對六大類場景,分別分析了它們對於異常的核心假設,這些場景下的基礎方法,以及,前人在這些場景下提出的方法,是怎樣在基礎方法的基礎上變化而來的。最後分析了這些方法的計算複雜度。

1.5 本文的組織結構

2. 異常檢測問題的不同方面

介紹了,為什麼需要這麼多的異常檢測演算法,因為每個異常檢測問題都有其特殊性。

2.1 輸入資料的本質

在不同的異常檢測問題中,資料的形式不一樣,因此不能使用同一套異常檢測演算法,需要分別開發;
有些問題中,樣本是彼此孤立的,但另外一些問題中,樣本是彼此相關聯的。比如時序資料,圖資料,社交關係資料,空間資料等等。正因為資料的彼此關係不同,所以也需要有不同的異常檢測演算法來處理。

2.2 異常的型別

點異常,異常點與其它點的分佈明顯不同,大部分異常檢測處理的是這種問題;
上下文異常,也叫做條件異常,就是說,一個點只有在特定的上下文下,才叫做異常,如果沒有這個上下文,這個點就是正常的。這種情況下,我們通常會用兩類特徵來描述一個樣本,一個是上下文特徵(比如,在空間資料中,經緯度就是上下文特徵,在時序資料中,時間點就是一個上下文特徵),二是行為特徵,也就是除了上下文特徵之外,樣本點本身屬性的特徵。
集合性異常,單個點並不構成異常,但是多個這樣的點集合在一起,就構成了異常,典型的例子是心電圖,如果有驟停,那就是集合性異常。另外一個典型的例子是,計算機操作的異常,單個操作都是正常的,但是幾個操作聯合在一起,就意味著資料的竊取,這就是不正常的。集合異常更多的出現在空間資料、社交資料、時序資料中。
點異常和集合性異常,在加入上下文之後,也可以變為上下文異常問題。

2.3 資料的標籤

資料的標籤不易獲取,按照標籤的情況,把異常檢測問題分為三類,第一,有監督,這種情況就是簡單的分類預測問題,比較簡單,本文中不予介紹,第二,半監督,第三,無監督。

2.4 異常檢測演算法的輸出

分數,或者是標籤(是否)。

3. 異常檢測演算法的應用

3.1 計算機的入侵檢測

由於資料樣本量比較大,而且對誤報非常敏感,因此適合使用無監督或者半監督的方法。
分為基於客戶機和基於網路兩類方法。

3.2 欺詐檢測

基本思路是,對使用者通常的使用習慣建模,一旦使用者行為與習慣不符,就報警。
第一,信用卡欺詐,第二,手機欺詐,第三,騙保欺詐,第四,內部交易欺詐

3.3 醫療和公共健康異常檢測

3.4 工業危害檢測

第一,接卸單元的錯誤檢測,第二,結構缺陷檢測

3.5 影象處理

3.6 文字中的異常檢測

3.7 感測器網路

4. 基於分類的異常檢測方法

基於這樣的假設:一個可以將正常與異常區分的分類器,可以在給定的特徵空間內學習到。
可以分為兩類:多類異常檢測和一類異常檢測,多類異常檢測的原理是,訓練集中指定了多個正常類的樣本,對每個正常類單獨學習一個分類器,面對一個測試樣本,用每個分類器逐個判斷,如果不能判斷它屬於任何一個正常類,那麼它就是異常的。一類的異常檢測,通常使用one-class svm演算法。

4.1 基於神經網路

多類的就是正常神經網路,單類的有點意思,對輸入樣本進行編碼,然後恢復,計算輸入和輸出​​之間的偏差,小於一定的閾值就是正常樣本,否則就是異常。

4.2 基於貝葉斯網路

主要用於多類的異常檢測。對於單變數,通過訓練資料統計出先驗和似然,學習後驗就好了。對於多變數樣本,假設多個變數之間是相互獨立的,分別計算每一個變數的後驗,然後聚集起來即可。

4.3 基於支援向量機

主要用於一類的異常檢測。

4.4 基於規則的方法

比如RIPPER和決策樹。先用這些演算法生成一些規則,每個規則對應了一個比例,即滿足這個規則的樣本,是正常樣本的比例。對於一個測試樣本,先判斷它滿足多少規則,對於滿足性最好的規則分數,用1減去這個分數,就是這個樣本作為異常樣本的概率。

5. 基於最近鄰的異常檢測方法

基於這樣的假設:正常的樣本都存在於密集的鄰域內,而異常的樣本通常離自己的最近鄰很遠。
這裡,包括第6章中基於聚類的度量標準,僅要求距離是正定的,對稱的,並不要求滿足三角定理。
分為兩類:一是通過第k近鄰的距離來判斷,二是通過樣本點所處位置的密度來判斷。

5.1 使用第k近鄰來判斷

5.2 使用相對密度

​LOF值=k近鄰的密度/當前點的密度​​​​​​​​​​

6. 基於聚類的異常檢測方法

一共可以分為三類,第一類的假設是,正常類的樣本屬於某一個聚類中心,而異常類的樣本不屬於任何一個聚類中心,(需要用到一些,不是所有樣本點都會劃分到某個聚類中心的聚類演算法,比如DBSCAN);第二類的假設是,正常樣本離他們的聚類中心很近,而異常樣本離他們的聚類中心很遠,(需要用到那些,對每個樣本點都有一個聚類中心劃分的聚類演算法,比如kmeans);第三類的假設是,正常樣本屬於稠密而且較大的聚類中心,而異常樣本屬於稀疏而且較小的聚類中心。
​## 6.1 基於聚類和基於最近鄰方法的不同
基於聚類的方法,根據樣本點與聚類中心的距離判斷是否異常,而基於最近鄰的方法,根據樣本點與最近鄰的關係判斷是否異常。

7. 基於統計的異常檢測方法

基於的假設是:根據我們假設的樣本生成模型,正常樣本被模型生成的概率高,而異常樣本被模型生成的概率低。

7.1 基於模型引數的方法

基於高斯模型。
基於迴歸模型,基於單變數的ARIMA和基於多變數的ARMA。
基於混合引數分佈的模型,分為兩種,第一種針對正常樣本和異常樣本分別建模,認為他們屬於不同的分佈,第二種僅針對正常樣本,建立混合分佈模型。

7.2 非引數的方法

基於直方圖
基於核函式​​​​

8. 基於資訊理論的方法

基於的假設是:異常資料反映出了資料集中異常的資訊內容。
對於一種資訊度量L,我們需要在目標資料集D中尋找一個儘量小的子集,使得L(D)-L(D-I)儘量大,其中I就是我們排除的儘量小的子集。優點是可以非監督的執行,並且沒有對底層的資料分佈有任何假設。

9. 基於譜分析的異常檢測方法

​基於的假設是:資料可以被嵌入到一個低維的子空間中,且在這樣的空間中,正常和異常的樣本更容易區分。
常用基於PCA的方法,及其變種。

10. 處理上下文異常​​​​

常見的上下文屬性通常包括,第一,空間資訊,第二,圖相關的資訊,第三,序列資訊,第四,屬性(Profile)資訊。兩種處理思路,第一種是把上下文異常問題轉化為單點異常問題處理,第二種是對資料結構進行建模,然後用模型去處理上下文異常。

10.1 轉化為單點異常檢測問題

10.2 應用資料中的結構資訊

11. 處理集合異常

​​​
​​​