混合高斯模型(Mixtures of Gaussians)和EM算法


混合高斯模型(Mixtures of Gaussians)和EM算法

 

主要內容:

1、 概率論預備知識

2、 單高斯模型

3、 混合高斯模型

4、 EM算法

5、 K-means聚類算法

 

一、概率論預備知識

1、 數學期望/均值、方差/標准差

  • 設離散型隨機變量X的分布律為clip_image002

則稱clip_image004為X的數學期望或均值

  • 設連續型隨機變量X的概率密度函數(pdf)為clip_image006

則其數學期望定義為:clip_image008

  • 隨機變量X的方差:clip_image010
  • 隨機變量X的標准差:clip_image012

2、 正態分布、協方差

  • 正態分布:clip_image014

概率密度函數:clip_image016

  • 設(X,Y)為二維隨機變量,若clip_image018存在,則稱其為隨機變量X和Y的協方差,記為clip_image020

         clip_image022

3、 多維高斯(正態)分布

  • 概率密度函數PDF定義如下:

           clip_image024

其中,x是維數為n的樣本向量(列向量),clip_image026是期望,clip_image028是協方差矩陣,clip_image030表示clip_image028[1]的行列式,clip_image032表示clip_image028[2]的逆矩陣。

二、單高斯模型(Single GaussianModel, SGM)

clip_image034

注意與一維高斯分布不同,其中x是維數為d的樣本向量(列向量),u是模型期望,C是模型方差。

對於單高斯模型,由於可以明確訓練樣本是否屬於該高斯模型(如訓練人臉膚色模型時,將人臉圖像膚色部分分割出來,形成訓練集),故μ通常由訓練樣本均值代替,C由樣本方差代替。為了將高斯分布用於模式分類,假設訓練樣本屬於類別K,那么,式(1)可以改為如下形式:

clip_image036

式(2)表明樣本屬於類別K的概率大小。從而將任意測試樣本輸入式(2),均可以得到一個標量,然后根據閾值t來確定該樣本是否屬於該類別,閾值t可以為經驗值,也可以通過實驗確定,通常意義下,t一般取0.7-0.75.

幾何意義理解:根據單高斯分布pdf的含義,我們可以知道,符合SGM分布的二維點在平面上應該近似橢圓;相應地,三維點在空間中則近似於橢球狀。

二維情況如下所示:

clip_image038

三、混合高斯模型(GaussianMixture Model,GMM)

        高斯混合模型是單一高斯概率率密度函數的延伸。例如:有一批觀察數據clip_image040,數據個數為n,在d 維空間中的分布不是橢球狀,那么就不適合以一個單一的高密度函數來描述這些數據點的概率密度函數。此時我們采用一個變通方案,假設每個點均由一個單高斯分布生成,而這一批數據共由M(明確)個單高斯模型生成,具體某個數據clip_image042屬於哪個單高斯模型未知,且每個單高斯模型在混合模型中占的比例clip_image044未知,將所有來自不同分布的數據點混在一起,該分布稱為高斯混合分布

clip_image046

從數學上講,我們認為這些數據的概率分布密度函數可以通過加權函數表示:

clip_image048

其中

clip_image050

表示第j個SGM的PDF。

         高斯混合模型(GMM),顧名思義,就是數據可以看作是從數個高斯分布中生成出來的。雖然我們可以用不同的分布來隨意地構造 XX Mixture Model ,但是 GMM是 最為流行。另外,Mixture Model 本身其實也是可以變得任意復雜的,通過增加 Model 的個數,我們可以任意地逼近任何連續的概率密分布。

clip_image052,GMM共有M個SGM,現在clip_image054,我們就需要通過樣本集X來估計GMM的所有參數,樣本X的概率公式為:clip_image056

通常用EM(ExpectationMaximum)算法對GMM參數進行估計。

(1)初始化

方案1:協方差矩陣clip_image058設為單位矩陣,每個模型比例的先驗概率clip_image060;均值clip_image062設為隨機數。

方案 2:由k均值(k-means)聚類算法對樣本進行聚類,利用各類的均值作為clip_image064,並計算clip_image066clip_image068,取各類樣本占樣本總數的比例。

(2)估計步驟(E-step)

clip_image069的后驗概率為

clip_image071

(3)最大化步驟(M-step)

更新權值:clip_image073

更新均值:clip_image075

更新協方差矩陣:clip_image077

(4)收斂條件

不斷地迭代步驟(2)和(3),重復更新上面三個值,直到

clip_image079,其中為更新參數后計算的值,即前后兩次迭代得到的結果變化小於一定程度則終止迭代,通常clip_image081

與k-means作比較:

           與k-means一樣,給定的訓練樣本是clip_image083,我們將隱含類別標簽用clip_image085表示。與k-means的硬指定不同,我們首先認為是clip_image085[1]滿足一定的概率分布的,這里我們認為滿足多項式分布,clip_image087,其中clip_image089,有k個值{1,…,k}可以選取。而且我們認為在給定clip_image085[2]后,滿足多值高斯分布,即clip_image091。由此可以得到聯合分布clip_image093

另一篇博文對GMM的介紹也深入淺出,值得一看,內容如下:

使用期望最大化算法(Expectation-Maximization)來進行密度估計(density estimation)。

          與k-means一樣,給定的訓練樣本是clip_image095,我們將隱含類別標簽用clip_image097表示。與k-means的硬指定不同,我們首先認為是clip_image097[1]滿足一定的概率分布的,這里我們認為滿足多項式分布,clip_image099,其中clip_image101,有k個值{1,…,k}可以選取。而且我們認為在給定clip_image097[2]后,clip_image103滿足多值高斯分布,即clip_image105。由此可以得到聯合分布clip_image107

          整個模型簡單描述為對於每個樣例clip_image103[1],我們先從k個類別中按多項式分布抽取一個clip_image097[3],然后根據所對應的k個多值高斯分布中的一個生成樣例clip_image103[2],。整個過程稱作混合高斯模型。注意的是這里的clip_image097[4]仍然是隱含隨機變量。模型中還有三個變量clip_image109clip_image111。最大似然估計為clip_image113。對數化后如下:

clip_image115

這個式子的最大值是不能通過前面使用的求導數為0的方法解決的,因為求的結果不是close form。但是假設我們知道了每個樣例的clip_image097[5],那么上式可以簡化為:

clip_image117

這時候再對clip_image109[1]clip_image111[1]進行求導得到:

clip_image119

clip_image121就是樣本類別中clip_image123的比率,clip_image125是類別為j的樣本特征均值,clip_image127是類別為j的樣例的特征的協方差矩陣。

           實際上,當知道clip_image097[6]后,最大似然估計就近似於高斯判別分析模型(Gaussian discriminant analysis model)了。所不同的是GDA中類別y是伯努利分布,而這里的z是多項式分布,還有這里的每個樣例都有不同的協方差矩陣,而GDA中認為只有一個。

          之前我們是假設給定了clip_image097[7],實際上是不知道的,那么怎么辦呢?考慮之前提到的EM的思想,第一步是猜測隱含類別變量z,第二步是更新其他參數,以獲得最大的最大似然估計。具體如下:

clip_image129

         在E步中,我們將其他參數clip_image131看作常量,計算clip_image097[8]的后驗概率,也就是估計隱含類別變量。估計好后,利用上面的公式重新計算其他參數,計算好后發現最大化最大似然估計時,clip_image133值又不對了,需要重新計算,周而復始,直至收斂。

clip_image133[1]的具體計算公式如下:

clip_image135

這個式子利用了貝葉斯公式。

這里我們使用代替了前面的,由簡單的0/1值變成了概率值。

          對比K-means可以發現,這里使用了“軟”指定,為每個樣例分配的類別是有一定的概率的,同時計算量也變大了,每個樣例i都要計算屬於每一個類別j的概率。與K-means相同的是,結果仍然是局部最優解。對其他參數取不同的初始值進行多次計算不失為一種好方法。

四、EM算法(ExpectationMaximum)

EM的整個推導過程,在這里不細說,詳細參考:

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html

這篇博文寫得非常詳細,對於理解EM算法很有幫助。

五、 K-means算法

k-means算法是輸入聚類個數k,以及包含 n個數據對象的數據庫,輸出滿足方差最小標准的k個聚類。同一聚類中的對象相似度較高;而不同聚類中的對象相似度較小。聚類相似度是利用各聚類中對象的均值所獲得一個“中心對象”(引力中心)來進行計算的。

k-means算法的基本步驟:

(1)從 n個數據對象任意選擇k個對象作為初始聚類中心;

(2)根據每個聚類對象的均值(中心對象),計算每個對象與這些中心對象的距離;並根據最小距離重新對相應對象進行划分;

(3)重新計算每個(有變化)聚類的均值(中心對象);

(4)計算標准測度函數,當滿足一定條件,如函數收斂時,則算法終止;如果條件不滿足則回到步驟(2)。

六、參考文獻

http://blog.csdn.net/hevc_cjl/article/details/9733945高斯混合模型學習筆記

http://www.cnblogs.com/CBDoctor/archive/2011/11/06/2236286.html 混合高斯模型算法

http://blog.pluskid.org/?p=39 漫談 Clustering (3): Gaussian Mixture Model

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006924.html混合高斯模型(Mixtures of Gaussians)和EM算法

http://www.cnblogs.com/jerrylead/archive/2011/04/06/2006936.html (EM算法)The EM Algorithm

http://www.cppblog.com/Terrile/archive/2011/01/19/120051.html GMM的C++實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM