對於高斯混合模型是干什么的呢?它解決什么樣的問題呢?它常用在非監督學習中,意思就是我們的訓練樣本集合只有數據,沒有標簽。
它用來解決這樣的問題:我們有一堆的訓練樣本,這些樣本可以一共分為K類,用z(i)表示。,但是具體樣本屬於哪類我們並不知道,現在我們需要建立一個模型來描述這個訓練樣本的分布。這時, 我們就可以用高斯混合模型來進行描述。
怎么入手呢?
高斯混合模型:
我們這么想,因為樣本集合潛在地是可以分為K類的,用z(i)表示第 i 樣本所屬的類別,所以z(i) 的范圍為從1至 K。對於我們可以用z(i)多項式分布模型來描述它的分布。然后呢,對於屬於潛同一個類別內的樣本,假設它們服從高斯分布(這和高斯判別模型有點類似的)。然后呢,假設我們創建了一個模型哈(其實它就是我們要講的高斯混合模型),然后,我們呢,我們表示一個樣本x(i) 的分布在這個模型下可以用概率表示為:
(注意:對於上式中的多元正態分布與多項式分布如果不太了解,可以看一個我 之前寫的高斯判別分析模型與Logistic 分類器與 softmax分類器,里面有寫到)
然后,我們寫出它的擬然函數,如下所示:
雖然通過上面的分析,我們可以寫出相應的公式來,但是呢,很難去求解啊。那怎么辦??
注意下面我們先假設哈:如果我們假設我們已經知道了我們所求的樣本x(i) 所屬於的類別為的 z(i) 話,那么問題就會變得很簡單了,此時,擬然函數可以變為了這樣:
此時,通過類似高斯判別分析模型中的方法,我們最大化擬然函數,我們可以得到相關參數和值可以表示為:
(上面的式子很容易理解的吧,其實就是用頻率來估計它們的期望。)
利用EM算法求解。
下面我們要做的就是利用EM算法,按照我們假設的思路來求。具體為:
重復下面的過程,直到收斂:{
E-step:
M-setp:
}
什么意思呢?其實第一個步驟E-step中,我們要做的就是估計訓練集合中每一個樣本屬於每一個類別的概率的大小.怎么求呢,我們可以用下面公式:
第二個步驟中,會想為什么要這么更新參數值呢?
其實想想很簡單:如果把它和 K-means的聚類算法作比較,我們做發現是這樣的,在K-means的聚類算法我們已經明確指定了一個樣本所屬於的類別,而這里呢,我們沒有明確去指定,而是都過概率的形式來指明的。所以,在更新參數時,我們通過概率對所以樣本進行加權了,概率表示了該樣本屬於第 j 類別的可能性的大小,加權目的就是在計算該類別的高斯分布的參數時,指定不同的樣本占有的比重不一樣,屬於該類別概率越大的樣本占的權值越大。
最后說明的是,這樣EM算法是收斂的,另外,它也存在局部極值的問題,所以呢, 我們可以通過多次不同的初始化值來解決哦。