EM演算法和GMM演算法到底是個怎麼回事

2021-10-03 01:21:23 字數 3127 閱讀 6474

文章目錄

0.前言

1.e-m在解決什麼問題?(一句話概括em)

2.e-m是一種模型麼?

3.e-step和m-step分別指的是什麼?

4.e-m的優化目標是什麼?

5.e-m收斂麼,為什麼?

6.怎麼理解隱變數,對任意模型都可以引入隱變數麼?(隱變數的合理性)

7.如何理解gmm中的隱變數

8.怎麼理解gmm和e-m之間的關係?

9.gmm可以做什麼事情?

10.gmm和k-means之間有什麼聯絡?

參考文獻

原始碼0.前言

看過很多部落格「詳解em和gmm演算法」這之類的,也看過李航《統計學基礎》上的em和gmm,這裡總結一下幾個問題,如果以下問題可以解決,我覺得em演算法和gmm模型就理解的相當好了。本文章不做數學推導,主要從大體上理解演算法和模型(先弄懂演算法在幹什麼比一味的推理公式要好很多),文末會附加pdf裡邊有詳細的數學推導,當然你也可以參考其他部落格的推導。

1.e-m在解決什麼問題?(一句話概括em)

①e-m在解決資料缺失的引數估計問題,這裡缺失的引數就是所謂的隱變數。

②e-m在近似實現對觀測資料的極大似然估計(maximum likelihood estimation)

③當mle過程中存在 log-sum項,雖然很好求導,但是求解起來簡直懷疑人生,尤其是當資料量很大,模型比較複雜時,想死的心都有。

2.e-m是一種模型麼?

①sorry,如果你理解e-m為一種模型,那你從一開始就錯了,em只是用來解決問題的演算法,你也可以理解為一種框架。

②我舉個栗子,現在假如有一件事a,一般我們用方法b去解決,雖然b有時候很管用,但是在a變得比較複雜的時候,b就不行了,此時一位精神小伙走過來對b說:兄弟,讓一讓,我要開始裝x了,那麼這個小夥子就是em(a method that better than b)

3.e-step和m-step分別指的是什麼?

①e-step:expectation,就是求期望,關於誰呢,關於隱變數後驗分布的期望。

②m-step:maximazation最大化期望,求出引數

③e步和m步不斷迭代,直至收斂

④其實更深一步講,後驗分布一般求不出來,這就是為什麼有變分推斷的原因(本文不做說明,可以忽略)

4.e-m的優化目標是什麼?

從em解決了什麼問題出發,很容易知道em的優化目標是觀測資料的似然函式最大化,怎麼最大化,有個q函式的概念,不做解釋。

5.e-m收斂麼,為什麼?

答案是肯定的,這一塊不做解釋,因為有很多數學公式可以推導出來,具體參考李航《統計學基礎》。

6.怎麼理解隱變數,對任意模型都可以引入隱變數麼?(隱變數的合理性)

並不是所有模型都可以引入隱變數,這裡有兩個條件:

①:引入隱變數後一定要使問題求解變得簡單,隱變數可以理解為乙個輔助變數用來幫助我們解題

②隱變數引入後,一定要確保觀測資料的邊緣概率(marginal distribution)保持不變,這樣才合理。

③另外再說一點,隱變數引入後,資料可看作是由隱變數生成的,即z生成x,我們在下乙個問題中說明一下

7.如何理解gmm中的隱變數

①每乙個樣本都會對應乙個隱變數,這個隱變數是個離散型隨機變數。

②我們假設有k個gaussian分布混合,則某樣本對應的隱變數表示該樣本屬於某類高斯的概率,很明顯有隱變數有k個取值,先驗概率就等於對應的權重α

③權重α是根據樣本的比例來確定的

8.怎麼理解gmm和e-m之間的關係?

這個問題很關鍵,可以說gmm(guassian mixture model)應用了e-m框架來學習引數,就像問題二所描述的一樣

9.gmm可以做什麼事情?

gmm可以做聚類分析:我們學習到引數後,當有乙個新樣本來時,我們根據引數來做乙個計算,計算出該樣本屬於每乙個高斯分布的概率,選出最大的概率,對應的分布就是該樣本所歸屬的類,屬於soft-cluster

10.gmm和k-means之間有什麼聯絡?

gmm和k-mean的思想很像,不同的是,k-means是hard—cluster,而gmm是soft-cluster,要說誰更好,沒有絕對可言。

原始碼

import numpy as np

from sklearn.mixture import gaussianmixture as gm

from sklearn.datasets import make_blobs

import matplotlib.pyplot as plt

from collections import counter

# 獲取資料

np.random.seed(0)

data = make_blobs(n_samples=[80

,60,70

,140

],n_features=

2,centers=[[

1,1]

,[5,

5],[

6,1]

,[2,

8]],cluster_std=

1,center_box=(-

10,10)

)x = data[0]

#(290,2)

y = data[1]

#(290,)

#建模gm = gm(n_components=

4,random_state=0)

#建立高斯混合模型類的乙個物件

gm.fit(x)

#用資料擬合模型

#**&評估

prediction = gm.predict(x)

#對訓練集進行** (0-purple,1-blue,2-green,3-red)

accuracy =1-

(6.0

/len

(prediction)

)# 經過驗證,只有6個樣本被誤分類

print

('accuracy: '

,accuracy)12

3456

78910

1112

1314

1516

1718

1920

原始資料(data without label)

gmm聚類後

————————————————

104377623

EM演算法和GMM演算法

文章目錄 0.前言 1.e m在解決什麼問題?一句話概括em 2.e m是一種模型麼?3.e step和m step分別指的是什麼?4.e m的優化目標是什麼?5.e m收斂麼,為什麼?6.怎麼理解隱變數,對任意模型都可以引入隱變數麼?隱變數的合理性 7.如何理解gmm中的隱變數 8.怎麼理解gmm...

GMM與EM演算法(零)

聚類的方法有很多種,k means 要數最簡單的一種聚類方法了,其大致思想就是把資料分為多個堆,每個堆就是一類。每個堆都有乙個聚類中心 學習的結果就是獲得這 k個聚類中心 這個中心就是這個類中所有資料的均值,而這個堆中所有的點到該類的聚類中心都小於到其他類的聚類中心 分類的過程就是將未知資料對這 k...

混合高斯模型(GMM)與EM演算法

有乙個資料集d d d 中的每個資料點是這樣產生的,先從k個類別中選擇乙個類別,然後從該類別對應的資料產生分布中產生資料點。若k選1的對應的分布是multinoulli分布,每個類別對應的資料產生分布是不同的高斯分布,估計資料點x對應的分布。這個問題對應的模型就是乙個混合高斯模型,具體的資料產生過程...