機器學習實踐項目之高斯分布

多元高斯分布與一元高斯分布的關系

首先一維標準正態(tài)分布:

二維標準正態(tài)分布,就是兩個獨立的一維標準正態(tài)分布隨機變量的聯(lián)合分布

把兩個隨機變量組合成一個隨機向量:

則有:

然后從標準正態(tài)分布推廣到一般正態(tài)分布,辦法是通過一個線性變換:

注意前面的系數(shù)多了一個|A|(A的行列式)。

可以證明這個分布的均值為μ,協(xié)方差為:

那就有:


高維情形同理。

參考鏈接:

算法流程

有了前面的知識,我們可以得到,采用了高斯分布的異常檢測算法流程如下:

    1. 選擇一些足夠反映異常樣本的特征 。
    1. 對各個特征進行參數(shù)估計:
    1. 當新的樣本x到來時,計算其概率p(x), 如果超出卡定范圍,則認為樣本x 是異常樣本。

我們用斯坦福機器學習課程里面的例子來說明一下。

我們假定有兩個特征,均服從高斯分布,并且通過極大似然估計我們得知其分布參數(shù)了:

高斯分布熱力圖

由于一個參數(shù)則是二維的,兩個參數(shù)就當然是三維的了,我們把這個三維圖堪稱熱力圖嘛(本來直觀理解也是一樣的嘛,概率越高的地方就越熱,比如東京就是最熱的地方,逃~),二維圖你一根直線就可以卡范圍了,三維下就是一個平面了(當然高緯度空間就是超平面咯!)就是下圖中描紅的位置,以下的區(qū)域都是異常樣本!



我們從頂上往下看,即投影下來,可以看到這個紅色圈就是上面的切割平面與三維體的相交部分,圈內就是正常樣本,圈外就是異常樣本。

高斯分布熱力圖投影

數(shù)據(jù)集劃分

劃分為訓練集、交叉驗證集跟測試集。

算法評估

由于實際場景中異常樣本是極少的,所以整個數(shù)據(jù)集是非常偏斜的,我們不能單純的用預測準確率來評估算法優(yōu)劣,而是:(參考鏈接在這)

  • 真陽性、假陽性、真陰性、假陰性
  • 查準率(Precision)與 召回率(Recall)

這里乍一看其實有點類似于邏輯回歸,因為不就是二分類問題嘛!但是實際上不是的啊!
監(jiān)督學習其實就是擬合啊!它要求正負樣本數(shù)量大小一致。

有監(jiān)督學習 異常檢測
數(shù)據(jù)分布均勻 數(shù)據(jù)非常偏斜,異常樣本數(shù)目遠小于正常樣本數(shù)目
可以根據(jù)對正樣本的擬合來知道正樣本的形態(tài),從而預測新來的樣本是否是正樣本 異常的類型不一,很難根據(jù)對現(xiàn)有的異常樣本(即正樣本)的擬合來判斷出異常樣本的形態(tài)

下面的表格則展示了二者的一些應用場景:

有監(jiān)督學習 異常檢測
垃圾郵件檢測 故障檢測
天氣預測(預測雨天、晴天、或是多云天氣) 某數(shù)據(jù)中心對于機器設備的監(jiān)控
癌癥的分類 制造業(yè)判斷一個零部件是否異常
··· ···

特征選擇

因為我們建立模型的基礎是假設特診滿足高斯分布,那么要是特征不符合高斯分布呢?
答案當然是整成高斯分布啊!
我們一開始拿到的特征的分布可能是這樣的:

轉換之前的特征 轉換之后的特征

我們可以通過對數(shù)操作或者其他操作將他轉化為高斯分布,例如,上面的特征經對數(shù)操作后形成的分布就非常接近于高斯分布:

構建新特征

在參加上次樂信的數(shù)據(jù)挖掘比賽中,發(fā)現(xiàn)有些特征是可以組合起來構建新特怔的,比如借錢的額度是一個特征,借錢的時間是一個特征,利用這兩個原始特征我們可以來計算借錢的頻率,從側面刻畫這個客戶的金融狀況。
再比如我的芯片工作電流值是一個參數(shù),電壓也是一個參數(shù),乘起來就是功耗參數(shù)了,這能刻畫出IC是否出現(xiàn)工作狀態(tài)變化了這一場景,這對異常的識別就更細致了。

多元高斯分布

異常檢測算法無法解決的問題,還是現(xiàn)以一個例子來解釋:
假設在數(shù)據(jù)中心監(jiān)控機器的例子中,我們有如下的內存和CPU使用數(shù)據(jù):

其中對于這兩個維度的數(shù)據(jù),都服從正態(tài)分布:

x1 x2

如果現(xiàn)在在我們的測試集中,有一個異常數(shù)據(jù)點出現(xiàn)在下圖的位置中:


那么在這種情況下我們會發(fā)現(xiàn),這一點對應的兩個維度下的概率其實都不低,從p(x)的結果上,我們無法準確預測這個樣本是否屬于異常。產生這個問題的實際原因其實是這樣的,從x1和x2這兩個維度(注:這里是從兩個緯度來看的,單單就某一維來看都是正常的,但是兩維就是異常的,因為其實這兩個變量之間是有一定的相關性的,你直接相乘處理進行判斷的話相當于不去管相關性了,也就是業(yè)務的一些內在特征就把它給丟了)來看,我們的正常數(shù)據(jù)及時大多數(shù)集中分布在這樣一個范圍內:

但我們使用之前的異常檢測算法,其實是以中心區(qū)域向外以正圓的形式擴散的。也就是說距離中心區(qū)域距離相等的點,對應的p(x)都是一樣的,所以我們可能無法檢測到這一個異常樣本,因為它也處在一個p(x)比較大的范圍內:

這里要這么理解:假如不認為兩個特征之間有相關性的話,那么就是以(μ1,μ2)為中心,然后以σ1,σ2為半徑畫橢圓,因此畫出來的極有可能就是粉紅色的這些線,而我們真實的確實藍色那個圈,因此直觀上就可知道我們丟失了一些特征,從而擬合出現(xiàn)問題了;

那么丟失的是什么呢? 顯然就是特征相關性了。


所以,為了解決異常檢測算法的這一問題,接下來我解釋改良版的異常檢測算法,要用到叫做多元高斯分布(多元正態(tài)分布)的東西。

定義

多元高斯分布模型被定義為:

其中, μ表示樣本均值, ∑表示樣本協(xié)方差矩陣
多元高斯分布模型的熱力圖如下:

參數(shù)

    1. 改變 主對角線的數(shù)值可以進行不同方向的寬度拉伸:
    1. 改變 次對角線的數(shù)值可以旋轉分布圖像:

    1. 改變 μ 可以對分布圖像進行位移:

因此方向上我們人工可以通過調整協(xié)方差矩陣來旋轉、拉伸上圖中粉色的邊界圈,使之適應真實數(shù)據(jù),方法上我們可以直接利用如下的多元高斯公式來進行計算(擬合)出真實數(shù)據(jù)對應的協(xié)方差矩陣。

具體算法操作步驟:

  • 根據(jù)數(shù)據(jù)集擬合參數(shù)得到:

然后新的測試樣本到來時,你直接輸入公式:

最后,如果p(x)<ε時,就把它標記為是一個異常樣本,反之,如果p(x)>=ε則不標記為異常樣本。

所以,如果使用多元高斯分布來解決異常檢測問題,你可能會得到這樣一個高斯分布的概率模型:


所以,他可以正常的識別出之前用普通的異常檢測算法無法正確檢測的那個異常樣本。

多元高斯分布模型與一般高斯分布模型的差異

原先的模型是這樣的:p(x)=p(x1;μ1,σ21)×p(x2;μ2,σ22)×…×p(xn;μn,σ2n),事實上,可以證明我們原先的這種模型,是多元高斯模型的一種。

實際上,一般的高斯分布模型只是多元高斯分布模型的一個約束,它將多元高斯分布的等高線約束到了如下所示同軸分布(概率密度的等高線是沿著軸向的):


其實這個模型對應于一種多元高斯分布的特例,具體來說這個特例被定義為約束p(x)的分布(也就是多元高斯分布p(x)),使得它的概率密度函數(shù)的等高線是沿著軸向的。也就是要求協(xié)方差矩陣Σ的非對角線元素都為0。

所以你可以得到多元高斯分布p(x)
看起來是上圖中這三種樣式的。你會發(fā)現(xiàn),在這3個例子中,它們的軸都是沿著x1,x2的軸的。
因此,在協(xié)方差矩陣Σ的非對角線元素都為0的情況下,這兩者是相同的:

Screenshot-2017-10-19 斯坦福機器學習課程 第九周 (3)多元高斯分布

何時使用多元高斯模型?何時使用原始模型?

既然我們知道了原始的模型是多元高斯模型的一個特例,那么應該在什么時候用哪個模型呢?

事實情況是,原始模型比較常用,而多元高斯模型比較少用。

假設在你的樣本中,x1和x2是線性相關的特征組合,下面是這兩種算法在處理不正常的特征組合時的具體方式對比:

一元高斯模型 多元高斯模型
捕捉到這兩個特征,建立一個新的特征x3(比如x3=x1/x2),去嘗試手工組合并改變這個新的特征變量,從而使得算法能很好的工作。 自動捕捉不同特征變量之間的相關性。
運算量小(更適用于特征變量個數(shù)n很大的情況) 計算更復雜(Σ是n×n的矩陣,這里會涉及兩個n×n的矩陣相乘的邏輯,計算量很大)
即使訓練樣本數(shù)m很小的情況下,也能工作的很好 必須滿足m>n,或者Σ不可逆(奇異矩陣)。這種情況下,還可以幫助你省去為了捕捉特征值組合而手動建立額外特征變量所花費的時間。

由此可以看出,基于多元高斯分布模型的異常檢測應用十分有限。

異常情況的應對
當你在擬合多元高斯模型時,如果你發(fā)現(xiàn)協(xié)方差矩陣Σ是奇異的(不可逆的),一般只有兩種情況:

  • 第一種是它沒有滿足m>n的條件
  • 第二種情況是,你有冗余特征變量 冗余特征變量的意思是出現(xiàn)了以下兩種情況的任意一種:
    - 出現(xiàn)了兩個完全一樣的特征變量(你可能不小心把同一個特征變量復制了兩份)
    - 如果你有x3=x4+x5,這里x3其實并沒有包含額外的信息,相對于x4和x5來說,它就是冗余特征變量。

這是你調試算法時的一個小知識,可能很少會遇到,但是一旦你發(fā)現(xiàn)Σ不可逆,那么首先需要從這兩個方面來考慮解決方案。

小結:多元高斯分布(Multivariate Gaussian Distribution)的形式很簡單,就是一元高斯分布的在向量形式的推廣。
也就是說:引入?yún)f(xié)方差是為了自動地去發(fā)掘特征之間的關系的,假如特征之間獨立那么就是似然估計模型了嘛,把各特征概率乘起來就好了。
從上面這些圖以及背景中可知,沒引入?yún)f(xié)方差前,切割三維熱力圖就是平著切的,但是引入?yún)f(xié)方差后即可以對切割的超平面做一些拉伸旋轉的操作,獲得更好的切割邊界,從而更好地進行分類,也就是找到了特怔之間的相關性嘛!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容