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

2021-09-20 10:36:58 字數 1671 閱讀 1056

有乙個資料集d

=d=\

d=中的每個資料點是這樣產生的,先從k個類別中選擇乙個類別,然後從該類別對應的資料產生分布中產生資料點。若k選1的對應的分布是multinoulli分布,每個類別對應的資料產生分布是不同的高斯分布,估計資料點x對應的分布。

這個問題對應的模型就是乙個混合高斯模型,具體的資料產生過程如下:

我們引入了隱變數z, 假設模型的引數跟圖中的定義一樣,我們可以得到:

p (x

∣α,μ

,σ)=

∑k=1

kαkn

(x∣μ

k,σk

),其中

∑kαk

=1p(x | \alpha, \mu, \sigma) = \sum_^ \alpha_k \mathrm(x | \mu_k, \sigma_k), \quad \quad 其中\sum_k \alpha_k = 1

p(x∣α,

μ,σ)

=k=1

∑k​α

k​n(

x∣μk

​,σk

​),其

中k∑​

αk​=

1這就是混合高斯模型對應的觀察資料概率分布,它是乙個無監督模型的聚類模型,每個類別對應的後驗分量

γ k=

αkn(

x∣μk

,σk)

∑k=1

kαkn

(x∣μ

k,σk

)\gamma_k = \frac(x | \mu_k, \sigma_k)}^ \alpha_k \mathrm(x | \mu_k, \sigma_k)}

γk​=∑k

=1k​

αk​n

(x∣μ

k​,σ

k​)α

k​n(

x∣μk

​,σk

​)​

表示該點屬於某個類別的概率,要想得到某個點對應的分量,我們必須先根據資料集估計出模型引數θ

=\theta = \

θ=,這就是上面問題的目標。

要估計出模型引數,對於含隱變數的無監督模型,絕大部分情況下都是用em演算法求解。

e步(e-step)

其中m時資料點的維度。

e步就是在老的引數的基礎上求出隱藏資料集的分布,並計算聯合變數分布對數的期望。

m步 (m-step)

m步時最大化e步期望,獲得新的引數。

require: 資料集d,類別數k。

step 1: 初始化引數α, μ, σ;

step 2: 執行e步,獲得eγik, enk;

step 3: 執行m步,更新α, μ, σ;

step 4: 重複e步和m步,知道f收斂或者α, μ, σ收斂。

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

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

GMM混合高斯模型的EM演算法及Python實現

1.演算法理論p x kk 1 kn x k k n x k k 1 2 d k exp 12 xi k t 1k xi k kk 1 k 1 用極大似然法處理問題 輸入 i 1 n 最小化 e k,k,k ni 1 log p xi ni 1l og kk 1 1 2 d k e xp 12 x ...

高斯混合模型與EM演算法

對於高斯混合模型是幹什麼的呢?它解決什麼樣的問題呢?它常用在非監督學習中,意思就是我們的訓練樣本集合只有資料,沒有標籤。它用來解決這樣的問題 我們有一堆的訓練樣本,這些樣本可以一共分為k類,用z i 表示。但是具體樣本屬於哪類我們並不知道,現在我們需要建立乙個模型來描述這個訓練樣本的分布。這時,我們...