混合高斯模型

1. 單高斯模型(SGM)

多維高斯分佈的概率密度函數如下式所示:

  • N(x|μ,Σ)=12π|Σ|e12(xμ)Σ1(xμ)

對於單高斯模型,由於可以明確訓練樣本是否屬於該高斯模型,因此 μ 通常由訓練樣本均值代替,Σ 通常由樣本方差代替。單高斯模型可用於進行二分類問題,例如,對於任意輸入xN(x;μ,Σ) 表示該樣本爲正樣本(負樣本) 的概率。然後根據提前設置的閾值來進行分類。在幾何圖形上,單高斯分佈在二維平面上近似於橢圓,在三維平面上近似於橢球狀,下圖爲二維空間的例子:

圖片名稱

2. 混合高斯模型(GMM)

雖然單⾼斯分佈有⼀些重要的分析性質,但是當它遇到實際數據集時,也會有巨⼤的侷限性。考慮下圖給出的例⼦。這個數據集被稱爲“⽼忠實間歇噴泉”數據集,由美國黃⽯國家公園的⽼忠實間歇噴泉的272次噴發的測量數據組成。每條測量記錄包括噴發持續了⼏分鐘(橫軸)和距離下次噴發間隔了⼏分鐘(縱軸)。我們看到數據集主要聚集在兩⼤堆中,⼀個簡單的⾼斯分佈不能描述這種結構,⽽兩個⾼斯分佈的線性疊加可以更好地描述這個數據集的特徵。

圖片名稱

混合高斯模型假設數據服從混合高斯分佈,通過將單個⾼斯分佈進⾏線性組合而得到的模型,被稱爲混合高斯模型(Gaussian Mixture Model)。下圖是⼀維混合⾼斯分佈的例⼦,藍⾊曲線給出了三個⾼斯分佈,紅⾊曲線表⽰它們的和。通過使⽤⾜夠多的⾼斯分佈,並且調節它們的均值和⽅差以及線性組合的係數,⼏乎所有的連續概率密度都能夠以任意的精度近似。

圖片名稱

混合高斯模型通常用於聚類,假設模型由 K 個 高斯分佈組成(即數據包含K個類),每個高斯分佈稱爲一個“Component”,這些 Component 線性加成在一起就組成了 GMM 的概率密度函數:

  • p(x)=Kk=1p(k)p(x|k)=Kk=1πkN(x|μk,Σk)

其中,參數πk 被稱爲混合係數(mixing coefficients),Kk=1πk=10πk1 。我們把πk=p(k) 看成選擇第k個分佈的先驗概率, 把密度N(x|μk,Σk)=p(x|k) 看成給定第k個分佈時x的概率。

下圖給出了⼆維空間中3個⾼斯分佈混合的例⼦。(a)每個混合分量的常數概率密度輪廓線,其中三個分量分別被標記爲紅⾊、藍⾊和綠⾊,且混合係數的值在每個分量的下⽅給出。(b)混合分佈的邊緣概率密度p(x)的輪廓線。(c)概率分佈p(x)的⼀個曲⾯圖。

圖片名稱

爲了便於引入EM算法,我們通過隱變量來描述GMM。我們引⼊⼀個K維⼆值隨機變量z(稱爲隱變量),這個變量採⽤了“1-of-K”表⽰⽅法,其中⼀個特定的元素zk 等於1,其餘所有的元素等於0。z的邊緣概率分佈根據混合係數k進⾏賦值,即:

  • p(zk=1)=πk

類似地,給定z的⼀個特定的值,x的條件概率分佈是⼀個⾼斯分佈

  • p(x|zk=1)=N(x|μk,Σk)

聯合概率分佈爲p(z)p(x|z) ,從⽽x的邊緣概率分佈可以通過將聯合概率分佈對所有可能的z求和的⽅式得到,求和式的各項的結果就分別代表樣本x 屬於各個類的概率,如下所示:

  • p(x)=zp(z)p(x|z)=Kk=1πkN(x|μk,Σk)

現在假設我們有 N 個數據點,並假設它們服從某個分佈(記作 p(x) ),現在要確定裏面的一些參數的值,.在 GMM 中,我們就需要確定 πkμkΣk 這些參數。 我們的想法是,找到這樣一組參數,它所確定的概率分佈生成這些給定的數據點的概率最大,而這個概率實際上就等於Ni=1p(xi) ,這個乘積就是似然函數。通常單個點的概率都很小,許多很小的數字相乘起來在計算機裏很容易造成浮點數下溢,因此我們通常會對其取對數,把乘積變成加和 Ni=1lnp(xi) ,得到 log-likelihood function :

  • Ni=1lnp(xi)=Ni=1ln{Kk=1πkN(xi|μk,Σk)}

3. EM算法求解參數

本文不涉及EM算法的詳細介紹,簡單來講,EM的意思是“Expectation Maximization”:該過程分爲兩步:第一步,假設知道各個高斯分佈的參數(可以初始化一個,或者基於上一步迭代結果),去估計每個高斯模型的隱變量;第二步,基於估計的隱變量,回過頭再去確定高斯分佈的參數。重複這兩個步驟,直到收斂。

接下來我們需要最大化如下似然函數(通常的做法是求導並令導數等於零,然後解方程),亦即找到這樣一組參數值,它讓似然函數取得最大值,我們就認爲這是最合適的參數,這樣就完成了參數估計的過程。

  • Ni=1lnp(xi)=Nn=1ln{Kk=1πkN(xi|μk,Σk)}

由於在對數函數裏面又有加和,我們沒法直接用求導解方程的辦法直接求得最大值。採用EM算法的思想,混合高斯模型的參數確定可分爲以下兩步:

(1)E-step
估計數據由每個 Component 生成的概率(並不是每個 Component 被選中的概率):對於每個數據 xi 來說,它由第 k 個 Component 生成的概率爲

  • γ(i,k)=πkN(xi|μk,Σk)Kj=1πjN(xi|μj,Σj)

由於式子裏的 μkΣk 也是需要我們估計的值,我們採用迭代法,在計算 γ(i,k) 的時候我們假定 μkΣk 均已知,我們將取上一次迭代所得的值(或者初始值)。

(2)M-step
估計每個 Component 的參數:現在我們假設上一步中得到的 γ(i,k) 就是正確的“數據 xi 由 Component k 生成的概率”,亦可以當做該 Component 在生成這個數據 xi 上所做的貢獻,或者說,我們可以看作 xi 這個值其中有 γ(i,k)xi 這部分是由 Component k 所生成的。集中考慮所有的數據點,現在實際上可以看作 Component 生成了 γ(1,k)x1,,γ(N,k)xN 這些點。由於每個 Component 都是一個標準的 Gaussian 分佈,可以很容易分佈求出最大似然所對應的參數值:

  • μkΣkπk=1Nki=1Nγ(i,k)xi=1Nki=1Nγ(i,k)(xiμk)(xiμk)T=Nk/N
    其中 Nk=Ni=1γ(i,k)

重複迭代前面兩步,直到似然函數的值收斂爲止。

4. 參考資料

http://blog.pluskid.org/?p=39
http://blog.csdn.net/linkin1005/article/details/41212085

發佈了50 篇原創文章 · 獲贊 703 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章