文章目錄
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...