異常檢測(Anomaly detection)方法小結

原文鏈接:https://www.jianshu.com/p/c5e4e7dce972

異常檢測技術被廣泛應用到各個應用領域之中,包括疾病檢測、金融欺詐檢測、網絡入侵檢測等。在智能運維領域,異常檢測處理的數據類型主要是時間序列數據(KPI序列)和文本數據(日誌),處理方法主要有基於規則處理、基於統計學處理和基於機器學習處理,在機器學習處理方法中,根據數據的標籤情況,又分爲有監督、半監督和無監督三種情況。
  異常數據主要包括三類:異常點、背景異常、羣體異常。異常點是最常見的一種。背景異常是指,在特定的背景下是異常數據,在其他背景下不是異常數據。羣體異常是指,某個羣體內的單個數據不像是異常的,但這個羣體在整個數據集中是異常的。
  文章首先按照基於規則、基於統計、基於機器學習三個方向對異常檢測算法做了總結,然後又分高維數據、時間序列數據和文本數據三部分做了介紹,最後總結了下常用算法的優缺點以及相應的參考文獻。重點部分和重點論文已用黑體加粗。
一、基於規則處理
  這種方法第一步需要獲取規則,主要有兩種方法,一是設計算法自動提取,二是專家手工制定。第二步是判斷行爲是否和異常規則相似。
  優點:可以精準找出符合規則的異常
  缺點:受限於專家知識,規則庫可能不完善;
    規則庫需要經常更新,否則無法發現新的異常種類;
    在將行爲和規則庫對比時,會花費一些時間(取決於規則庫的大小)。
二、基於統計學處理
  需要假設數據服從某種分佈,然後利用數據去進行參數估計。
  方法主要三種,簡單的比如有3σ準則、箱型圖、Grubbs檢驗等。複雜點的比如有時間序列建模(移動平均、指數平滑、ARMA、ARIMA)。還有混合方法,假設正常數據和異常數據來自不同的高斯分佈,然後用Grubbs檢驗;或者僅對正常數據進行混合高斯建模或者泊松建模等等。
  優點:適合低維數據、魯棒性較好
  缺點:對假設依賴比較嚴重
三、基於機器學習處理
  無監督:無標註,假設數據中正常數據比異常數據多很多。常用方法分爲基於統計分佈、基於距離、基於密度、基於距離、基於聚類和基於樹的五類方法。
  半監督:被標註的全是正常數據。常用方法包括one-class SVM、AutoEncoder、GMM等。
  有監督:數據標註是個問題,並且處理時需要注意類別不均衡現象,不適用於檢測新類別。常用方法包括LR、SVM、RF、NN等。
3.1 無監督方法
  在實際應用場景中,數據大多是沒有標籤的,因此無監督方法是實際應用中使用最廣泛的方法。
3.1.1 基於統計分佈
HBOS:基於直方圖的異常檢測
  過程類似於樸素貝葉斯模型。假設特徵相互獨立,對每個特徵作直方圖,對於某個樣例,連乘其特徵在各個直方圖中的頻率得到該樣例的生成概率。
  優點:
    速度快,適合大數據情形
  缺點:
    特徵相互獨立的條件比較強,現實中可能不符合
    不適合異常數據過多的情形
3.1.2 基於距離(KNN)
  這種方法認爲異常點距離正常點比較遠,因此可以對於每一個數據點,計算它的K-近鄰距離(或平均距離),並將距離與閾值進行比較。若大於閾值,則認爲是異常點。或者是將全部樣本的K-近鄰距離排序,取前n個最大的作爲異常點。計算距離時一般使用歐式距離,也可以使用角度距離。
基於距離的異常檢測優缺點
  優點:
    不需要假設數據的分佈
  缺點:
    不適合高維數據
    只能找出異常點,無法找出異常簇
    你每一次計算近鄰距離都需要遍歷整個數據集,不適合大數據及在線應用
    有人用hyper-grid技術提速將KNN應用到在線情況,但是還不是足夠快
    參數K和閾值需要人工調參
    當正常點較少、異常點較多時,該方法不好使
    當使用歐式距離時,即默認是假設數據是球狀分佈,因此在邊界處不容易識別異常
    僅可以找出全局異常點,無法找到局部異常點
3.1.3 基於密度(KNN)
  基於距離的方法中,閾值是一個固定值,屬於全局性方法。但是有的數據集數據分佈不均勻,有的地方比較稠密,有的地方比較稀疏,這就可能導致閾值難以確定(稠密的地方和稀疏的地方最好不用同一閾值)。我們需要根據樣本點的局部密度信息去判斷異常情況。基於密度的方法主要有LOF、COF、ODIN、MDEF、INFLO、LoOP、LOCI、aLOCI等。
LOF
  首先對於每一個數據點,找出它的K個近鄰,然後計算LOF得分,得分越高越可能是異常點。
  LOF是一個比值,分子是K個近鄰的平均局部可達密度,分母是該數據點的局部可達密度。可達密度是一個比值,分子是K-近鄰的個數,分母是K-近鄰可達距離之和。A到B的可達距離定義:A和B的真實距離與B的k-近鄰距離的最大值。
COF
  LOF中計算距離是用的歐式距離,也是默認了數據是球狀分佈,而COF的局部密度是根據最短路徑方法求出的,也叫做鏈式距離。
INFLO
  LOF容易將邊界處的點判斷爲異常,INFLO在計算密度時,利用k近鄰點和反向近鄰集合,改善了LOF的這個缺點。
LoOP
  將LOF中計算密度的公式加了平方根,並假設近鄰距離的分佈符合正態分佈。
  其他算法具體細節還沒有看。
基於密度的異常檢測優缺點
優點:
  可以找出分佈不均勻的數據中局部異常的數據
  可以給出數據的異常得分,得分越高越可能異常,不是二分類
缺點:
  不適合高維數據
  由於需要遍歷數據計算距離,因此計算複雜度也很高,不適合在線應用
  只能找到異常點,無法找出異常簇
  需要人工調參
3.1.4 基於聚類
  此類方法主要有三種假設,三種假設下有各自的方法。計算複雜度很大程度上取決於聚類算法的計算複雜度。
  假設一:不屬於任何聚類的點是異常點,主要方法包括DBSCAN、SNN clustering、FindOut algorithm、WaveCluster Algorithm。
  缺點:不能發現異常簇
  假設二:距離最近的聚類結果較遠的點是異常點,主要方法包括K-Means、Self-Organizing Maps(SOM)、GMM。
  首先進行聚類,然後計算樣例與其所屬聚類中心的距離,計算其所屬聚類的類內平均距離,用兩者的比值衡量異常程度。
  缺點:不能發現異常簇
  假設三:稀疏聚類和較小的聚類裏的點都是異常點,主要方法包括CBLOF、LDCOF、CMGOS等。
  首先進行聚類,然後啓發式地將聚類簇分成大簇和小簇。如果某一樣例屬於大簇,則利用該樣例和其所屬大簇計算異常得分,如果某一樣例屬於小簇,則利用該樣例和距離其最近的大簇計算異常得分。三種算法的區別在於計算異常得分的方式不同,具體細節還未看。
  優點:考慮到了數據全局分佈和局部分佈的差異,可以發現異常簇
基於聚類的異常檢測優缺點:
  優點:
    測試階段會很快,以內只需要和有限個簇比較
    有些聚類算法(k-means)可以在線應用(準實時)
  缺點:
    異常檢測效果很大程度上依賴於聚類效果,但是聚類算法主要目的是聚類,並不是爲了異常檢測
    大數據聚類計算開銷比較大,可能是個瓶頸
3.1.5 基於樹
  此類方法的思想是通過劃分子空間尋找異常點,不同的方法區別主要在三個地方:特徵的選取、分割點的選取和分類空間打標籤的方案。此類方法不受球形鄰近的限制,可以劃分任意形狀的異常點。此類方法主要包括iForest、SCiForest、RRCF
iForest
  此方法適用於異常點較少的情況,採用構造多個決策樹的方式進行異常檢測。對數據集進行有放回抽樣,對每一次抽樣出來的樣本構建二叉樹,構建二叉樹時,隨機選取一個特徵,然後在特徵上隨機選一個分割點,將該特徵小於分割點的數據放在二叉樹左邊,反之放在右邊,直至二叉樹達到一定深度或者葉子節點只包含一個數據點爲止。進行異常檢測時,計算該數據點在多個二叉樹上的平均深度,深度越淺越可能是異常值。
  iForest只適合檢測全局異常點,不適合檢測局部異常點,因此有人做了改進, 論文爲Improving iForest with Relative Mass.
SCiForest
  傳統iForest方法在選擇特徵是隨機選取的,SCiForest在選擇特徵時利用了方差;傳統iForest選擇分割點後形成的分割超平面是平行於座標軸的,SCiForest可以生成任意角度的分割超平面。
RRCF
  可以動態增刪樹種的節點,適用於流數據異常檢測
基於樹的異常檢測優缺點:
  優點:
    每棵樹都是獨立構建,適合分佈式計算
    可以分割任意形狀的數據集,不受限於球形近鄰
    測試時速度很快,適合在線處理
  缺點:
    只適用於異常點較少的情況
    不適合高維數據,因爲高維數據會有很多無關特徵
3.2 半監督方法
  此類方法適用於標註的數據全都是正常數據,常用方法有one-class SVM、SVDD、AutoEncoder、GMM、Naïve Bayes等。此類方法與無監督方法有些重合,因爲無監督方法的基本假設就是數據集中正常數據遠遠多於異常數據。
One-class SVM
  利用核函數將數據映射到高維空間,尋找超平面使得數據和座標原點間隔最大
SVDD
  利用核函數將數據映射到高維空間,尋找儘可能小的超球體包裹住正常數據。
AutoEncoder
  對正常數據進行訓練Encoder和Decoder,進行異常檢測時,如果Decoder出來的向量與原始向量差別很大,就認爲是異常數據。
GMM
  對正常數據進行高斯混合模型建模,最大似然估計參數。進行異常檢測時,將其特徵帶入模型,可得出它屬於正常數據的概率。
Naïve Bayes
  過程同高斯混合模型。
3.3 有監督方法
  常規分類器都可以使用,需要注意樣本不均衡問題。通常情況下,異常樣本會遠遠小於正常樣本,因此需要處理樣本不均衡問題,比如上採樣、下采樣、調整閾值等等。評估時需要靠precision和recall,而不是accuracy。
四、數據類型
4.1. 高維數據
  在高維數據中,傳統的異常數據的定義不能再使用,利用上述方法在高維空間中直接尋找異常點效果也不好。常用的方法是使用降維技術,在降維後的子空間裏尋找異常點。常用的降維技術有PCA、kernal PCA、AutoEncoder、深度信念網絡等,其中深度信念網絡效果是相對比較好的。
4.2. 時間序列數據
  這種情況往往屬於有監督類型。處理時間序列數據時,常常是利用一些統計方法構造特徵,然後利用分類器進行分類。構造特徵的方法包括移動平均、指數平滑等時間序列相關知識。
4.3. 文本數據
  基於日誌的異常檢測通常包括三類:基於規則、有監督和無監督。
  基於規則的方法需要人工制定規則,優缺點前面已說到。
  有監督方法是常規的二分類任務,同樣有樣本不均衡問題。
  無監督方法中,傳統是首先解析出日誌模板,然後劃定時間窗,在每個時間窗內將多條日誌編碼成向量,然後用PCA等無監督方式進行異常檢測。缺點是隻能判斷某時間窗內是否有數據異常,無法判斷單個日誌是否異常。
  一篇論文(DeepLog)提供了另外一個思路,屬於無監督類型。首先對日誌進行解析,得到日誌模板和日誌變量,分別使用LSTM判斷流數據中日誌模板是否正常、日誌變量是否正常。其中,對於判斷模板是否正常,做法是將每一個模板當成一個單詞,基於正常數據使用LSTM擬合模板數據流。對於判斷變量是否正常,做法是將數據流按模板分開,生成每一個模板對應的數據流,然後每一個模板數據流裏的變量流進行LSTM擬合。在異常檢測時,判斷待檢測值是否出現在LSTM的輸出概率最高前K個值,如果出現就說明正常。
五、參考文獻

方法
論文

**HBOS
**M. Goldstein, A. Dengel. Histogram-based Outlier Score (HBOS): A fast Unsupervised Anomaly Detection Algorithm[C]. In: Wölfl S, editor. KI-2012: Poster and Demo Track. Online;2012. p. 59–63

GMM
X. Yang, L. J. Latecki, D. Pokrajac. Outlier Detection with Globally Optimal Exemplar-Based GMM[C]. Siam International Conference on Data Mining, SDM 2009, April 30 - May 2, 2009, Sparks, Nevada, Usa. DBLP, 2009:145-154

KNN
S. Ramaswamy, R. Rastogi, K. Shim. Efficient Algorithms for Mining Outliers from Large Data Sets [C]. ACM SIGMOD International Conference on Management of Data. ACM, 2000:427-438、F. Angiulli, C. Pizzuti. Fast Outlier Detection in High Dimensional Spaces[C]. European Conference on Principles of Data Mining and Knowledge Discovery. Springer-Verlag, 2002:15-26

KNN-weight
F. Angiulli, C. Pizzuti. Fast Outlier Detection in High Dimensional Spaces[C]. European Conference on Principles of Data Mining and Knowledge Discovery. Springer-Verlag, 2002:15-26

**LOF
M. M. Breunig. LOF: identifying density-based local outliers[J]. 2000, 29(2):93-104

COF
J. Tang, Z. Chen, A. Fu, D. Cheung. Enhancing Effectiveness of Outlier Detections for Low Density Patterns[C]. Pacific-Asia Conference on Knowledge Discovery and Data Mining. Springer, Berlin, Heidelberg, 2002:535-548

INFLO
W. Jin, A. K. H. Tung, J. Han, et al. Ranking Outliers Using Symmetric Neighborhood Relationship[J]. Lecture Notes in Computer Science, 2006, 3918:577-593.

**LoOP
H. P. Kriegel, E. Schubert, A. Zimek. LoOP:local outlier probabilities[C]. ACM, 2009:1649-1652

CBLOF
Z. He, X. Xu, S. Deng. Discovering cluster-based local outliers[J]. Pattern Recognition Letters, 2003, 24(9–10):1641-1650

LFCOF
M Amer, M. Goldstein. Nearest-Neighbor and Clustering based Anomaly Detection Algorithms for RapidMiner[C]. Rapidminer Community Meeting and Conferernce. 2012

CMGOS
M. Goldstein. Anomaly Detection in Large Datasets[M]. 2014

**DBSCAN+GMM
Bigdeli E, Mohammadi M, Raahemi B, et al. A fast and noise resilient cluster-based anomaly detection[J]. Pattern Analysis & Applications, 2017, 20(1):1-17.

**iForest
F. T. Liu, M. T. Kai, Z. H. Zhou. Isolation-Based Anomaly Detection[M]. ACM, 2012, 6 (1) :1-39

**iForest局部異常
Aryal S, Kai M T, Wells J R, et al. Improving iForest with Relative Mass[C]// Pacific-Asia Conference on Knowledge Discovery and Data Mining. Springer, Cham, 2014:510-521.

**SCiForest
F. T. Liu, M. T. Kai, Z. H. Zhou. Isolation-Based Anomaly Detection[M]. ACM, 2012, 6 (1) :1-39

RRCF
G. Roy, G. Roy, G. Roy, et al. Robust random cut forest based anomaly detection on streams[C]. International Conference on International Conference on Machine Learning. JMLR.org, 2016:2712-2721

AutoEncoder
S. S. Khan, B. Taati. Detecting unseen falls from wearable devices using channel-wise ensemble of autoencoders[J]. Expert Systems with Applications. 2017, 87:280-290

One-class SVM
W. Khreich, B. Khosravifar, A. Hamou-Lhadj, et al. An anomaly detection system based on variable N-gram features and one-class SVM[J]. Information and Software Technology, 2017, 91:186-197

SVDD
D.M.J Tax, R.P.W. Duin. Support vector domain description. Pattern Recognition Letters[J]. 1999, vol.20:1191-1199

SVM
Wang G P, Yang J X, Li R. Imbalanced SVM‐Based Anomaly Detection Algorithm forImbalanced Training Datasets[J]. Etri Journal, 2017, 39(5):621-631.

**隨機森林
Liu D, Zhao Y, Xu H, et al. Opprentice:Towards Practical and Automatic Anomaly Detection Through Machine Learning[C]// Internet Measurement Conference. ACM, 2015:211-224.

PCA
Xu W, Huang L, Fox A, et al. Detecting large-scale system problems by mining console logs[C]// ACM Sigops, Symposium on Operating Systems Principles. ACM, 2009:117-132.

系統日誌
He S, Zhu J, He P, et al. Experience Report: System Log Analysis for Anomaly Detection[C]// IEEE, International Symposium on Software Reliability Engineering. IEEE, 2016:207-218.

**LSTM無監督
Du M, Li F, Zheng G, et al. DeepLog: Anomaly Detection and Diagnosis from System Logs through Deep Learning[C]// ACM Sigsac Conference on Computer and Communications Security. ACM, 2017:1285-1298.

**深度信念網絡+one-class SVM
Erfani S M, Rajasegarar S, Karunasekera S, et al. High-dimensional and large-scale anomaly detection using a linear one-class SVM with deep learning[J]. Pattern Recognition, 2016, 58©:121-134.

**無監督異常檢測方法測評
Goldstein M, Uchida S. A Comparative Evaluation of Unsupervised Anomaly Detection Algorithms for Multivariate Data[J]. Plos One, 2016, 11(4):e0152173.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章