數據挖掘算法08 - EM

EM

EM 的英文是 Expectation Maximization,所以 EM 算法也叫最大期望算法。

例子

  • 分菜
  • 拋硬幣

EM 聚類三步驟

你能從這個例子中看到三個主要的步驟:初始化參數、觀察預期、重新估計。首先是先給每個碟子初始化一些菜量,然後再觀察預期,這兩個步驟實際上就是期望步驟(Expectation)。如果結果存在偏差就需要重新估計參數,這個就是最大化步驟(Maximization)。這兩個步驟加起來也就是 EM 算法的過程。

EM 算法的工作原理

說到 EM 算法,我們先來看一個概念“最大似然”,英文是 Maximum Likelihood,Likelihood 代表可能性,所以最大似然也就是最大可能性的意思。

  • 什麼是最大似然呢?

舉個例子,有一男一女兩個同學,現在要對他倆進行身高的比較,誰會更高呢?根據我們的經驗,相同年齡下男性的平均身高比女性的高一些,所以男同學高的可能性會很大。這裏運用的就是最大似然的概念。

  • 最大似然估計是什麼呢?

它指的就是一件事情已經發生了,然後反推更有可能是什麼因素造成的。還是用一男一女比較身高爲例,假設有一個人比另一個人高,反推他可能是男性。最大似然估計是一種通過已知結果,估計參數的方法。

  • 那麼 EM 算法是什麼?它和最大似然估計又有什麼關係呢?

EM 算法是一種求解最大似然估計的方法,通過觀測樣本,來找出樣本的模型參數

簡單總結下上面的步驟,你能看出 EM 算法中的 E 步驟就是通過舊的參數來計算隱藏變量。然後在 M 步驟中,通過得到的隱藏變量的結果來重新估計參數。直到參數不再發生變化,得到我們想要的結果。

EM 聚類的工作原理

上面你能看到 EM 算法最直接的應用就是求參數估計。如果我們把潛在類別當做隱藏變量,樣本看做觀察值,就可以把聚類問題轉化爲參數估計問題。這也就是 EM 聚類的原理。

總結

EM 算法相當於一個框架,你可以採用不同的模型來進行聚類,比如 GMM(高斯混合模型),或者 HMM(隱馬爾科夫模型)來進行聚類。GMM 是通過概率密度來進行聚類,聚成的類符合高斯分佈(正態分佈)。而 HMM 用到了馬爾可夫過程,在這個過程中,我們通過狀態轉移矩陣來計算狀態轉移的概率。HMM 在自然語言處理和語音識別領域中有廣泛的應用。

在 EM 這個框架中,E 步驟相當於是通過初始化的參數來估計隱含變量。M 步驟就是通過隱含變量反推來優化參數。最後通過 EM 步驟的迭代得到模型參數。

通過上面舉的炒菜的例子,你可以知道 EM 算法是一個不斷觀察和調整的過程。

通過求硬幣正面概率的例子,你可以理解如何通過初始化參數來求隱含數據的過程,以及再通過求得的隱含數據來優化參數。

通過上面 GMM 圖像聚類的例子,你可以知道很多 K-Means 解決不了的問題,EM 聚類是可以解決的。在 EM 框架中,我們將潛在類別當做隱藏變量,樣本看做觀察值,把聚類問題轉化爲參數估計問題,最終把樣本進行聚類。

EM 聚類的實戰,具體使用的是 GMM 高斯混合模型。從整個流程中可以看出,我們需要經過數據加載、數據探索、數據可視化、特徵選擇、GMM 聚類和結果分析等環節。

聚類和分類不一樣,聚類是無監督的學習方式,也就是我們沒有實際的結果可以進行比對,所以聚類的結果評估不像分類準確率一樣直觀,那麼有沒有聚類結果的評估方式呢?這裏我們可以採用 Calinski-Harabaz 指標。

指標分數越高,代表聚類效果越好,也就是相同類中的差異性小,不同類之間的差異性大。當然具體聚類的結果含義,我們需要人工來分析,也就是當這些數據被分成不同的類別之後,具體每個類表代表的含義。

另外聚類算法也可以作爲其他數據挖掘算法的預處理階段,這樣我們就可以將數據進行降維了

思考

用自己的話說一下 EM 算法的原理嗎?EM 聚類和 K-Means 聚類的相同和不同之處又有哪些?

想起了一個故事,摘葉子:要找到最大的葉子

  • 先心裏大概有一個葉子大小的概念(初始化模型)
  • 在三分之一的的路程上,觀察葉子大小,並修改對大小的評估(觀察預期,並修改參數)
  • 在三分之二的路程上,驗證自己對葉子大小模型的的評估(重複1,2過程)
  • 在最後的路程上,選擇最大的葉子(重複1.2,直到參數不再改變)

相同點

  • EM,KMEANS,都是隨機生成預期值,然後經過反覆調整,獲得最佳結果
  • 聚類個數清晰

不同點

  • EM是計算概率,KMeans是計算距離
  • 計算概率,概率只要不爲0,都有可能即樣本是每一個類別都有可能
  • 計算距離,只有近的票高,纔有可能,即樣本只能屬於一個類別

EM 就好像炒菜,做湯,鹽多了放水,味淡了再放鹽,直到合適爲止。然後,就能得出放鹽和水的比例(參數)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章