1. 程式人生 > >十五、異常檢測

十五、異常檢測

1 密度估計

給定資料集 x(1),x(2),..,x(m),我們假使資料集是正常的,我們希望知道新的資料 x(test)是不是異常
的,就是對資料x(test)進行異常檢測。

圖中紅色部分為給定的資料集,綠色部分為測試資料,其中藍色圈內表示測試資料檢測為正常的,且越靠近圈內,資料正常的概率越大。圈外的資料則檢測為異常資料。

根據模型,由測試資料的位置得到測試資料正常的概率p(x),這就是密度估計,公式表示如下:

當p(x)小於ε時,資料異常。

異常檢測主要用於識別欺騙。如:測伺服器測試使用者是否為真實使用者而不是虛擬使用者,根據記憶體、磁碟、CPU、網路的情況判斷計算機是否出錯了。

2 高斯分佈

如果x符合高斯分佈(正態分佈):

則其概率密度函式為:

其中可以利用已有資料求出μ和σ²:

不同μ和σ²對應的影象:

μ決定對稱軸位置,σ²小圖形細長,σ²大圖形矮胖。

3 應用高斯分佈進行異常檢測

對於給定資料集,對每一個特徵求出μ和σ²,然後對於新的訓練例項,根據模型計算p(x):

對每一個特徵求得對應的p(xi),再把p(xi)相乘。

當p(x)<ε,資料判定為異常資料。

4 設計和評價一個異常檢測系統

例如:我們有 10000 臺正常引擎的資料,有 20 臺異常引擎的資料。 我們這樣分配資料:

6000 臺正常引擎的資料作為訓練集

2000 臺正常引擎和 10 臺異常引擎的資料作為交叉檢驗集

2000 臺正常引擎和 10 臺異常引擎的資料作為測試集

具體的評價方法如下:

  1. 根據測試集資料,我們估計特徵的平均值和方差並構建p(x)函式

  2. 對交叉檢驗集,我們嘗試使用不同的ε值作為閥值,並預測資料是否異常,根據 F1 值
    或者查準率與查全率的比例來選擇 ε

  3. 選出ε後,針對測試集進行預測,計算異常檢驗系統的F1值,或者查準率與查全率
    之比.

5 異常檢測對比監督學習

6 選擇特徵

異常檢測假設特徵符合高斯分佈,如果資料的分佈不是高斯分佈,異常檢測演算法也能夠
工作,但是最好還是將資料轉換成高斯分佈,例如使用對數函式:x=log(x+c)其中c為非負常數,或者x=x^c,c∈(0,1)

異常檢測可能出現的問題就是,一些異常的資料其p(x)值非常高,誤認為正常資料,這是可以根據被演算法錯誤估計的資料,觀察並新增一些特徵,使新增特徵後能夠幫助我們更好的進行異常檢測。

上圖,一維的特徵錯誤的判斷綠色被檢測點為正常,新增特徵後,被檢測為錯誤特徵。

7 多元高斯分佈

若兩個特徵相關,此時用開始的不同特徵檢測出的p(xi)直接相乘不能很好的檢測資料,因為該模型嘗試去同時抓住兩個特徵的偏差,創造了一個比較大的判定邊界。

上圖粉色的圈為傳統的判定邊界,此時,左上角的綠色資料被判定為正常資料,因為其對應每一維的特徵,都在閾值以內,但是其資料與正常資料的差別較大。

這個時候可以用多元高斯分佈,多元高斯分佈考慮了特徵間的相關性,構建了特徵的協方差矩陣。

多元高斯分佈:

其中:

其中不同的μ和Σ對應的多元高斯分佈圖形:

圖一:普通的高斯分佈

圖二:特徵1擁有較小的偏差,保持特徵2的偏差

圖三:特徵2具有較大的偏差,保持特徵1的偏差

圖四:保持原有特徵,增加兩個特徵的正相關性

圖五:保持原有特徵,增加兩個特徵的負相關性

多元高斯分佈與傳統高斯分佈比較: