1. 異常檢測簡介
異常檢測,它的任務是發現與大部分其他對象不同的對象,我們稱為異常對象。異常檢測算法已經廣泛應用於電信、互聯網和信用卡的詐騙檢測、貸款審批、電子商務、網絡入侵和天氣預報等領域。這些異常對象的主要成因有:來源於不同的模式、自然變異、數據測量以及隨機誤差等。而常見的異常檢測算法都是針對獨立的數據點進行異常檢測,此時異常檢測又稱為離群點檢測。而在序列數據的異常檢測過程中,我們既可以直接使用對序列進行異常檢測的算法,也可以先對序列數據進行特征提取然后轉化為傳統的離群點檢測。
2. 基本的離群點檢測算法
離群點檢測方法 | 方法描述 | 方法特點 |
基於統計 | 大部分的基於統計的離群點檢測方法是構建一個概率分布模型,並計算對象符合該模型的概率,把具有低概率的對象視為離群點 | 基於統計模型的離群點檢測方法的前提是必須知道數據集服從什么分布;而對於高維的數據,可能每一維度服從的分布都不太一致,所以通常對高維數據來講通常效果較差。 |
基於鄰近度 | 通常可以在數據對象之間定義鄰近性度量,把遠離大部分點的對象視為離群點。 | 算法假定離群點是離散的,低維數據我們可以作圖觀察,而高維數據我們無法觀察,所以難以確定有效的參數和全局閾值,效果較差。 |
基於密度 | 考慮到數據集可能存在不同密度區域這一事實,從基於密度的觀點分析,離群點是在低密度區域中的對象。 | 算法假定離群點存在密度較低的區域,具有全局的閾值,對參數選擇敏感。 |
基於聚類 | 一種利用聚類檢測離群點的方法是直接丟棄遠離其他簇的小簇;另一種是對數據點屬於簇的程度進行評價,去除得分較低的點。 | 聚類算法產生的簇的質量對該算法產生的離群點的質量影響非常大,對數據的可分類性要求較高 |
3. 序列數據的異常檢測算法
異常類別名稱 |
異常描述 |
異常圖形 |
語境異常點 |
此種異常為序列數據中的點異常,語境異常點一定是處在序列數據的上下文中的異常點,如右圖(橫坐標代表時間,縱坐標代表溫度),t1處和t2處的取值是一樣的,但是t2屬於異常點,而t1是正常的溫度 |
|
異常子序列 |
如右圖所示,異常的子序列就是紅色部分,顧名思義,就是子序列的方式與整體序列的模式大不相同。 |
|
異常序列-對比於基礎序列 |
此種是給出一個基礎的序列,判斷測試序列與基礎序列相比是否異常。如右圖左部分是基礎序列,右部分是測試序列,紅色序列模式大不相同所以是異常序列。 |
|
3.2 序列異常檢測的挑戰
1)異常子序列的長度難以有效確定
2)異常未在訓練集中出現
3)序列經常存在比較大的噪聲,會產生像離群點檢測一樣的淹沒效應(異常點和正常點的距離很小,甚至難以分別)以及掩蔽效應(異常點增多,導致其密度增大)
3.3 序列異常檢測的預處理-數據轉換常見方式
1)聚合數據;常見的操作有 Piecewise Aggregate Approximation(PAA)以及其變體 Adaptive piecewise constant approximation(APCA)
2)離散化;與我們常見的數據離散化方式一致
3)基於信號處理的;常見的如傅里葉變換、小波變換、Haar變換等
3.4 序列異常檢測常見的方式
序列異常檢測方法 | 方法描述 | 方法特點 |
基於窗口 | 此方法將序列分為具體的固定長度的窗口來進行檢測 | 窗口的大小需要謹慎的選擇,一定要能覆蓋到異常序列,不然檢測效果會比較差。 |
基於鄰近度 | 此方法使用鄰近度來衡量序列數據之間的距離,方法假設異常數據在此度量下是遠離正常數據的 | 此方法的預測效果極大的依靠我們設計的鄰近度度量,PS:針對序列數據來講,DTW是一種強大的衡量序列數據距離的方法。 |
基於預測 | 此種方法通過預測數據,讓后將預測數據與真實數據對比偏差較大的市委異常 | 基於預測的方法,比較適用於異常點的檢測,如果針對一個子序列,預測的時間過長,難以達到有效精度會影響檢測的效果。 |
4. 異常檢測中的大殺器-iForest
4.1 iForest 異常檢測的原理
iForest(孤立森林)的原理和常見的異常檢測算法一樣直觀上非常容易理解,iForest像隨機森林一樣也是由大量的樹構成,簡稱iTree。iTree的構建過程是每次隨機選一個特征,然后隨機在特征的最大值和最小值之間選擇一個分界值,然后對數據進行二叉划分,不斷的遞歸下去,直到不能夠進行划分為止,就構造了一顆二叉樹-iTree。而進行離群點判斷時,我們會發現離群點在iTree樹的深度更淺。如上圖所示,正常點xi需要多次划分才能定位,而異常點比較少的划分就可以定位。
如上圖所示,隨着iTree樹的個數的增加,正常點和離群點的樹的平均深度都快速收斂,而且正常點的樹的深度明顯更大。
4.2 iForest 異常檢測的優勢
1)高效,尤其在線的檢測只需要遍歷整個iForest既可得到結果。
2)自適應,與傳統基於密度或者距離的異常檢測算法不同,它們的閾值全部是全局的閾值,所以在異常點局部密度較大時會失效,而iTree在每次對二叉樹進行划分時,都是在局部的最大值和最小值之間隨機選值,也就是說每次划分的取值區間是根據局部自適應的,這讓iForest變得魯棒、強大。
參考文獻:
《python 數據分析與挖掘實戰》張良均 等; 書籍
《外賣訂單量預測異常報警模型實踐》東傑; 美團技術團隊博客 鏈接:https://tech.meituan.com/order-holtwinter.html
《Introduction to Anomaly Detection》
《Outlier detection with several methods》;sklearn doc 鏈接:http://scikit-learn.org/stable/auto_examples/covariance/plot_outlier_detection.html#sphx-glr-auto-examples-covariance-plot-outlier-detection-py
《Anomaly Detection of Time Series》Deepthi Cheboli;碩士論文
《Isolation-based Anomaly Detection》周志華 等;期刊論文