EM演算法怎麼用在聚類上?
01-07
老師讓我把一篇文章中的K-mean演算法改成EM演算法再看看結果,我上網搜了一下EM演算法發現好複雜,誰能給簡單講講EM演算法用在聚類上是個什麼過程呀,謝謝~
不多談了,可見又是一篇灌水論文,一條很好的灌水路線是k-means -&> probabilistic model mixtures -&> infinite probabilistic model mixtures(DP) 或者 infinite k-means
1.EM為含隱變數的概率模型提供了一個通用的框架
2.而用於聚類的模型其實都是離散混合模型。有限混合或者無限混合(狄利克雷過程),離散混合模型一定是含有隱變數的。所以EM就可以用來求解了。你先選一個聚類模型。你的任務簡單,就沒得選GMM或者DPGMM。若任務複雜些,可以搞分層的,或者時序的。
然後用EM求解即可,求解過程中還會用到採樣或者變分,自己看想用哪個。在我看來 EM 是一個比較 general 的框架。E-step 就是求出你要的 loss function, M-step 則是把它最小化。這相當於一個 depth first 的搜索演算法。我不知道你的具體問題是什麼,不過如果你能搞明白你要求解的最優化問題是什麼,那麼我想用上 EM 應該不是難事。
EM是帶有隱含變數的模型最通用的優化方法,好比gradient descent之於線性回歸。
所以把K-means換成EM這句話本身就不對,因為K-means實際上用的就是EM的優化方法,只不過目標函數非常符合直覺,不懂EM的人也能聽懂K-means的流程。
可能的意思是把K-means換成Gaussian Mixture Model/Dirichlet Process/Hierarchical Dirichlet Process,等等
所以你就去找個GMM/DP的包然後去調用吧其實深入理解kmeans後,會發現它本來就是EM演算法。
高斯混合模型可以用來進行聚類,參數求解使用的是EM演算法。K-Means演算法的優化求解蠻簡單的,使用不到EM吧,或許是我見識少了。。。
EM演算法其實就是兩步,E步和M步,關鍵是要理解E和M是怎麼來的,代表什麼含義,以及為什麼這個過程會解決問題。思想很簡單,但是整個過程的概率推導其實很複雜。
Em演算法用於求解參數比較好,類似雞生蛋 蛋生雞的問題,反覆迭代。聚類方法就很多了。kmeans有時候會失敗,因為跟初始點選擇位置有關
樓主導師的意思估計就是用高斯混合模型替換k-means。scikit-learn庫裡面有現成寫好的函數可以調用。Matlab里也有,名字好像就是EM。
kmeans中的聚類類別相當於EM演算法中的隱含產量?請大神明示下哈
是模型聚類了吧,假設數據集中的數據點服從某種概率模型(例如很多人提到的高斯混合模型),一般是根據極大似然的準則,即在該概率模型的前提下生成該數據集的概率最大化。因為模型參數未知,數據點所屬簇也未知,所以利用EM演算法來進行參數估計。
用一下高斯混合模型吧,EM求解參數,非高斯模型大概也能使用EM,原來類似
請問如何證明Kmeans是EM演算法的特例
推薦閱讀:
※機器視覺需要學習哪些數學知識?
※圖像金字塔除了sift演算法之外還有什麼應用?
※ICCV2015 有什麼值得關注的亮點?
※模式識別中從Kernel方法的本質來看,是否真的有效?