1. 程式人生 > >EM演算法求解混合伯努利模型

EM演算法求解混合伯努利模型

本文記錄了EM演算法求解混合伯努利分佈的推導,並提供了matlab實驗程式碼。

混合伯努利分佈

單個D維伯努利分佈的分佈率為:

p(x|μ)=d=1Dμxdd(1μd)1xd,
這裡x=(x1,,xD)TD維0-1向量,μ=(μ1,,μD)T為對應維度上事件發生的概率。
混合伯努利分佈是指由K個單個D維伯努利分佈混合構成的分佈,分佈率如下:
p(x|μ,π)=k=1Kπkp(x|μk),
這裡μ={μ1,,μK},π={π1,,πK},
p(x|μk)=d=1Dμxdkd(1μkd)1xd.

EM演算法混合伯努利分佈

現在我們有一個來自於混合伯努利分佈的資料集X

={x1,,xN},我們要最大化其似然函式:

maxμ,πlnp(X|μ,π)=n=1Nln{k=1Kπkp(xn|μk)}.
由於ln函式中的求和項,無法得到其閉式解,我們用EM演算法求其一個區域性數值解。關於EM演算法的內容見上一篇部落格。對於樣本xn,我們構造一個隱變數zn用來表示xn來自於哪個模型。也即,zn=k當且僅當xn來自於第k個伯努利模型。令Z={z1,,zn},則X,Z聯合分佈為:
p(X,Z|μ,π)=n=1Nπznp(xn|μzn).
M步我們要求解
maxμ,πZp(Z|X,μ¯,π¯)lnp(X,Z|μ,π)=n=1Nk=1Kp(