在接下來的一系列課程中,我將向大家介紹異常檢測(Anomaly detection)問題。這是機器學習算法的一個常見應用。這種算法的一個有趣之處在於它雖然主要用於非監督學習問題,但從某些角度看,它又類似於一些監督學習問題。
異常檢測問題更正式一些的定義如下:
假設我們有m個正常的樣本數據
我們要採取的方法是:給定無標籤的訓練集,對數據集x建立一個概率分佈模型
因此當我們看到一個新的引擎在我們根據訓練數據得到的
我們舉例來說明一下高斯分佈中μ和σ這兩個參數之間的關係:
μ=0,σ=1 | μ=0,σ=0.5 | μ=0,σ=2 | μ=3,σ=0.5 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
具體來說,高斯分佈中的參數估計公式如下:
還有一點,如果你在學習統計學時,可能會見到這個式子:
σ2=1m−1∑mi=1(x(i)−μ)2 ,但在機器學習領域,大家習慣使用σ2=1m∑mi=1(x(i)−μ)2 ,其實在實際情況中,具體使用1m 還是1m−1 其實區別很小,只要你有一個稍大的數據集。這兩個版本的公式在理論特性和數學特性上稍有不同,但在實際應用中,他們的區別甚小,幾乎可以忽略不計。
假如說我們有一個無標籤的訓練集,其中共有m個訓練樣本,並且這裏的訓練集裏的每一個樣本都是n維的特徵,因此你的訓練集應該是m個n維的特徵構成的樣本矩陣:
讓我們來總結一下異常檢測算法的具體步驟:
1.從樣本中選擇一些能體現出異常行爲的特徵x_i。
我們可以嘗試找出一些特徵,比如在你的系統裏,那些能看出用戶異常行爲或者欺詐行爲的特徵。
2.分別計算出每個特徵的參數
3.給定一個新的樣本x,計算出它對應的p(x):
通過判斷p(x)<ε,來判斷是否有異常發生。
給定一個用戶行爲的樣本,如何知道用戶行爲是否異常呢?我們將用戶行爲數據帶入到p(x)的計算中來,如果這個結果非常小,那麼我們就將這個行爲標註爲異常行爲。
異常分析例子
假如說我們有下面這樣的數據集:
從圖中我們可以看出,數據集有兩個特徵
其中特徵
這兩個特徵對應的分佈如下:
|
|
---|---|
![]() |
![]() |
如果繪製出p(x)的圖像,那麼這個圖像如下:
假如x_1=2,x_2=2那麼就是這個點:
在3-D表面圖上的高度就代表p(x)的值。而這個p(x)完整的寫出來就是下面的形式:
那麼有了這個表達式,我們如何鑑定新的樣本是否異常呢?
要回答這個問題,我們可以先給計算機設某個無窮小的數值ε,假如我設置ε=0.02(我會在後面講到如何選取ε的值)。
現在我們有兩個樣本,分別爲
我們用上面的式子來計算出
我們用上面的式子來計算出