GMM既然可以做聚類,為什麼很多博客在介紹的時候大多集中在kmeans、密度聚類等演算法上?GMM做聚類有哪些劣勢和優勢?


為啥博客介紹的時候大多集中在Kmeans、密度聚類這些,而不是高斯混合模型(Gaussian Mixed Model):

大部分的教材和書籍都很少講高斯混合模型,如《數據挖掘導論》裏主要介紹Kmeans、凝聚式層次聚類和DBSCAN。

而大部分的博客都是在分享自己的學習經驗。

關於學習的成本,KMeans這些聚類方式理解起來還是很容易的[如:大話凝聚式層次聚類],另外,手動實現Kmeans也比GMM要方便多了,而且Kmeans、凝聚式層次聚類和DBSCAN已經能夠完成大部分人遇到的聚類問題。

GMM有兩個關鍵優勢:首先GMM比K-Means在羣協方面更靈活。由於標準偏差參數,集羣可以採取任何橢圓形狀,而不是限於圓形。K均值實際上是GMM的一個特例,其中每個羣的協方差在所有維上都接近0。其次,由於GMM使用概率,每個數據點可以有多個羣。因此,如果一個數據點位於兩個重疊的簇的中間,我們可以簡單地定義它的類,將其歸類為類1的概率為百分之x,類2的概率為百分之y。

如果要更深入的話,我們來看看幾種層次聚類的聚類過程:

Means聚類過程

DBSCAN演示

凝聚式層次聚類演示

然後現在我們來看看高斯混合模型(Gaussian Mixed Model)的聚類過程:

使用GMM的EM聚類演示

額,難以一眼就明白這是怎麼做成的吧。

首先我們說K-Means的主要缺點之一是其使用了集羣中心的平均值。 通過查看下面的圖片,我們可以明白為什麼這不是選取聚類中心的最佳方式。 在左側,人眼看起來非常明顯的是,有兩個半徑不同的圓形星團以相同的平均值為中心。K-Means無法處理這個問題,因為這些集羣的平均值非常接近。K-Means在集羣不是圓形的情況下也會出錯,這也是因為使用均值作為集羣中心的原因。

K-Means失敗的案例

高斯混合模型(GMMs)比K-Means更具靈活性。對於GMM,我們假設數據點是高斯分佈的。這是一個限制較少的假設,而不是用均值來表示它們是循環的。這樣,我們有兩個參數來描述羣集的形狀,均值和標準差。以二維數據為例,這意味著羣集可以採取任何類型的橢圓形(因為我們在x和y方向都有標準偏差)。 因此,每個高斯分佈被分配給單個集羣。

為了找到每個羣集的高斯參數(例如平均值和標準偏差),我們將使用期望最大化(EM)的優化演算法。 看看下面的圖表,作為適合羣集的高斯圖的例證。然後我們可以繼續進行使用GMM的期望最大化聚類過程

我們再來看看GMM的大致過程

  1. 我們首先選擇簇的數量(如K-Means)並隨機初始化每個簇的高斯分佈參數。人們可以嘗試通過快速查看數據來為初始參數提供良好的假設。請注意,這不是100%必要的,因為開始時高斯分佈化非常弱,但隨著演算法的運行很快就能得到優化。
  2. 給定每個羣集的這些高斯分佈,計算每個數據點屬於特定羣集的概率。一個點越接近高斯中心,它越可能屬於該羣。這應該是直觀的,因為對於高斯分佈,我們假設大部分數據更靠近集羣的中心。
  3. 基於這些概率,我們為高斯分佈計算一組新的參數,以便使集羣內數據點的概率最大化。我們使用數據點位置的加權和來計算這些新參數,其中權重是屬於該特定羣集中的數據點的概率。為了以可視化的方式解釋這一點,我們可以看看上面的圖片,特別是黃色的羣集。分佈從第一次迭代開始隨機開始,但我們可以看到大部分黃點都在該分佈的右側。當我們計算一個按概率加權的和時,即使中心附近有一些點,它們中的大部分都在右邊。因此,分配的均值自然會更接近這些點的集合。我們也可以看到,大部分要點都是「從右上到左下」。因此,標準偏差改變以創建更適合這些點的橢圓,以便最大化由概率加權的總和。
  4. 步驟2和3迭代地重複直到收斂,其中分佈從迭代到迭代的變化不大。

要好好地理解GMM,你還得去了解一下單高斯模型還有GMM參數的估計過程/(ㄒoㄒ)/~~Long way to go。


參考文獻

  1. Must Know! 數據科學家們必須知道的5種聚類演算法
  2. 數據挖掘導論
  3. 大話凝聚式層次聚類


優勢是聚類效果好,缺點是模型複雜,運算略慢。

同等時間下,kmeans速度快,原理簡單,雖然每次的結果存在隨機性,但是可以多取幾個結果,最後選擇obj最小的那次結果。還有一個原因是,能更好地與一些常見的降維方法契合。


推薦閱讀:
查看原文 >>
相關文章