【機器學習】K-means聚類算法與EM算法


初始目的

  將樣本分成K個類,其實說白了就是求一個樣本例的隱含類別y,然后利用隱含類別將x歸類。由於我們事先不知道類別y,那么我們首先可以對每個樣例假定一個y吧,但是怎么知道假定的對不對呢?怎樣評價假定的好不好呢?

  我們使用樣本的極大似然估計來度量,這里就是x和y的聯合分布P(x,y)了。如果找到的y能夠使P(x,y)最大,那么我們找到的y就是樣例x的最佳類別了,x順手就聚類了。但是我們第一次指定的y不一定會讓P(x,y)最大,而且P(x,y)還依賴於其他未知參數,當然在給定y的情況下,我們可以調整其他參數讓P(x,y)最大。但是調整完參數后,我們發現有更好的y可以指定,那么我們重新指定y,然后再計算P(x,y)最大時的參數,反復迭代直至沒有更好的y可以指定。

這個過程有幾個難點:

  第一怎么假定y?是每個樣例硬指派一個y還是不同的y有不同的概率,概率如何度量。

  第二如何估計P(x,y),P(x,y)還可能依賴很多其他參數,如何調整里面的參數讓P(x,y)最大。

EM算法的思想

  E步就是估計隱含類別y的期望值,M步調整其他參數使得在給定類別y的情況下,極大似然估計P(x,y)能夠達到極大值。然后在其他參數確定的情況下,重新估計y,周而復始,直至收斂。

  從K-means里我們可以看出它其實就是EM的體現,E步是確定隱含類別變量clip_image024[6],M步更新其他參數clip_image018[9]來使J最小化。這里的隱含類別變量指定方法比較特殊,屬於硬指定,從k個類別中硬選出一個給樣例,而不是對每個類別賦予不同的概率。總體思想還是一個迭代優化過程,有目標函數,也有參數變量,只是多了個隱含變量,確定其他參數估計隱含變量,再確定隱含變量估計其他參數,直至目標函數最優。

      EM算法就是這樣,假設我們想估計知道A和B兩個參數,在開始狀態下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反過來知道了B也就得到了A。可以考慮首先賦予A某種初值,以此得到B的估計值,然后從B的當前值出發,重新估計A的取值,這個過程一直持續到收斂為止。

   EM的意思是“Expectation Maximization”在我們上面這個問題里面,我們是先隨便猜一下男生(身高)的正態分布的參數:如均值和方差是多少。例如男生的均值是1米7,方差是0.1米(當然了,剛開始肯定沒那么准),然后計算出每個人更可能屬於第一個還是第二個正態分布中的(例如,這個人的身高是1米8,那很明顯,他最大可能屬於男生的那個分布),這個是屬於Expectation一步。有了每個人的歸屬,或者說我們已經大概地按上面的方法將這200個人分為男生和女生兩部分,我們就可以根據之前說的最大似然那樣,通過這些被大概分為男生的n個人來重新估計第一個分布的參數,女生的那個分布同樣方法重新估計。這個是Maximization。然后,當我們更新了這兩個分布的時候,每一個屬於這兩個分布的概率又變了,那么我們就再需要調整E步……如此往復,直到參數基本不再發生變化為止。

http://blog.csdn.net/zouxy09/article/details/8537620


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM