吳恩達《機器學習》課程總結(15)異常檢測
15.1問題的動機
將正常的樣本繪制成圖表(假設可以),如下圖所示:
當新的測試樣本同樣繪制到圖標上,如果偏離中心越遠說明越可能不正常,使用某個可能性閾值,當低於正常可能性閾值時判斷其為異常,然後做進一步的檢查。異常檢測常用於工業生產、異常用戶等實際場景中。
以上這種方法叫密度評估:
15.2高斯分布
(1)高斯分布也稱為正態分布,其記為:
(2)高斯分布的概率密度函數:
其中均值和方差的計算公式:
均值影響水平移動;方差越大,分布越矮胖,方差越小,分布越瘦高。
(3)在求均值方差是到底用1/m還是1/(m-1)不做深究,二者差別很小(除非數據樣本特別少),機器學習上習慣用前者。
15.3算法
(1)首先求出每個特征的均值和方差:
(2)獲取新數據之後根據模型計算密度(註意此處算的是密度,而不是概率):
(最後一項應該把1改成n)
(3)根據設定的判斷邊界,當p(x)小於判斷邊界是則判別為異常。
以下的三維圖是表示密度估計函數:
15.4開發和評價一個異常檢測系統
(1)異常檢測是一個非監督學習,故不可以根據結果變量y的值來高斯我們數據是否真的是異常。
(2)異常檢測系統開發的方法:從帶有標記(正常和異常)的數據著手,選擇部分正確數據集構建模型,然後剩余正常和異常構成交叉驗證集和測試集,交叉驗證集作為選取閾值ε
案例:10000臺正常的引擎數據,20臺異常引擎數據,分配如下:
6000臺正常作為模型構建
2000臺正常和10臺異常作為交叉驗證集
2000臺正常和10臺異常作為測試集
具體評價方法如下:
1.根據訓練集數據,我們估計特征的平均值和方差並構建p(x)函數;
2.對交叉驗證集,嘗試用不同的ε值作為閾值,並預測數據是否異常,根據F1值或者查準率與查全率的比例來選擇ε;
3.選出ε後,針對測試集進行預測,計算異常檢測系統的F1值,或者出準率與查全率之比。
15.5異常檢測與監督學習的對比
通常來說,正例(異常)樣本太少,甚至為0,也就是說,出現了太多沒見過的不同的異常類型,對於這些問題,通常應該使用的算法是異常檢測算法。
15.6選擇特征
(1)異常檢測是假設特征符合正態分布(不是當然也能用,但不好),故需要將非正態分布的特征轉換成正態分布,例如使用對數函數x=log(x+C),其中C是非負常數,常用1;或者x=xc
(2)誤差分析:一個常見問題是一些異常的數據可能也會有較高的p(x)值,因而被認為是正常的,這種情況下可以做誤差分析,從中找到一些新特征,是異常的p(x)變小。如下圖中一個異常樣本在一個特征中p(x)值很大,然後尋找其他特征,使其p(x)變小。
通常可以通過一些相關特征的組合獲得很好的新特征,如在檢測數據中心的計算機狀況,使用CPU的負載與網絡通信的比例作為新的特征,該值異常大時意味著出現問題。
15.7多元高斯分布(選修)
(1)當特征之間具有相關性時,原來的高斯分布可能無法正確的邊界(當然通過特征組合成新特征可以一定的解決該問題),如下圖紫色的線是原來的高斯分布,藍色的線是多元高斯分布:
(2)原來的高斯分布計算過程:
多元高斯分布計算過程(計算均值、協方差、概率密度函數):
(3)協方差矩陣的影響:
(4)原高斯分布模型(特例)與多元高斯分布模型(一般)的比較:
(5)特征之間具有相關性時,解決方法有二,其一通過 多元高斯分布,其二通過特征組合形成新特征。
15.8使用多元高斯分布進行異常檢測(選修):
簡要的講就是先用數據集計算均值和協方差,然後計算p(x),利用測試數據帶入到p(x)中求得的值與閾值作比較,小於閾值則判斷為異常。
吳恩達《機器學習》課程總結(15)異常檢測