異常檢測(斯坦福machine learning week 9)

在接下來的一系列課程中,我將向大家介紹異常檢測(Anomaly detection)問題。這是機器學習算法的一個常見應用。這種算法的一個有趣之處在於它雖然主要用於非監督學習問題,但從某些角度看,它又類似於一些監督學習問題。

1 定義

異常檢測問題更正式一些的定義如下:

假設我們有m個正常的樣本數據 x(1)x(2)x(m) ,我們需要一個算法來告訴我們一個新的樣本數據 xtest 是否異常。

我們要採取的方法是:給定無標籤的訓練集,對數據集x建立一個概率分佈模型 p(x) 。當我們建立了 x 的概率模型之後,我們就會說,對於新的飛機引擎 xtest ,如果概率p低於閾值ε:

p(xtest)<ε

那麼就將其標記爲異常。

因此當我們看到一個新的引擎在我們根據訓練數據得到的 p(xtest) kai模型中概率非常低時,我們就將其標記爲異常;反之如果 p(xtest) 大於給定的閾值 ε ,我們就認爲它是正常的。

2 高斯分佈中,μ和σ的關係

我們舉例來說明一下高斯分佈中μ和σ這兩個參數之間的關係:

μ=0,σ=1 μ=0,σ=0.5 μ=0,σ=2 μ=3,σ=0.5
圖片描述 圖片描述 圖片描述 圖片描述

具體來說,高斯分佈中的參數估計公式如下:

μ=1mi=1mx(i)

σ2=1mi=1m(x(i)μ)2

還有一點,如果你在學習統計學時,可能會見到這個式子: σ2=1m1mi=1(x(i)μ)2 ,但在機器學習領域,大家習慣使用 σ2=1mmi=1(x(i)μ)2 ,其實在實際情況中,具體使用 1m 還是 1m1 其實區別很小,只要你有一個稍大的數據集。這兩個版本的公式在理論特性和數學特性上稍有不同,但在實際應用中,他們的區別甚小,幾乎可以忽略不計。

3 異常檢測的具體算法

假如說我們有一個無標籤的訓練集,其中共有m個訓練樣本,並且這裏的訓練集裏的每一個樣本都是n維的特徵,因此你的訓練集應該是m個n維的特徵構成的樣本矩陣:

x(1),,x(m)xRn

對於我們的異常檢測算法,我們要從數據中建立一個p(x)概率模型。由於x是一個向量,因此:

p(x)=p(x1)p(x2)p(x3)p(xn)

我們假定特徵x_1服從高斯正態分佈:

x1N(μ1,σ21)

根據上節學到的知識,你可以得出對應的μ_1和σ_1:

μ1=1mi=1mx(i)1

σ21=1mi=1m(x(i)1μ1)2

這樣p(x_1)就可以寫成這樣一個高斯分佈:

p(x1)=p(x1;μ1,σ21)

同樣地,我假設x_2也服從高斯分佈,可以得出:

p(x2)=p(x2;μ2,σ22)

與此類似x_3服從另外一個高斯分佈:

p(x3)=p(x3;μ3,σ23)

直到x_n:

p(xn)=p(xn;μn,σ2n)

因此可以得出:

p(x)=p(x1;μ1,σ21)p(x2;μ2,σ22)p(x3;μ3,σ23)p(xn;μn,σ2n)=Πnj=1p(xj;μj,σ2j)

其中Π(讀作pai,是π的大寫形式)類似∑符號,只不過這裏將連加換成了連乘。順便要說的是,估計p(x)的分佈問題,通常被稱爲密度估計問題。

4 異常檢測算法步驟總結

讓我們來總結一下異常檢測算法的具體步驟:

  • 1.從樣本中選擇一些能體現出異常行爲的特徵x_i。
    我們可以嘗試找出一些特徵,比如在你的系統裏,那些能看出用戶異常行爲或者欺詐行爲的特徵。

  • 2.分別計算出每個特徵的參數 μ1,,μn,σ21,,σ2n

    μ=μ1μ2μn=1mi=1mx(i)

    σ2=σ21σ22σ2n=1mi=1m(x(i)μ)2

    其中:

μj=1mi=1mx(i)j

σ2j=1mi=1m(x(i)jμj)2

m 個無標籤數據分別計算出他們每個特徵的期望 μ 和方差 σ2 。注意,這裏μ和σ都是m維度的向量,而 μj σj 都是其中對應的第j個元素。

3.給定一個新的樣本x,計算出它對應的p(x):
p(x)=Πnj=1p(xj;μj,σ2j)=Πnj=112πσjexp((xjμj)22σ2j)
通過判斷p(x)<ε,來判斷是否有異常發生。

給定一個用戶行爲的樣本,如何知道用戶行爲是否異常呢?我們將用戶行爲數據帶入到p(x)的計算中來,如果這個結果非常小,那麼我們就將這個行爲標註爲異常行爲。

異常分析例子

假如說我們有下面這樣的數據集:
圖片描述
從圖中我們可以看出,數據集有兩個特徵 x1x2

其中特徵 x1 對應的是水平方向的數據,它的均值是5,標準差是2;x_2對應的是豎直方向上的數據,它的均值是3,標準差是1:

μ1=5,σ1=2
μ2=3,σ2=1
這兩個特徵對應的分佈如下:

p(x1;μ1,σ21) p(x2;μ2,σ22)
圖片描述 圖片描述

如果繪製出p(x)的圖像,那麼這個圖像如下:
圖片描述

假如x_1=2,x_2=2那麼就是這個點:
在3-D表面圖上的高度就代表p(x)的值。而這個p(x)完整的寫出來就是下面的形式:

p(x)=p(x1;μ1,σ21)p(x2;μ2,σ22)

那麼有了這個表達式,我們如何鑑定新的樣本是否異常呢?

要回答這個問題,我們可以先給計算機設某個無窮小的數值ε,假如我設置ε=0.02(我會在後面講到如何選取ε的值)。

現在我們有兩個樣本,分別爲 x(1)testx(2)test
圖片描述

我們用上面的式子來計算出 p(x(1)test) ,可以發現這是一個比較大的數,具體大小是大於等於 ε 的,所以對於 x
圖片描述

我們用上面的式子來計算出 p(x(1)test) ,可以發現這是一個比較大的數,具體大小是大於等於 ε 的,所以對於 x(1)testp(x(2)test) ,我們發現這是一個很小的數,具體值是小於 ε 的,所以我們說 x(2)tep(x

相關文章
相關標籤/搜索