本篇介紹了異常點檢測相關的知識
更多內容參考 機器學習&深度學習
我感覺這篇整理的很好很用心,可以詳細參考:
https://blog.csdn.net/Snail_Moved_Slowly/article/details/78826088
什麼是異常點檢測?比如針對飛機的引擎做測試,x1代表溫度、x2代表引擎的震動等等,希望判斷新生產的引擎是否有問題。如果這個新的引擎在點的中心可能是正常的,如果離大部分的樣本點都很遠,那就可能是異常點。
另外可以假設有一個模型可以預測概率,如果P<ξ,就是異常點;如果P>ξ就是正常點。再比如消費者的信用行為、資料中心的監控等等。
高斯分佈也叫做正態分佈,描述了資料分佈的情況
使用高斯分佈進行異常點檢測的演算法流程:
1 選擇可能產生異常值影響的特徵
2 計算每個特徵的平均值和方差
3 基於方差和均值計算p(x)
得到結果後就可以進行異常點的判斷了,比如ξ選擇了0.02,那麼就可以對各個樣本點進行對比,小於它的,就認為是異常點。
那麼如何開發一個異常點檢測的應用呢。如果能有部分的樣本帶有標註y=1或者y=0,就可以基於這些資料做為模型的評價了。如果我們有10000個正常點,20個異常點。那麼可以分配6000個正常點作為訓練集,10個異常點+2000個正常點作為驗證集,剩下的作為測試集。然後使用P R F1做為模型的評估。
異常點檢測和監督學習還是不同的:首先就是異常點檢測異常樣本極少,而監督學習要求正常樣本點和異常點都很多才行。在資料分佈方面,高斯分佈需要各個維度都保持在正態分佈;模型訓練方面,異常點只是在驗證集與測試集上起作用。
在使用高斯分佈之前應該把資料構造成正態分佈的樣子,否則就是用一些Log或者開方等方法,使得圖形貼近高斯分佈。如果選擇了一個特徵,結果異常點在樣本點中間,那麼最好能開發一些新的特徵,使得這個異常點脫離正常點。
多元高斯分佈是高斯分佈的一種特殊情況,他們也有不同的使用場景:
1 高斯分佈需要手動設計特徵;多變數多元高斯分佈則可以自己捕獲特徵
2 高斯分佈的計算代價比較小;
3 高斯分佈在m樣本量比較少的時候也無所謂;多元高斯分佈由於要構造一個矩陣,所以需要保證m有足夠的量
多元高斯分佈的出現主要是解決多個特徵擬合後,雖然在自己的維度都不屬於異常點,但是通過多元的作用,就可以把異常點排除。