按部就班的吳恩達機器學習網課用於討論(13)

異常檢測-問題動機

爲了進行數據條目的異常檢測(正樣本很少的二分類問題),使用密度估計的方法,在每條數據中,每個x的特徵可能性爲𝑝(𝑥)。

當模型概率𝑝(𝑥)累乘值小於epsilon,則認爲是一條異常條目。在下圖中,數據集中的中心區域,其概率累乘p則大一些,更可能是正常的樣本。

 

 

高斯分佈

高斯分佈也是正態分佈,其均值mu,方差sigma^2。 其主要描述是,如下中文筆記參考:其中~爲服從的意思,即x服從N正態分佈。

均值和方差的計算過程,也在以下有詳述。當方差大,則分佈更寬,當方差小,則中心的均值概率密度更高。

 

如下是正態分佈一些參數與圖形對應的關係。其面積爲1,併爲對稱形式。

 

 

 

算法

詳細的算法如下圖中,根據數據選擇特徵後,根據數據計算出mu和sigma^2。sigma^2計算過程直接可以使用矩陣方式。

計算完成後,再來一個檢測樣本,根據之前得到的mu和sigma,得到該檢測樣本的p值。當p小於某個數,即密度估計不夠,則認爲是一條異常。

 

 

開發和評價一個異常檢測系統

在數據集的選擇方面,仍然是6,2,2,方式,將正常的數據集分爲訓練集,驗證集,測試集。異常的數據集放到驗證集和測試集中。驗證集和測試不要混用,數據內容應該保持不同。

根據訓練集得到mu和sigma後,在驗證集上,使用不同的epsilon作爲閾值,預測數據是否異常,使用F1-score或查準、查全率等作爲度量,來得到一個較好的epsilon。

選出epsilon後,在測試集上測試,使用相同的方法進行度量,得到模型的評價。

 

 

 

異常檢測與監督學習對比

下圖是對比,最顯著的是,異常檢測的正樣本數量明顯更少,而且正樣本的可能會是一個從來沒有見過的樣本。

認爲:欺詐行爲檢測,發動機生產,計算機運行情況等方向,是異常檢測。而郵件過濾,天氣預報,腫瘤分類,則是監督學習。

 

 

 

選擇特徵

首先是當特徵的分佈不是高斯分佈的時候,可以通過開方或求對數的方法,將數據轉換爲高斯分佈。選擇開方或log的參數時,通過多次取值,繪圖查看是否符合要求。

 

 一般情況,當p小於epsilon時,爲異常樣本。但是當p大於epsilon,即該樣本的密度估計值和正常樣本無異,卻爲異常樣本,則應該考慮增加樣本的特徵。

這些特徵是根據分析得到的,可以通過已知特徵的線性組合新的特徵。該新的特徵當異常大或者異常小(即與正常樣本的值不同),則認爲是可能的異常樣本。

在如下所示的例子中,當特徵x4的影響使得x3變大,則是一個正常的現象。而x4沒有影響卻有x3變大,則不正常。

將x3/x4或x3^2/x4作爲一個新的特徵,表明了該cpu負載導致的結果與網絡交通無關,比值異常大則爲異常樣本。

 

 

多元高斯分佈

在兩個相關的特徵形成的數據集中,異常檢測因普通的高斯分佈模型而不能很好識別異常數據。下圖中,正圓爲一般高斯分佈,斜橢圓爲多元高斯分佈。後者更能擬合數據。

 

 

多元高斯分佈的計算過程如下:和一般高斯分佈中p的累乘不同,這裏計算得到mu後,則計算協方差。其中,x-mu大小爲n行1列吧(等號前面的部分)。X-mu爲n行m列。

協方差矩陣sigma爲n*n的特徵大小的矩陣。通過協方差矩陣和mu向量,得到最終的p。

 

 

多元高斯分佈的對應圖如下:可以看出多元高斯分佈通過協方差,能夠自動得到特徵之間的相關性。

 

使用多元高斯分佈進行異常檢測

使用過程如下圖:通過訓練集計算得到mu和sigma,其中sigma爲n*n的矩陣。(每一列表示一條數據,每一行是一個特徵n)。在測試過程中,使用x代入得到p,p小於epsilon,則爲異常值。

 

 

 多元高斯分佈和原始高斯分佈的關係中,p的計算方式總結如下:其中多元高斯分佈中sigma爲n*n矩陣。原始模型是多元模型的一種特例。

 

下兩圖是原始模型和多元高斯模型的比較,其中,原始模型針對數據特徵之間的關係,需要手動處理,如進行特徵之間的相除等(之前介紹過),但是其計算成本低。

多元高斯模型通過協方差獲得了特徵之間的相關性,但是其sigma在進行求逆的過程中,會比較耗時,尤其是在特徵n比較大的時候。

另外,當數據量m遠遠大於特徵n的時候,多元高斯模型才進行應用。數學觀點上認爲,當m>n時候,纔有sigma的逆矩陣。儘管如此,數據量只是稍大一點,也沒有必要使用多元高斯模型。在實際數據集中,有各種各樣的冗餘特徵,那麼,當數據量遠遠大於特徵,才應用多元高斯分佈。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章