1. 程式人生 > >高斯混合模型引數估計的EM演算法

高斯混合模型引數估計的EM演算法

一、高斯模型簡介

      首先介紹一下單高斯模型(GSM)和高斯混合模型(GMM)的大概思想。

1.單高斯模型

      如題,就是單個高斯分佈模型or正態分佈模型。想必大家都知道正態分佈,這一分佈反映了自然界普遍存在的有關變數的一種統計規律,例如身高,考試成績等;而且有很好的數學性質,具有各階導數,變數頻數分佈由μ、σ完全決定等等,在許多領域得到廣泛應用。在這裡簡單介紹下高斯分佈的概率密度分佈函式: 

        其中θ=(μ,σ2);

2.高斯混合模型

注:在介紹GMM的時候,注意跟K-means的相似點

      K個GSM混合成一個GMM,每個GSM稱為GMM的一個component,也就是分為K個類,與K-means一樣,K的取值需要事先確定,具體的形式化定義如下:

      其中,是樣本集合中k類被選中的概率:,其中z=k指的是樣本屬於k類,那麼可以表示為,很顯然,y是觀測資料。

       這裡如果我們事先知道每個樣本的分類情況,那麼求解GMM的引數非常直觀,如下表示:

       假設 有K個類,樣本數量分別為N1,N2,…,NkN1+N2+…+Nk=N,即有觀測資料,第k個分類的樣本集合表示為S(k),那麼公式(2)中的三個引數可以表示為:

 

 

       這樣是理想情況,例如給你一堆人類的身高的資料,以及對應的性別,那麼這個就是估計兩個分量的高斯混合模型,需要學習至少5個引數(事實是6個,另外一個可以有1-α得出)。但是如果給你的人類身高的資料,為給出相應的性別的資料,這樣進行學習的話就是一個聚類問題,同樣可以知道需要聚成兩類(注:許多時候連K也是需要事先假設的),直觀上可以按照跟K-means演算法以致的思路,只是這裡的屬於某個類是一個概率,而不是一定的。

       首先可以先假設聚成K類,然後選擇引數的初始值θ0(總共2K個變數),這裡需要引進一個變數,表示的是第j個觀測來自第k個component的概率,即資料j由第k個Component 生成的概率,或者可以說是這個component上生成這個資料的概率,可以根據後驗概率計算得到:

 

       注:這個與的區別,指的是第k個component被選中的概率,需要對所有的資料j進行累加

公式(6)=>(7)=>(8)=>(9)分別使用了貝葉斯估計,全概率公式以及的定義就可得出。

       上面是根據資料j計算各個component的生成概率,而現在根據每個component生成了1,2,…N點資料,每個component有事一個高斯分佈,那麼根據α,

μ,σ2的定義又可以直觀地得出如下式子:

 

       這樣其實只是把原本樣本一定屬於某一類改成了一個樣本屬於某類的概率而k類樣本數量Nk變成了概率相加,就可以直接得出(10),(11),(12)的公式。

       不知不覺就把EM演算法的兩步迭代給寫完了,即將公式(9)和公式(10),(11),(12)進行相互迭代,直到收斂,高斯混合模型就聚類好了。

       下面給出較為清晰的訓練高斯混合模型的演算法步驟:

   演算法1

        選取初始值初始化θ,

        repeat{

          (1)估計每個資料的每個component生成概率,即

           

          (2)根據,估計每個component的引數,得:

                            公式(10),(11),(12)

         }直到收斂

         這樣,高斯混合模型已經介紹完,當然上面只是直觀介紹,具體的與EM演算法思想對應關係說明會放在後面一節。

         再演算法推導之前,我們先看下K-means和高斯混合模型的異同點。

3.高斯混合模型與K-means異同點

         相同點:(1)需要指定K值

                    (2)需要指定初始值,例如K-means的中心點,GMM的各個引數

                    (3)都是含有EM演算法思想

         不同點:(1)優化目標函式不同,K-means:最短距離,GMM:最大化log似然估計

                    (2)E步的指標不同,K-means:點到中心的距離(硬指標),GMM:求解每個觀測資料        的每個component的概率(軟指標)

二、高斯混合模型引數估計說明(EM演算法)

下面將EM演算法與高斯混合模型的引數估計對應起來,如果不清楚地或者已經忘了部分內容的,可以參照上篇部落格EM演算法學習

1.明確影變數,寫出完全資料的對數似然函式

            從上節,我們可以看出,就可以作為隱變數,那麼完全資料的對數似然函式為:

 

      可以發現這就是很簡單的EM演算法利用Jensen不等式的推導。

2.EM演算法E步

 見上篇部落格EM演算法學習,這部分就是求解期望H函式,也就是求解隱含引數概率即可,那麼根據Jensen不等式,等式成立的約束條件,即可得出公式(7),(8),(9),這裡不做多複述。

      在李航老師的《統計學習方法》中,給了比較正規的說明,即在當前模型引數下第j個觀測資料來自第k個分模型的概率,稱為分模型k對觀測資料的響應度。

3.EM演算法M步

       根據EM演算法M步,可得,這裡就是在知道的情況下,求解θ使得取到最大值,而這個式子中log上沒有疊加式子,就可以求偏導為零,求得引數值。

       這裡所遇到的問題,怎樣詳細地推匯出公式(10),(11),(12)。

       首先將公式(1)代入(13),得:

      那麼我們只要對公式(14)分別對μ,σ2偏導為零即可,而α在的條件下求偏導為0,需要使用拉格朗日定理

具體推導如下:

  • 公式(10)

             令,那麼對L(θ)分別對α和λ求偏導為零,得:

 

           (我這邊latex公式中不能輸入中文,所以上式推導用英文說明了,抱歉,應該推導清楚了。)

  • 公式(11)

 

  • 公式(12)

 對σ2求偏導為零得到的σ2值跟對σ求偏導為零得到的σ2值是一樣的,所以這裡我對σ求偏導為零得到的σ2

 

       到現在公式(10),(11),(12)都已推出,其實這部分的推導只是簡單的應用了最大似然估計得出。

三、總結

     其他的混合模型,例如樸素貝葉斯混合模型都可以使用EM演算法推出使用,這裡不再次推導。我個人覺得EM演算法就是相互迭代,求出一個穩定值,而這種相互迭代的方法用的範圍挺廣的,例如混合模型,k-means,HMM中的Baum-welch演算法等。

     思考:相互迭代,比較試用的場景:某個事件大概可以分為兩部分,一個是整一個類發生的概率,一個每個小個體發生的概率,而這個兩個部分可以相互求解計算,迭代到一個穩定值或者類似於hits演算法一樣。例:記得去年WWW會議中有以一篇惡意評論使用者的查詢,就是給每個使用者一個概率,給每個惡意評論組(包括幾個一起惡意評論的使用者)一個概率,而這兩個概率就可以相互迭代達到穩定值,得到的結果也較好。是否可以利用相同思想應用到其他場景。

四、主要參考資料

     [1]李航.統計學習方法.北京:清華大學出版社,2012

轉自:http://www.cnblogs.com/mindpuzzle/archive/2013/04/24/3036447.html