一个算法对于某个输入的循环次数是可以事先估计出来的_结合各路博客的EM算法理解...
本文主要是記錄個人對EM算法的理解,原料都是基于各路博客,這里對原文博主表示感謝。
Part 1:
第一個博客來自于 https://www.jianshu.com/p/1121509ac1dc 。基礎版本的EM算法不用多說,理解沒有難度。進階版花了我一些時間才理解到。
進階版的估計方法變成了對期望的計算,P1表示的是硬幣1出現正面的概率,P1計算方式可以為 P1=正面出現的次數/總共拋次數,也可以為 P1 = 正面出現次數的期望/總共拋出次數的期望,總共拋出次數的期又等于正面出現次數的期望+反面出現次數的期望。
正面拋出次數的期望 = 硬幣1被選中的概率*正面出現的次數,同理
反面出現次數的期望 = 硬幣1被選中的概率*反面出現的次數。
硬幣1被選中的概率就來自于原文中進階版的第二個表格。然后才有了第四個表格,從而得出P1的估計值。
有了P1后,就可以回過去重新計算進階版的第二個表格,然后再沿著這個步驟得出新的P1。
=================================================
Part 2:
第二個博客來自于 https://blog.csdn.net/zouxy09/article/details/8537620 。后面的公式推導沒有完全看懂,主要是用這個博客中的例子來理解使用EM算法對來自不同分布的數據點進行分類。
問題是有了一堆觀測點(分高),已知這些觀測點符合2種高斯分布(男/女),求這兩種高斯分布得參數。
隨機初始化這兩個高斯分布的參數theta1, theta2。用gauss密度函數得出每個樣本的概率P(xi|theta),這個P表示的是數據點xi在分布theta上的概率。
區分一個數據點是什么類別,在這里可以看成比較數據點xi在哪個分布上的概率更高,就將這個數據點標記為哪個類別(感覺就是generative model)。如果P(xi|theta1)>P(xi|theta2)那么xi就是男生,反之就是女生,如果出現相等的情況,就隨機選個類別。
現在問題是我們并不知道這兩個theta,那就不知道數據點對于的P,沒有P就沒辦法label data。于是我們就隨機兩個theta出來,標一輪數據,此時觀測到的數據點就有了標記,也就是被分成了男生女生。
然后通過被標為男生的數據點求出新的theta1,被標記為女生的數據點求出新的theta2. 求新的theta用同一類別點的聯合概率(實際上為了簡化計算是用對數聯合概率)求似然。但是最后化簡的結果就是所有點的平均。過程見 https://www.jiqizhixin.com/articles/2018-01-09-6
再用得到的新的參數再去分類數據點,然后繼續更新模型參數,直到收斂/人為停止。
這樣我們就實現了基礎版的EM算法來分類數據。
=================================================
Part 3:
進階版本的EM算法數據分類跟第一個博客中的思路一樣,采用期望的方式。我們這里將一個數據點判斷為有多少概率是男生,有多少概率是女生,而不再是用P(xi|theta1)>P(xi|theta2)那么xi就是男生,反之就是女生。仿照博客1中進階版本的表示
男生 女生
x1 75% 25%
x2 65% 35%
....
某個數據點在某個類別上的期望是,這個點取到這個類別的概率*這個數據點在這個類別上的概率 公式表示出來 P(cj|theta1)P(xi|cj;theta1),the first term 是數據點xi取到類別cj的概率,就是上表中某一行中男生/女生的數值,第二項是數據點在類別cj上的概率(gauss概率密度函數),上面表格每行的和為1(一個數據點總共就那么多類別),有多少類別這樣的公式就有多少,然后求和:
sum_{j}^{|c|}P(cj|theta1)P(xi|cj;theta1) 就得到數據點xi在所有類別上的期望。期望的本質是加權平均,期望越高,均值也就越高,某些任務下或者就可以理解成水平更高,所以我們希望在這里最大化這個期望。(不知道這里對于期望的理解,跟為什么要最大化期望的理解是否正確)
ps: 根據后面part4的理解,更新一下對這里的期望的理解。這里的期望表示的是數據點出現的最大概率,也就是說,我們希望得到的分布是讓該數據點最大可能的出現。這個數據點出現在分布1的概率是P(cj|theta1),在這個分布上這個點的概率是P(xi|cj;theta1) ,對所有類別求和之后就是數據點xi在所有分布上出現的期望了。我們自然是希望優化讓這個期望最大。
其他所有的數據點在所有類別上的期望就是在這個基礎上再求個和
sum_{i}^{n} sum_{j}^{|c|}P(cj|theta1)P(xi|cj;theta1)
我們的目標就是最大化這個formula。有幾個類別在這個formula中就有幾個theta,對相應的theta求偏導就可以得到新的theta,然后再重新計算對數據點在每個類別下可能的概率,循環往復。
=================================================
這里不理解的地方是,為什么有些文章里面將EM跟Bayes扯上關系,諸如
從最大似然估計開始,你需要打下的機器學習基石?www.jiqizhixin.com還有論文 Text Classification from Labeled and Unlabeled Documents using EM。
希望能得到指點。
================================================
Part 4:
對上面的問題,終于找到答案,在周志華的‘機器學習’一書中的高斯混合聚類中有很好的解釋。
對于一個數據點xi在某一個類別cj上的概率用Bayes公式表示出來就是:
P(cj|xi) = p(cj)*p(xi|cj)/p(xi)
p(cj)就是xi取到cj的概率,part3表格中某一行中(某一個數據),某一列(某個類別)的數值。
p(xi|cj)就是cj分布下的似然。
p(xi)是需要注意的地方,它是xi在所有類別上出現的概率,也就是在所有類別上的期望了,表示為:
sum_{j}^{|c|}p(cj)p(xi|cj)。
這樣一來通過Bayes公式,我們就能得到xi在cj上的概率,以此類推可以得到xi在所有類別上的概率。然后取概率最大的類別標記數據點xi。
總結來看,前面迷糊的問題的答案是Bayes在這里跟EM的關系是,先用EM尋找各個類別分布的參數,然后用Bayes來分類。
================================================
新問題,在part3優化后,就能得出來一個數據點在不同分布上的概率了,直接取概率最大的來標記xi不就完了,為啥還要整這個Bayes?
總結
以上是生活随笔為你收集整理的一个算法对于某个输入的循环次数是可以事先估计出来的_结合各路博客的EM算法理解...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python jit_Pyston是一个
- 下一篇: eos操作系统_如何基于EOS区块链发一