GMM(Gaussian Mixture Model, 高斯混合模型)是指該算法由多個高斯模型線性疊加混合而成。每個高斯模型稱之為component。
GMM算法描述的是數據的本身存在的一種分布,即樣本特征屬性的分布,和預測值Y無關。顯然GMM算法是無監(jiān)督的算法,常用于聚類應用中,component的個數就可以認為是類別的數量。
回到昨天說的例子:隨機選擇1000名用戶,測量用戶的身高;若樣本中存在男性和女性,身高分別服從高斯分布N(μ1,σ1)和N(μ2,σ2)的分布,試估計參數:μ1,σ1,μ2,σ2;
1、如果明確的知道樣本的情況(即男性和女性數據是分開的),那么我們使用極大似然估計來估計這個參數值。
2、如果樣本是混合而成的,不能明確的區(qū)分開,那么就沒法直接使用極大似然估計來進行參數的估計。
我們可以認為當前的1000條數據組成的集X,是由兩個高斯分布疊加而成的(男性的分布和女性的分布)。
如果能找到一種辦法把每一個高斯分布對應的參數π、 μ、σ求出來,那么對應的模型就求解出來了。
如果模型求解出來后,如何對數據進行聚類?
這個公式求出來的分別是男性和女性身高分布的概率密度,如果把π、 μ、σ都求出來,以后我們可以構建出一個能夠根據樣本特征計算出樣本屬于男性或女性的可能性。
實際做樣本分類的時候,我們把樣本X的特征x1~xn分別代入兩個公式中,求出來的兩個結果分別是:樣本X的性別是男、是女的可能性。如果是男的可能性大于是女的可能性,我們就把樣本X歸入男性的分類。
假定GMM由k個Gaussian分布線性疊加而成,那么概率密度函數如下:
分析第1個等式:
p(x): 概率密度函數,k個Gaussian分布線性疊加而成的概率密度函數。
∑p(k)p(x|k): k個某種模型疊加的概率密度函數。
p(k): 每個模型占的權重,即上面提到的π。
p(x|k): 給定類別k后,對應的x的概率密度函數。
分析第2個等式:目標 - 將公式寫成高斯分布的樣子。
πk:即p(k)
p(x;μk,∑k):多元高斯(正態(tài))分布。有了觀測數據x后,在給定了條件下的高斯分布。這個條件是1、第k個分類的均值μk; 2、第k個分類的方差∑k;
深入分析p(x;μk,∑k)的參數:
如果樣本有n個特征,所有的特征x1~xn一起服從一個多元的高斯分布(正態(tài)分布),所有特征的均值應該是一個向量 (μ1~μn);
μk: 第k個分類的情況下(第k個高斯分布的情況下對應的每一列的均值);μk = (μk1~μkn)
∑k: 協方差矩陣(對稱陣)。現在有n個特征,協方差矩陣是一個n×n的矩陣。現在我們要算的是:
cov(x1,x1),cov(x1,x2),...,cov(x1,xn)
cov(x2,x1),cov(x2,x2),...,cov(x2,xn)
....
cov(xn,x1),cov(x1,x2),...,cov(xn,xn)
其中,對角線 cov(x1,x1)、cov(x2,x2), ... ,cov(xn,xn)中,x1和x1的協方差 = x1的方差;即cov(x1,x1) = var(x1);所以對角線上兩個特征的協方差 = 對應的特征的方差。
協方差(Covariance)在概率論和統計學中用于衡量兩個變量的總體誤差。而方差是協方差的一種特殊情況,即當兩個變量是相同的情況。
協方差表示的是兩個變量的總體的誤差,這與只表示一個變量誤差的方差不同。 如果兩個變量的變化趨勢一致,也就是說如果其中一個大于自身的期望值,另外一個也大于自身的期望值,那么兩個變量之間的協方差就是正值。 如果兩個變量的變化趨勢相反,即其中一個大于自身的期望值,另外一個卻小于自身的期望值,那么兩個變量之間的協方差就是負值。
理解了公式后,再來看看公式在圖像上是如何體現的:
如果樣本X只有一個特征x1,在二維的坐標系上的表示出來。特征x1是由n個單變量樣本的高斯分布疊加而成的。向量x1k = ∑k (x1(1),x1(2),~,x1(n)),如k=(男、女),累加男性分類下的特征高斯分布和女性分類下的高斯分布;
圖中紅色曲線表示原有數據的分布情況,我認為這個原有數據是由多個比較的高斯分布疊加而成的,藍色曲線 表示單個單個高斯分布的分布情況。向量x1 = (x1(1),x1(2),~,x1(n));
PS: 藍1+藍2=紅 體現的就是公式 p(x) = ∑πp(x;μ,∑k);
在得知數據的特征 x=(x1~xn) 后,如果我們想把數據合理得聚類到一個分類中,我們該如何去計算呢?
既然我已經得到了k個高斯分布對應的概率密度函數(現在設k=3,共3個分類),將當前特征的x=(x1~xn)代入我們的概率密度函數: p(x) = ∑πp(x;μ,∑k);
我們分別計算p(藍1)、p(藍2)、p(藍3),藍色三條線各對應k分類中的一個,哪個數大,我認為當前的樣本該分到哪一類。
GMM算法的兩個前提:
1、數據服從高斯分布;
2、我們人為定義了分類個數k。
基于這兩個前提,問題遞進:
問:我們人為假定了高斯分布的分類個數k,就類似于我們聚簇時分的聚簇中心個數一樣。參數π、μ、σ該如何求出來?
答:和K-Means算法一樣,我們可以用EM算法來求解這個問題。 GMM也滿足EM算法的聚類思想,首先人為得定義了聚類的個數k,從數據特征X中發(fā)掘潛在關系的一種模型。而且我還默認數據是服從多個高斯分布的。
GMM算法中的隱含條件是:第k個模型占的權重 - 、 第k個高斯分布的情況下對應的每一列的均值 -
、協方差矩陣 cov(xi,xj) -
;因為本質上我們是知道數據原有的分類狀況的,只是無法觀測到隱含在數據中的這些特性,使用EM的思想可以迭代得求解出這些隱含變量。
對聯合概率密度函數求對數似然函數:
對聯合概率密度函數求對數后,原本連乘的最大似然估計變成了連加的函數狀態(tài)。
EM算法求解 - E步:
套用公式后,我們可以假定隱含變量z的分布:Q(z(i) = j);
我們認為分布wj(i) = 第i個觀測值對應的隱含分類第z(i)類; = 以(看不見的參數π、μ、∑)為參數的情況下,輸入第i觀測值的特征x后得到的分類z(i)類;
EM算法求解 - M步:
M步第1行就是上一章通過化簡找到下界的那個函數:
如果要分別求解三個未知變量, 則需要對每一個未知變量求偏導。
1、對均值求偏導:
2、對方差求偏導:
3、對概率使用拉格朗日乘子法求解: