十五、異常檢測
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 臺異常引擎的資料作為測試集
具體的評價方法如下:
根據測試集資料,我們估計特徵的平均值和方差並構建p(x)函式
對交叉檢驗集,我們嘗試使用不同的ε值作為閥值,並預測資料是否異常,根據 F1 值
或者查準率與查全率的比例來選擇 ε選出ε後,針對測試集進行預測,計算異常檢驗系統的F1值,或者查準率與查全率
之比.
5 異常檢測對比監督學習
6 選擇特徵
異常檢測假設特徵符合高斯分佈,如果資料的分佈不是高斯分佈,異常檢測演算法也能夠
工作,但是最好還是將資料轉換成高斯分佈,例如使用對數函式:x=log(x+c)其中c為非負常數,或者x=x^c,c∈(0,1)
異常檢測可能出現的問題就是,一些異常的資料其p(x)值非常高,誤認為正常資料,這是可以根據被演算法錯誤估計的資料,觀察並新增一些特徵,使新增特徵後能夠幫助我們更好的進行異常檢測。
上圖,一維的特徵錯誤的判斷綠色被檢測點為正常,新增特徵後,被檢測為錯誤特徵。
7 多元高斯分佈
若兩個特徵相關,此時用開始的不同特徵檢測出的p(xi)直接相乘不能很好的檢測資料,因為該模型嘗試去同時抓住兩個特徵的偏差,創造了一個比較大的判定邊界。
上圖粉色的圈為傳統的判定邊界,此時,左上角的綠色資料被判定為正常資料,因為其對應每一維的特徵,都在閾值以內,但是其資料與正常資料的差別較大。
這個時候可以用多元高斯分佈,多元高斯分佈考慮了特徵間的相關性,構建了特徵的協方差矩陣。
多元高斯分佈:
其中:
其中不同的μ和Σ對應的多元高斯分佈圖形:
圖一:普通的高斯分佈
圖二:特徵1擁有較小的偏差,保持特徵2的偏差
圖三:特徵2具有較大的偏差,保持特徵1的偏差
圖四:保持原有特徵,增加兩個特徵的正相關性
圖五:保持原有特徵,增加兩個特徵的負相關性
多元高斯分佈與傳統高斯分佈比較: