EM演算法和GMM演算法

2021-10-03 00:27:32 字數 3086 閱讀 7896

文章目錄

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聚類後

GMM與EM演算法(零)

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

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

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

機器學習 高斯混合模型GMM和EM演算法

高斯混合模型就是用高斯 概率密度函式 正態分佈 曲線 精確地量化事物,它是乙個將事物分解為若干的基於高斯概率密度函式 正態分佈曲線 形成的模型。高斯混合模型 gmm 顧名思義,就是資料可以看作是從數個單高斯分布 gsm 中生成出來的。雖然我們可以用不同的分布來隨意地構造 xx mixture mod...