1、統計學方法
偏離訓練集統計分布的任何東西都被認為是異常。
最簡單的統計學方法就是控制圖。計算出訓練集每個特性的平均和標准偏差,然后圍繞平均值定義出閾值:k*標准偏差(k為通常在1.5到3.0之間的任意系數,取決於既定的算法保守程度)。在部署中正向或負向超出閾值的點就是異常事件的可疑備選。
這種方法很好理解,也便於實現,而且執行很快,適用於靜態及時間序列數據。然而,要檢測更微妙的異常的話,這種方法或許太過簡單了。
2、聚類
其他方法往往屬於聚類方法。因為訓練集中缺失異常類,聚類算法聽起來很適合異常檢測任務。
算法在訓練集上創建一些群集。部署中,當前數據點和群集間的距離被計算出來。如果距離高於給定閾值,該數據點即為異常事件的可疑備選。根據距離衡量方法和聚合規則,人們設計出了不同的聚合算法,創建了各種群集。
但是,該方法不適合時間序列數據,因為固定的群集無法捕獲時間進程。
3、受監督的機器學習
驚不驚訝,受監督的機器學習算法竟然也能應用到異常檢測上。而且,因為受監督的機器學習技術既能應用於靜態分類,也能應用到時間序列預測問題,該方法能覆蓋所有數據情況。不過,由於受監督的機器學習技術需要所有牽涉類型的樣本集,我們還需做些調整。
在異常檢測問題上,受監督的機器學習模型只能在“正常”數據上訓練,比如,在描述系統“正常”運行情況的數據上訓練。只有在分類/預測完成后,才能評估出輸入數據是不是異常。依賴受監督機器學習技術的異常檢測方法主要有兩種。
其一是神經自聯器(或自編碼器)。該自聯器經過訓練,重生成輸入模式到輸出層。只要輸入模式類似訓練集中的樣本——也就是 “正常”,該模式重生成就會運行良好。而當新的不一樣的東西出現在輸入層,系統就會卡殼。這種情況下,該網絡將無法重生成足夠的輸入向量到輸出層。如果計算網絡的輸入和輸出差距,異常事件的差值必然高於 “正常” 事件的差值。此處,定義該距離度量的閾值就應當可以找出異常點備選。該方法對靜態數據點應用良好,但不適用於時間序列數據。
其二是時間序列預測算法。算法模型經過訓練,基於“正常”值訓練集上的前n個樣本歷史,預測下一個樣本的值。在部署中,如果過往歷史來自於在“正常”情況下工作的系統,下一個樣本值的預測將會相對准確,近似於真實樣本值。如果過往歷史樣本來自於不再在“正常”情況下運行的系統,該預測值就會偏離實際值。這種情況下,計量出預測樣本值與真實樣本值之間的差距,就能圈定異常事件備選。
轉自:安全牛
