EM Algorithm

Expectation Maximization Algorithm

EM算法和之前學(xué)的都不太一樣,EM算法更多的是一種思想筑凫,所以后面用幾個例子講解滓技,同時也會重點(diǎn)講解GMM高斯混合模型令漂。

①極大似然估計(jì)

極大似然估計(jì)這里面用的比較多荚孵。假設(shè)我們想要知道我們學(xué)生身高的分布收叶,首先先假設(shè)這些學(xué)生都是符合高斯分布N(μ, σ^2)我們要做的就是要估計(jì)這兩個參數(shù)到底是多少。學(xué)生這么多哆致,挨個挨個來肯定是不切實(shí)際的摊阀,所以自然就是抽樣了胞此。
為了統(tǒng)計(jì)學(xué)生身高,我們抽樣200個人組成樣本X = {x_1,x_2,x_3,x_4,...x_{200}}
我們需要估計(jì)的參數(shù)θ = [μ, σ]^T首先估計(jì)一下抽到這兩百人的概率一共是多少酣胀,抽到男生A的概率P(x_A|θ)抽到學(xué)生B的概率P(x_B|θ)所以同時抽到這兩個學(xué)生的概率就是P(x_A|θ) * P(x_B|θ)那么同時抽到這200個學(xué)生的G概率L(θ) = L(x_1,x_2,x_3...,x_200;θ) = \prod_{i=1}^{200}P(x_i|θ)
最后再取一個對數(shù)就好了:H(θ) = \sum_{i=1}^{200}InP(x_i|θ)

notation和log

上面有一條公式里面是同時存在了;和|,這兩個符號差別其實(shí)有點(diǎn)大的铆农。|一般我們是用來表示條件概率墩剖,比如P(x|θ)就是表示x在θ的條件下發(fā)生的概率涛碑。P(A|B) = \frac{P(A,B)}{P(B)}也是一個意思。
分號;表示的就是表示后面的是待估計(jì)的參數(shù)揉阎,也就是說P(x;θ)意思就是后面的θ是需要估計(jì)的參數(shù)而不是條件毙籽,所以|也有另一層意思烙如,如果不是表示條件概率亚铁,那么就是表示后面有待估計(jì)參數(shù)徘溢。
當(dāng)然是在|不表示條件概率的情況下。

這兩種表示法是源于兩種學(xué)派的不同理解:
頻率派認(rèn)為參數(shù)為固定的值曾雕,是指真實(shí)世界中剖张,參數(shù)值就是某個定值修械。
貝葉斯派認(rèn)為參數(shù)是隨機(jī)變量,是指取這個值是有一定概率的吨枉。當(dāng)然貌亭,無論是;還是|,他們都是表示條件概率的意思剧腻,只不過這兩個學(xué)派理解不一樣而已书在。
notation的問題解決了之后就是log的問題了栏账,為什么需要log化挡爵,講道理了讨,是不需要的。但是求log有這么幾個好處:
1.計(jì)算簡單男杈,累乘是很難計(jì)算的伶棒,log之后可以變換成累加肤无。
2.概率累乘是會出現(xiàn)數(shù)字非常小的情況,log之后就可以避免這種情況窥翩。
3.log之后函數(shù)的梯度方向是沒有變化的寇蚊,對于函數(shù)優(yōu)化的方向影響很小仗岸。

似然函數(shù)的執(zhí)行步驟:
1.得到似然函數(shù)
2.取對數(shù)整理
3.求導(dǎo)數(shù)右犹,另導(dǎo)數(shù)為零
4.解方程得到解

②Jensen不等式

首先引出凸函數(shù)的概念f(x)^{''} > 0那么就是凸函數(shù)念链,所以它的圖像就是一個勾形的掂墓,看起來是一個凹函數(shù),實(shí)際上是凸函數(shù)吃嘿。


凸函數(shù)的性質(zhì)很顯而易見了
E[f(x)] >= f(E(x))


其實(shí)很明顯的,看圖就知道了降瞳,E(x)其實(shí)就是a到b的平均值挣饥,上面的結(jié)論很容易證實(shí)。那么如果想要取到等號锹安,需要改變上面搓侄?取等號的意思就是相切,相切的意思就是a = b泊交,既然a = b了,那么x自然就是常數(shù)了云石,所以當(dāng)且僅當(dāng)
P(x = E(x)) == 1
如果是凹函數(shù),那么就是方向相反了宽菜。

③EM算法的推導(dǎo)

正常來看先是要引入一個最大似然函數(shù):L(θ) = \sum_{i=1}^{n}logP(x;θ)但這樣其實(shí)是和難求的铅乡,P(x|θ)完全混在了一起阵幸,根本求不出來,所以我們要引入一個輔助變量z咬腕。

隱變量Z

隱變量是觀測不到的涨共,比如做一個抽樣,從3個袋子里面抽取小球扒吁。而抽取這些小球的過程是不可見的魁索,抽取的過程其實(shí)就是隱變量粗蔚,而這些隱變量致扯,也就是過程可以告訴我們這個x是從哪個袋子來的抖僵,由此來區(qū)分耍群。這個隱變量和HMM里面的隱含序列不是一個東西,隱含序列是當(dāng)前x的狀態(tài)呻征,而不是抽取x的過程沐祷。所以在這里赖临,通俗點(diǎn)講兢榨,這個z就是用來找到x的組類的,也就是說z來告訴這個x你是屬于哪一組的吟逝。
另外需要注意的是块攒,隱變量是不可以隨便添加的囱井,添加隱變量之后不能影響邊緣概率。也就是說千扶,原來是P(x)澎羞,添加之后就是P(x,z)妆绞,那么必須有:P(x) = \int_zP(x, z){\rm dz}

所以我們引入隱變量的原因是為了轉(zhuǎn)化成和這幾個高斯模型相關(guān)的式子括饶,否則無從下手”钠化簡一下上式子:L(θ) = \sum_{i=1}^{n}logP(x;θ)=\sum_{i=1}^{n}log\sum_zP(x, z;θ)既然z可以指定x藤滥,那么我們只需要求解出z就好了拙绊。
注意上面凸函數(shù)所提到的一個期望性質(zhì)标沪,這里就可以使用了谨娜。因?yàn)殡m然優(yōu)化了上面的式子趴梢,還是不能求出來,因?yàn)閦變量實(shí)在是太抽象了彰阴,找不到一個合適的公式來表示它尿这。EM的一個方法就是用優(yōu)化下界函數(shù)的方法來達(dá)到優(yōu)化目標(biāo)函數(shù)的目的射众。
既然z很抽象典蜕,那么我們就需要一個轉(zhuǎn)變一下愉舔。對于每一個樣例x都會對應(yīng)一個z轩缤,那么假設(shè)一個分布Q(z)是滿足了z的分布的,而Q(z)滿足的條件是\sum_zQ_i(z) == 1,Q_i(z) > 0Qi意味著每一個x對應(yīng)的z都會對應(yīng)著一個Q了卫玖,這里有點(diǎn)復(fù)雜假瞬,再詳細(xì)解釋一下脱茉。一個x對應(yīng)一組z,z是一個向量溉躲,但是每一個z又會分別對應(yīng)一個一個分布Q锻梳。以為最后得到的z不會是一個數(shù)字疑枯,而是一個概率国章,也就是說Q(z)得到的是這個x樣例屬于這個類別的概率是多少你画。而z的數(shù)量适滓,一個是當(dāng)前有多少個分布混合在一起的數(shù)量。
再梳理一下:現(xiàn)在的樣本是xi撕彤,那么每一個xi將會對應(yīng)著一組的z麻蹋,每一個xi同時也會對應(yīng)著一個分布Qi专肪,z其實(shí)就是反應(yīng)了這個樣本是來自于哪個分布的。比如這個x是A1分布做了3咕晋,A2分布做了5质蕉,那么z可能就是={3,5}兑宇。所以Qi(z)得到的是這個x屬于這些個分布的概率,也就是說這些分布對x做了多少百分比的功,自然就是要等于1了。
還要注意的是,上面的\sum_zQ_i(z) = 1這個并不能得到Qi(z)就是分布對x做了多少功的結(jié)論,得到這個結(jié)論是后面下界函數(shù)與目標(biāo)函數(shù)相等得到的壹士。這里只是知道了總和等于1,因?yàn)槭欠植嫉目偤吐铩?/strong>
現(xiàn)在就到了公式的化簡:\sum_ilogP(x^{(i)};θ) = \sum_ilog\sum_{z^{(i)}}P(x^{(i)},z^{i};θ) = \sum_ilog\sum_{z^{(i)}}Q_i(z^{(i)})\frac{P(x^{i},z^{i};θ)}{Q_i(z^{(i)})}
仔細(xì)看一下這個式子\sum_zQ_i(z^{(i)})\frac{P(x^{i},z^{i};θ)}{Q_i(z^{(i)})}這個式子其實(shí)就是求\frac{P(x^{i},z^{i};θ)}{Q_i(z^{(i)})}的期望苞慢,假設(shè)\frac{P(x^{i},z^{i};θ)}{Q_i(z^{(i)})} = x辑畦,那么可以利用上面E[f(x)] >= f(E(x))潦刃。于是化簡:
\sum_ilog\sum_{z^{(i)}}Q_i(z^{(i)})\frac{P(x^{i},z^{i};θ)}{Q_i(z^{(i)})} >= \sum_i\sum_{z^{(i)}}Q_i(z^{(i)})log\frac{P(x^{i},z^{i};θ)}{Q_i(z^{(i)})}這個時候就得到了下界函數(shù)胧洒,上面也講過了肾砂,想要相等源葫,自然就是x要是常數(shù),所以\frac{P(x^{i},z^{i};θ)}{Q_i(z^{(i)})} = c既然\sum_zQ_i(z) = 1即硼,而且z也是一樣的,因?yàn)橐粋€樣本嘛僻澎。所以上下加和(如果是離散的窟勃,那就sum一下秉氧,連續(xù)的那就積分汁咏,這里是離散的攘滩,所以就是sum一下)漂问。于是有\frac{\sum_zP(x^i,z^i;θ)}{\sum_zQ_i(z^i)} = c
于是有:


所以Q(z)計(jì)算的是后驗(yàn)概率。計(jì)算在當(dāng)前參數(shù)θ和已經(jīng)抽樣到x的條件下勤哗,這個x是從z來的概率。其實(shí)就是z對x做了多少貢獻(xiàn)疮鲫。
所以整個EM算法步驟就很清晰了:

EM算法計(jì)算步驟:

E-step:
對于每一個x_i者祖,求Q_i^{(t)}(z) = P(z^i|x^i;θ^{(t)})
M-step:
θ = argmax_θ\sum_i\sum_{z^{(i)}}Q_i(z^i)log\frac{P(x^i,z^i;θ)}{Q_i(z^i)}
這時候就可以使用求導(dǎo)迭代的方法求解了。

這就是整一個EM算法的框架了皮仁,可以看到其實(shí)沒有比較具體的算法谣蠢,大致上就是一個框架册烈。那么問題來了,怎么樣證明這東西是一個收斂的巨坊?究珊?

證明EM算法的收斂性

既然是極大似然估計(jì)瞬浓,那么需要證明的自然就是L(θ^{t}) <= L(θ^{(t+1)})宪躯,也就是說極大似然估計(jì)要單調(diào)遞增精置。因?yàn)槊恳淮味际菢O大火欧,那么隨著時間增加霎俩,自然就是要增大的了。
當(dāng)給定一個θ^{(t)}的時候,相當(dāng)于t時間的EM算法進(jìn)行了E步了贷揽,所以有:
L(θ^{t}) = \sum_i\sum_{z^{(i)}}Q_i^{t}(z^i)log\frac{P(x^i,z^i;θ^{t})}{Q_i(z^i)}然后就走M(jìn)步,M步之前還沒有求最大,所以:L(θ^{(t+1)}) >= \sum_i\sum_{z^i}Q_i^{(t)}(z^i)log\frac{P(x^i,z^i;θ^{(t+1)})}{Q_i(z^i)}這一步有點(diǎn)復(fù)雜回还,這里是M-step了闻葵,θ^{(t+1)}是L(θ)求極大值得到的憎夷,而最重要的是L和后面下界函數(shù)的關(guān)系饮焦。這兩個東西是不相等的,下界函數(shù)等于目標(biāo)函數(shù)的條件是x為constant毯炮,x == constant意味著Q得求出來蛋叼,這里看這個Q貌似是出來了,但是這個Q是Q^t_i,是上一個時刻的匣吊,而不是這個時刻的淀歇,所以t+1時刻Q還沒有被固定住掸哑,也就是沒有滿足x == constant的條件琢岩,所以下界函數(shù)小于等于目標(biāo)函數(shù)拼坎。接下來就簡單了赂摆,直接把θ^{(t+1)}換成θ^{(t)}就好了逊朽。


這樣就證明了收斂性渐逃。

EM algorithm的優(yōu)化方法:

之前討論過舶衬,這種方法是迭代朵栖,使用極大似然估計(jì)和迭代的方法來進(jìn)行優(yōu)化坑质,但實(shí)際上這更像是一種坐標(biāo)上升的方法:


一次固定一個變量驻仅,對另外的求極值昧碉,最后逐步逼近極值今妄。對應(yīng)到EM上受神,E步:固定 θ排吴,優(yōu)化Q;M步:固定 Q缰儿,優(yōu)化 θ;交替將極值推向極大勺美。Kmeans也是這樣更新的叭喜,固定中心點(diǎn)着倾,優(yōu)化Ein;優(yōu)化完成泣棋,更新中心點(diǎn)修赞。SMO也是,固定α_{3-n}更新α1和α2荔泳。

④GMM的推導(dǎo)

可以直接把高斯混合模型代入EM框架里面沾鳄。
存在多個高斯分布混合生成了一堆數(shù)據(jù)X吞歼,取各個高斯分布的概率是φ_1,φ_2,φ_3,...糯俗,第i個高斯分布的均值是μ_i淘正,方差是σ惩淳,求法φ,μ含蓉,σ差油。
按照套路刃鳄,第一個E-step求出Q,于是有:w_j^{(i)} = Q_i(z^{(i)} = j) = P(z^{i} = j |x^i;φ,μ,Σ)
意思就是求出第i個樣本屬于第j個分布的概率是多少。之后就是M-step了伦忠,就是化簡了:
\sum_{i=1}^m\sum_{z^{(i)}}Q_i(z^{(i)})log\frac{p(x^i,z^i;φ,μ,Σ)}{Q_i(z^{(i)})}=\sum_{i=1}^m\sum_{j=1}^kQ_i(z^i = j)log\frac{P(x^i|z^i = j;μ,Σ)P(z^i = j;φ)}{Q_i(z^i = j)}
這里可能需要解釋一下,根據(jù)P(A|B) = P(AB)P(B)至于條件,因?yàn)楹苊黠@赋咽,z是隱變量旧噪,只是指明了x是屬于哪個類別,和μ脓匿,Σ沒有什么關(guān)系淘钟,所以直接忽略那兩個參數(shù)了,所以P(z)是沒有那兩個參數(shù)的陪毡,z是代表了分布米母,所以每一個分布的概率肯定是包括了,所以就只有一個概率的參數(shù)毡琉。P(x|z)是本身的概率铁瞒,就是已經(jīng)知道分布是那個了,求屬于這個分布的概率是多少桅滋,既然已經(jīng)選定了分布那么自然就不需要再看φ了慧耍,因?yàn)棣帐歉鱾€分布的概率。


之后就是求導(dǎo)數(shù)了:

導(dǎo)數(shù)等于0丐谋,于是有:
μ_j = \frac{\sum_{i=1}^mw_j^{(i)}x^{(i)}}{\sum_{i=1}^{m}w_j^{(i)}}
μ就出來了芍碧。
對于φ,那就簡單了笋鄙,實(shí)際上需要優(yōu)化的式子:
\sum_{i=1}^{m}\sum_{j=1}^{k}w_j^{i}logφ_j
求導(dǎo)等于0师枣。
要注意的是φ還有一個條件:
\sum_{j=1}^{k}φ_j = 1
。有條件萧落,那么問題來了践美,不能直接求導(dǎo),所以只能用拉格朗日乘子法求解找岖,于是構(gòu)造式子:
L(φ) = \sum_{i=1}^{m}\sum_{j=1}^{k}w_j^ilogφ_j + β(\sum_{j=1}^{k}φ_j - 1)

接著求導(dǎo)
\sum_{i=1}^{m}\frac{w_j^{(i)}}{φ_j}+β = 0
陨倡。于是得到
φ_j = \frac{\sum_{i=1}^{m}w_j^{i}}{-β}
,再改變一下许布,兩邊加和兴革,得到
\sum_{j=1}^{k}φ_j = \frac{\sum_{i=1}^{m}\sum_{j=1}^{k}w_j^{(i)}}{-β}
,這個就簡單了蜜唾,
\sum_{j=1}^{k}w_j^i = 1
杂曲,所以-β = m。那么:

Σ也是一樣:

這樣整個推導(dǎo)就算結(jié)束了袁余。

⑤硬幣模型

現(xiàn)在有兩個硬幣AB擎勘,進(jìn)行5次試驗(yàn)每一次投10次,并不知道是哪個硬幣投的颖榜,求兩種硬幣的正面的概率棚饵。
首先E-step:
首先先初始化一下煤裙,θ_A = 0.6,θ_B = 0.5
第一個試驗(yàn)選中A的概率:
P(z = A|x_1;θ) = \frac{P(z = A,x_1|θ)}{P(z = A,x_1|θ)+P(z = B,x_1|θ)} = \frac{(0.6)^5*(0.4)^5}{(0.6)^5*(0.4)^5 + (0.5)^{10}} = 0.45同樣求得P(z = B|x_1;θ) = 0.55
計(jì)算機(jī)出每一個試驗(yàn)的概率然后相加求均值。
之后就是M-step了:


μ_j
表示選擇了A的概率噪漾,
1-μ_j
表示選擇了B的概率硼砰。之后就是求導(dǎo)更新了。

⑥代碼實(shí)現(xiàn)

方差的求解就不玩了欣硼,主要就是迭代求解μ和φ的值了题翰。
首先是生成數(shù)據(jù),4個高斯分布分别,每一個高斯分布的sigma都是一樣的遍愿,不一樣的只有μ和α,也就是φ耘斩,習(xí)慣上把前面的一個參數(shù)叫做權(quán)值沼填,所以用α來表示。

def generate_data(sigma, N, mu1, mu2, mu3, mu4, alpha):
    global X
    X = np.zeros((N, 2))
    X = np.matrix(X)
    global mu
    mu = np.random.random((4, 2))
    mu = np.matrix(mu)
    global expect
    expect = np.zeros((N, 4))
    global alphas
    alphas = [0.25, 0.25, 0.25, 0.25]
    for i in range(N):
        if np.random.random(1) < 0.1:
            X[i, :] = np.random.multivariate_normal(mu1, sigma, 1)
        elif 0.1 <= np.random.random(1) < 0.3:
            X[i, :] = np.random.multivariate_normal(mu2, sigma, 1)
        elif 0.3 <= np.random.random(1) < 0.6:
            X[i, :] = np.random.multivariate_normal(mu3, sigma, 1)
        else:
            X[i, :] = np.random.multivariate_normal(mu4, sigma, 1)
    plt.title('Generator')
    plt.scatter(X[:, 0].tolist(), X[:, 1].tolist(), c = 'b')
    plt.xlabel('X')
    plt.ylabel('Y')
    plt.show()

這四個模型的比例分別是1:2:3:4括授,使用EM來找到他們屬于的類別坞笙。



其實(shí)如果用kmeans聚類的話更加快速,但是這里還是用EM荚虚。
E-step:

def e_step(sigma, k, N):
    global X
    global mu
    global expect
    global alphas
    for i in range(N):
        W = 0
        for j in range(k):
            W += alphas[j] * math.exp(-(X[i, :] - mu[j, :]) * sigma.I * np.transpose(X[i, :] - mu[j, :])) / np.sqrt(np.linalg.det(sigma))
        for j in range(k):
            w = math.exp(-(X[i, :] - mu[j, :]) * sigma.I * np.transpose(X[i, :] - mu[j, :])) / np.sqrt(np.linalg.det(sigma))
            expect[i, j] = alphas[j]*w/W
            pass

就是按照公式來求解w即可薛夜,求解每一個分布對樣本點(diǎn)做了多少的功,之后求單個樣本點(diǎn)求比例版述。
M-step:

def m_step(k, N):
    global expect
    global X
    global alphas
    for j in range(k):
        mathor = 0
        son = 0
        for i in range(N):
            son += expect[i, j]*X[i, :]
            mathor += expect[i, j]
        mu[j, :] = son / mathor
        alphas[j] = mathor / N

直接按照公式優(yōu)化即可梯澜。

if __name__ == '__main__':
    iterNum = 1000
    N = 500
    k = 4
    probility = np.zeros(N)
    mu1 = [5, 35]
    mu2 = [30, 40]
    mu3 = [20, 20]
    mu4 = [45, 15]
    sigma = np.matrix([[30, 0], [0, 30]])
    alpha = [0.1, 0.2, 0.3, 0.4]
    generate_data(sigma, N, mu1, mu2, mu3, mu4, alpha)
    for i in range(iterNum):
        print('iterNum : ', i)
        err = 0
        err_alpha = 0
        Old_mu = copy.deepcopy(mu)
        Old_alpha = copy.deepcopy(alphas)
        e_step(sigma, k, N)
        m_step(k, N)
        for z in range(k):
            err += (abs(Old_mu[z, 0] - mu[z, 0]) + abs(Old_mu[z, 1] - mu[z, 1]))
            err_alpha += abs(Old_alpha[z] - alphas[z])
        if (err <= 0.001) and (err_alpha < 0.001):
            print(err, err_alpha)
            break
    color = ['blue', 'red', 'yellow', 'green']
    markers  = ['<', 'x', 'o', '>']
    order = np.zeros(N)
    for i in range(N):
        for j in range(k):
            if expect[i, j] == max(expect[i, ]):
                order[i] = j
        plt.scatter(X[i, 0], X[i, 1], c = color[int(order[i])], alpha=0.5, marker=markers[int(order[i])])
    plt.show()
    print('standedμ:',mu4, mu3, mu2, mu1)
    print('standedα:',alpha)
    print('new μ:', mu)
    print('new α:',alphas)

運(yùn)行函數(shù)】饰觯看看結(jié)果:




結(jié)果其實(shí)還是相差不大晚伙。達(dá)到預(yù)期。

⑦EM的另一種理解方法

上面所講的其實(shí)只是一種理解方法俭茧,在李航老師的統(tǒng)計(jì)學(xué)習(xí)方法里面是另一種比較厲害的解法:
1.E-step:求出Q函數(shù)咆疗。
2.M-step:利用Q函數(shù)求極大值。

其實(shí)這兩種方法是完全一樣的母债,Q函數(shù)就是下界函數(shù)午磁,

這個公式和上面的:
是一樣的,至于為什么有下面這個Q_i(z^i)
這是李航老師書上的毡们,既然θ是已經(jīng)知道了迅皇,那么自然就可以去掉,因?yàn)樵趌og下面做分母就相當(dāng)于是常數(shù)了衙熔,拆開可以變減號嘛喧半,在前面的就不可以∏嘣穑回來看看我們剛剛推導(dǎo)的挺据,其實(shí)是一樣的,下面的那個Q確實(shí)可以去掉脖隶,因?yàn)槭鞘孪戎赖牧吮饽汀T谑褂肑ensen不等式的時候,需要假設(shè)隱變量服從某種形式的概率分布产阱,才可以將推導(dǎo)過程的一部分看成是期望的表達(dá)形式從而應(yīng)用Jensen不等式婉称。然而這個分布不是隨便指定的。我們令Jensen不等式取等號的時候构蹬,可以計(jì)算出這個分布其實(shí)就是:已知觀測數(shù)據(jù)的隱變量的后驗(yàn)概率分布王暗。由于求Q函數(shù)需要先求出隱變量的后驗(yàn)概率的期望,因此庄敛,這就可以解釋為什么EM算法的“通俗”理解角度的E步驟是求隱變量的期望了俗壹。有時候在用EM算法解決某個具體問題的時候,會發(fā)現(xiàn)M步驟極大化的居然是完全數(shù)據(jù)的對數(shù)似然函數(shù)藻烤。這是因?yàn)楸脸琎函數(shù)雖然是完全數(shù)據(jù)的對數(shù)似然函數(shù)的某種期望,但是求這個期望的過程有時其實(shí)就是將隱變量的后驗(yàn)概率的期望代入就可以了怖亭。因此涎显,本質(zhì)上我們其實(shí)還是在求Q函數(shù)的極大。

事實(shí)上兴猩,李航老師的Estep求出Q函數(shù)期吓,其實(shí)就是通俗理解里面的求出Q(z)并代入下界函數(shù)的過程。因?yàn)榍蟪鯭(z)就相當(dāng)于這個Q(z)被固定了倾芝,可以去掉了讨勤,于是就和李航老師的式子一樣了。有機(jī)會再補(bǔ)一些李航老師的推導(dǎo)蛀醉,勃大精深悬襟。

⑧總結(jié)

EM和Kmeans算法其實(shí)很類似,事實(shí)上步驟基本可以用EM框架來替換拯刁,但是Kmeans算法是硬分類脊岳,說一不二,但是EM算法不太一樣垛玻,是軟分類割捅,百分之幾是那個,百分之幾是這個帚桩。

缺點(diǎn)也還是有的:初值敏感亿驾,局部最優(yōu)。因?yàn)榇嬖诹穗[變量账嚎,所以導(dǎo)致了直接對x做極大似然是不可行的莫瞬,log已經(jīng)在sum的外面了儡蔓。所以EM算法就轉(zhuǎn)向了下界函數(shù),而這種方法本來就不保證找到局部最優(yōu)解疼邀。

如果將樣本看作觀察值喂江,潛在類別看作是隱藏變量,那么聚類問題也就是參數(shù)估計(jì)問題旁振。如果一個目標(biāo)函數(shù)存在多個變量获询,那么梯度下降牛頓法這些逼近方法就用不了了。但我們可以使用坐標(biāo)上升方法拐袜,固定一個變量吉嚣,對另外一個求導(dǎo)數(shù),然后替換最后逐步逼近極值點(diǎn)蹬铺。對應(yīng)到EM算法也是一樣尝哆,E步求隱含的z變量,Mstep求解其他參數(shù)丛塌。

最后符上GitHub代碼:

https://github.com/GreenArrow2017/MachineLearning/tree/master/MachineLearning/ExpectationMaximization

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末较解,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子赴邻,更是在濱河造成了極大的恐慌印衔,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件姥敛,死亡現(xiàn)場離奇詭異奸焙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)彤敛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門与帆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人墨榄,你說我怎么就攤上這事玄糟。” “怎么了袄秩?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵阵翎,是天一觀的道長。 經(jīng)常有香客問我之剧,道長郭卫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任背稼,我火速辦了婚禮贰军,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蟹肘。我一直安慰自己词疼,他們只是感情好俯树,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贰盗,像睡著了一般聘萨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上童太,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機(jī)與錄音胸完,去河邊找鬼书释。 笑死,一個胖子當(dāng)著我的面吹牛赊窥,可吹牛的內(nèi)容都是我干的爆惧。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锨能,長吁一口氣:“原來是場噩夢啊……” “哼扯再!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起址遇,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤熄阻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后倔约,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秃殉,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年浸剩,在試婚紗的時候發(fā)現(xiàn)自己被綠了钾军。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡绢要,死狀恐怖吏恭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情重罪,我是刑警寧澤樱哼,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蛆封,受9級特大地震影響唇礁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惨篱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一盏筐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧砸讳,春花似錦琢融、人聲如沸界牡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宿亡。三九已至,卻和暖如春纳令,著一層夾襖步出監(jiān)牢的瞬間挽荠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工平绩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留圈匆,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓捏雌,卻偏偏與公主長得像跃赚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子性湿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載 http://blog.csdn.net/zouxy09 EM算法是一種迭代算法纬傲,用于含有隱含變量的概率模型...
    Jlan閱讀 2,157評論 1 13
  • 以西瓜書為主線,以其他書籍作為參考進(jìn)行補(bǔ)充肤频,例如《統(tǒng)計(jì)學(xué)習(xí)方法》叹括,《PRML》等 第一章 緒論 1.2 基本術(shù)語 ...
    danielAck閱讀 4,519評論 0 6
  • 在天晴了的時候 在天晴了的時候 墻角的風(fēng)箏張望著 酵了一冬的情緒 趁風(fēng)而逃 在蔚藍(lán)映襯里四下招搖 在天晴了的時候 ...
    大俠小花卷閱讀 378評論 0 2
  • 很久很久很久以前的一個腦洞】 ——--------------------------—— 氣象臺新來了個實(shí)習(xí)生。...
    篤柿閱讀 654評論 1 8