1. 程式人生 > >機器學習筆記(參考吳恩達機器學習視訊筆記)14_異常檢測

機器學習筆記(參考吳恩達機器學習視訊筆記)14_異常檢測

14 異常檢測

異常檢測(Anomaly detection)是機器學習演算法的一個常見應用。這種演算法的一個有趣之處在於:它雖然主要用於非監督學習問題,但從某些角度看,它又類似於一些監督學習問題。

異常檢測主要用來識別欺騙。例如線上採集而來的有關使用者的資料,一個特徵向量中可能會包含如:使用者多久登入一次,訪問過的頁面,在論壇釋出的帖子數量,甚至是打字速度等。嘗試根據這些特徵構建一個模型,可以用這個模型來識別那些不符合該模式的使用者。

14.1 高斯分佈

    高斯分佈,也稱正態分佈。如果認為變數x符合高斯分佈,則其概率密度函式為:

利用已有資料來預測總體的

的計算方法如下:

高斯分佈樣例如下:

14.2 異常檢測演算法

應用高斯分佈可以開發異常檢測演算法。對於給定的資料集,針對每一個特徵計算的估計值。

獲得的估計值後,給定新的一個訓練例項,根據模型計算

時,為異常。

下圖是一個由兩個特徵的訓練集,以及特徵的分佈情況:

下面的三維圖表表示的是密度估計函式,z軸為根據兩個特徵的值所估計值:

選擇一個,將作為判定邊界,當時預測資料為正常資料,否則為異常。

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

異常檢測演算法是一個非監督學習演算法,意味著無法根據結果變數的值來判斷資料是否真的是異常的。需要另一種方法來幫助檢驗演算法是否有效。當開發一個異常檢測系統時,從帶標記(異常或正常)的資料著手,從其中選擇一部分正常資料用於構建訓練集,然後用剩下的正常資料和異常資料混合的資料構成交叉檢驗集和測試集。

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

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

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

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

具體評價方法如下:

  1. 根據測試集資料,估計特徵的平均值和方差並構建函式。

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

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

14.4 異常檢測與監督學習對比

構建的異常檢測系統也使用了帶標記的資料,與監督學習有些相似,下面的對

比有助於選擇採用監督學習還是異常檢測:

 

異常檢測

監督學習

非常少量的正向類(異常資料y=1),大

量的負向類(y=0)。

同時有大量的正向類和負向類。

許多不同種類的異常,非常難根據非常 少量的正向類資料來訓練演算法。未來遇到的異常可能與已掌握的異常、非常的不同。

有足夠多的正向類例項,足夠用於訓練 演算法,未來遇到的正向類例項可能與訓練集中的非常近似。

例如: 欺詐行為檢測 生產(例如飛機引擎)檢測資料中心的計算機執行狀況。

例如:郵件過濾器 天氣預報 腫瘤分類。

 

14.5 選擇特徵

異常檢測假設特徵符合高斯分佈,如果資料的分佈不是高斯分佈,異常檢測演算法也能夠工作,但是最好還是將資料轉換成高斯分佈,例如使用對數函式:,其中c為非負常數;或者,c為0~1之間的一個分數等方法。

誤差分析:一些異常的資料可能也會有較高的p(x)值,因而被演算法認為是正常的。這種情況下誤差分析能夠分析那些被演算法錯誤預測為正常的資料,觀察能否找出一些問題。可能從問題中發現需要增加一些新的特徵,增加這些新特徵後獲得的新演算法能夠更好地進行異常檢測。通過將一些相關的特徵進行組合,來獲得一些新的更好的特徵(異常資料的該特徵值異常地大或小),例如,在檢測資料中心的計算機狀況的例子中,我們可以用 CPU負載與網路通訊量的比例作為一個新的特徵,如果該值異常地大,便有可能意味著該伺服器是陷入了一些問題中。

14.6 多元高斯分佈(選)

有兩個相關的特徵,它們的值域範圍比較寬,在此情況下,一般的高斯分佈不能很好地識別異常資料。因為一般的高斯分佈模型是嘗試去同時抓住兩個特徵的偏差,因此創造出一個比較大的判定邊界。

如圖,一般高斯分佈的判定邊界為如下圓形邊界,將異常點劃在正常範圍內。多元高斯分佈將建立如下橢圓形的判定邊界。

在多元高斯分佈模型中,將構建特徵的協方差矩陣,用所有的特徵一起來計算p(x)。首先計算所有特徵的平均值,然後再計算協方差矩陣:

注:u是一個向量,其每一個單元都是原特徵矩陣中一行資料的均值。最後我們計算多元高斯分佈的p(x):

其中是矩陣的行列式,是逆矩陣。協方差矩陣是如何影響模型的:

從左往右依次分析:

1)是一個一般的高斯分佈模型。

2)通過協方差矩陣,令特徵1擁有較小的偏差,同時保持特徵2的偏差。

3)通過協方差矩陣,令特徵2擁有較大的偏差,同時保持特徵1的偏差。

4)通過協方差矩陣,在不改變兩個特徵的原有偏差的基礎上,增加兩者之間的正相關性。

5)通過協方差矩陣,在不改變兩個特徵的原有偏差的基礎上,增加兩者之間的負相關性。

多元高斯分佈模型與原高斯分佈模型的關係:原本的高斯分佈模型是多元高斯分佈模型的一個子集,即像上圖中的第1、2、3個例子所示,如果協方差矩陣只在對角線的單位上有非零的值時,即為原本的高斯分佈模型。

原高斯分佈模型和多元高斯分佈模型的比較:

 

原高斯分佈模型

多元高斯分佈模型

不能捕捉特徵之間的相關性 但可以通過將特徵進行組合的方法來解決

自動捕捉特徵之間的相關性

計算代價低,能適應大規模的特徵

計算代價較高 訓練集較小時也同樣適用

 

必須要有m>n,不然的話協方差矩陣是不可逆的,通常需要m>10n另外特徵冗餘也會導致協方差矩陣不可逆。

 

原高斯分佈模型被廣泛使用著,如果特徵之間在某種程度上存在相互關聯的情況,可以通過構造新特徵的方法來捕捉這些相關性。如果訓練集不是太大,並且沒有太多的特徵,可以使用多元高斯分佈模型。