異常檢測(Anomaly Detection)

Ray Lin
學以廣才
Published in
Oct 30, 2020

它是機器學習算法的一個常見應用,主要用於非監督學習問題,換個角度看,它又類似於一些監督學習問題。簡單來說,就在一群東西中,找出和大家都不一樣的東西。如何定義"一樣"與"不一樣",就是它要討論的東西。

以數學的觀點來看

  1. 給定一個訓練集 [X1, X2, X3, … ,Xn], 每一個 X ∈ R
  2. 找到一個模型函數來檢測輸入X,來告訴我們是不是屬於訓練集
  3. 模型還會進一步告訴我們,該測試數據其屬於其中一組數據的可能性P(x)
節錄李弘毅老師與吳恩達老師的教學影片

異常偵測能用二元分類法來解決嗎?

單就是否和訓練集 "相似" 來界定 "正常" 與 "異常" 的案例,是無法解決這個問題,主要原因如下:

  1. 現實未知的負樣本實在是太多了,我們沒法窮舉。
  2. 負樣本通常比正樣本難收集。

異常檢測模型分類

大致可以將其分成 :

  • labeled:訓練集中每個樣本都有標籤,可用來訓練一個分類器,這個分類器除了能夠識別已知的樣本外,還能輸出“unknown” 標籤,用來表示該輸入是“沒見過的”。也叫做“open-set recognition(開放式識別)”
  • unlabeled:另一種情況是進來的資料是沒有標籤的。
    a) clean: 資料集是“乾淨”的,所有的樣本都視為“正樣本“
    b) polluted : 現實乾淨的數據集很少,多少都參雜著”異常樣本“,往往這些數據裡可能有異常的數據且沒有標註出來。

使用分類器來做異常檢測 : 辛普森角色分類器

這個分類器會輸出兩類數據:類別(名字)、信心值;然後給定一個閾值λ,當信心度大於這個閾值,就視為“正常(屬於辛普森家族)”,低於則視為“異常(不屬於辛普森家族)”。

熵(entropy)常用來評估分類器最後的結果,第一個分類結果,霸子的信心值很高(總體熵低),可視為正常,第二個分類結果,每一類的信心值都不高且均勻(最大值不高,總體熵高),說明分類器沒見過,可視為異常。

系統設計與評估方式

系統設計包含以下流程(以辛普森家族分類器為例):

  1. Training set : 所有資料(僅有正樣本)已標記好各種類別,並用於模型訓練,可輸出各類別信心分數。
  2. Dev set : 包含一定比例的正樣本與副樣本的資料,用來調整超參數或避免overfitting,在異常偵測可用來計算系統效能並找出閥值。
  3. Testing set : 模型沒看過的資料,模擬現實世界應用。

異常檢測的數據集的標籤分佈是很不均勻的,也就是說我們很大概率能夠找到“正樣本”;這種情況下,單看準確率(Accuracy)通常會很高,但這樣顯然是不對的。

Cost Table可用來評估不平衡數據所訓練的模型,它取決於你對任務的理解。例如在醫療上對於癌細胞的異常檢測,有寧願錯殺不放過的特性,在設計評估方法時就要把 "異常數據沒檢測出的成本" 調更高。除了積分成本制,還有AUC、Macro-F1等方法。

Without Labels(無監督學習)的異常偵測

  1. 假設我們的數據是從一個分布 F(x)取樣出來的。
  2. 我們需要找到一組參數θ,使得在這組參數下,F(x)產生出這組數據的可能性最大,也就是計算這組數據的最大似然(Maximum Likelihood)。
  3. 若使用高斯分布來找最大似然計算公式L,窮舉所有找到的L(μ,Σ),看看那一組(μ,Σ)可以使得L最大。
  4. 找到這組參數(μ,Σ)後,就可以來做異常檢測(類似有監督的異常檢測)。

其他的方式 : Auto-Encoder,one-class SVM,isolated Forest

  • Auto-Encoder : 同時訓練Encoder 和Decoder,就是把輸入進行Encoder解碼成一個向量後,再通過Decoder解回來。如果是異常的圖片,還原度就會很低,如果是正常的圖片,則還原度會高。
  • One-Class SVM 是一個 unsupervised 的算法,訓練數據只有一個分類。透過這些正常樣本的特徵去學習一個決策邊界,再透過這個邊界去判別新的資料點是否與訓練數據類似,超出邊界即視為異常。算法中使用到 RBF ( Gaussian Radial Basis Function ) 的 Kernel 函數,將特徵投影到高維空間,得到與原點距離最大的超平面。
  • Isolation Forest 是一個基於Ensemble的快速異常檢測方法,具有線性時間複雜度和高精準度,屬於unsupervised的方法。做法是用一個隨機超平面來切割(split)數據空間(data space),切一次可生成兩個子空間。之後反覆循環,直到每子空間裡面只有一個數據點為止。直觀上那些密度很高的叢集會被切很多次才會停止切割,但是那些密度很低的點很容易很早的就停到一個子空間了。

異常檢測與監督學習對比

https://zhuanlan.zhihu.com/p/36260312

Reference

--

--

Ray Lin
學以廣才

善歌者,使人繼其聲;善教者,使人繼其志。其言也,約而達,微而臧,罕譬而喻,可謂繼志矣