高斯混合模型

高斯混合模型(Gaussian Mixture Model)
高斯混合模型,通常簡稱GMM,是一種廣泛使用的聚類算法,它并不能直接返回該數(shù)據(jù)點屬于哪一簇。GMM使用了高斯分布作為模型參數(shù),用模型去逼近數(shù)據(jù)點分布,在實際計算過程中使用的是期望最大算法(EM, Expection Maximum)進(jìn)行訓(xùn)練。高斯分布,通常也叫正態(tài)分布,是自然界中最常見的分布形式。

對于任一高斯分布函數(shù),都有兩個參數(shù)μ和σ,其中μ為該組數(shù)據(jù)的均值,σ為該組數(shù)據(jù)的標(biāo)準(zhǔn)差,下式是高斯分布的密度函數(shù)。


probability density function.png

下圖展示了4組不同的高斯分布函數(shù),每一組分布的μ和σ是不同的。高斯分布的變量取值范圍為[-∞,+∞],所以任一高斯分布都能覆蓋我們所研究的變量,但由于其值域存在很大的差別,所以并不是任一高斯分布都能很好地擬合我們的變量分布。

gaussian mixture model.png

如下圖所示,是一堆分布在二維平面中的數(shù)據(jù)點,如我們所知,符合高斯分布的數(shù)據(jù)點在平面中呈橢圓形。對于下圖中的數(shù)據(jù)點,如果我們試圖用一個高斯分布去擬合圖中的數(shù)據(jù)點,顯然難以達(dá)到很好的效果。如圖所示,兩個高斯分布能夠較好地表示該數(shù)據(jù)點的分布,這樣有多個高斯分布組成的模型就稱為高斯混合模型(GMM)。GMM的概率密度函數(shù)如下,n表示高斯分布的數(shù)量,i表示第i個高斯分布,ai表示權(quán)重項,ai的和為1,f(x)表示數(shù)據(jù)x的在GMM中的概率值。


GMM sample.png

GMM probability density function.png

GMM API文檔

sklearn.mixture.GaussianMixture(n_components=1, covariance_type=’full’, tol=0.001, 
reg_covar=1e-06, max_iter=100, n_init=1, init_params=’kmeans’, weights_init=None, 
means_init=None, precisions_init=None, random_state=None, warm_start=False, verbose=0, verbose_interval=10)

主要參數(shù)說明:
n_componemts:高斯分布的數(shù)量,默認(rèn)值為1。
tol:收斂閾值,默認(rèn)值為0.001,當(dāng)參數(shù)的更新幅度小于0.001時,計算結(jié)束。
max_iter:最大迭代次數(shù),默認(rèn)值為100。

GMM聚類樣例演示:

import numpy as np
import pandas as pd
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.mixture import GaussianMixture

iris = datasets.load_iris()
feature = iris.data
X_train,X_test = train_test_split(feature,test_size = 0.3,random_state = 0)

gmm = GaussianMixture(n_components = 4)
gmm.fit(X_train)

#查看gmm算法的屬性值
gmm.weights_ #查看每一個高斯模型的權(quán)重
array([0.20759727, 0.32380952, 0.27900224, 0.18959097])

gmm.means_ #查看每個模型的均值
array([[6.2917223 , 2.83008261, 4.78898083, 1.60903809],
       [4.99411765, 3.38235294, 1.45294118, 0.23235294],
       [6.89262119, 3.09046877, 5.8014212 , 2.1089126 ],
       [5.52235889, 2.63598359, 3.93112818, 1.21291487]])

prediction = gmm.predict(X_test)
print(prediction)
array([2, 3, 1, 2, 1, 2, 1, 0, 0, 3, 2, 0, 3, 0, 0, 1, 0, 3, 1, 1, 0, 3,
       1, 1, 0, 1, 1, 0, 3, 1, 2, 3, 1, 0, 2, 3, 1, 0, 3, 3, 2, 1, 2, 1,
       1], dtype=int64)

GMM算法總結(jié):
1.GMM是聚類算法中的一種,它的模型參數(shù)為高斯分布f(x,μ,σ),通過模型去擬合數(shù)據(jù)的分布,以求得最佳參數(shù)。
2.GMM與Kmeans的區(qū)別,Kmeans是基于距離的聚類,主要應(yīng)用于線性可分的數(shù)據(jù)點,對于形狀復(fù)雜的數(shù)據(jù)點,聚類效果較差。GMM是基于高斯分布的模型,對于符合高斯分布的數(shù)據(jù)有著姣好的聚類效果。
3.GMM與DBSCAN的區(qū)別,對于一些不規(guī)則數(shù)據(jù)或者形狀復(fù)雜的數(shù)據(jù),DBSCAN的聚類效果更好。
4.在做機(jī)器學(xué)習(xí)任務(wù)時,我們也無法預(yù)先知道數(shù)據(jù)的分布形態(tài),只能通過多次調(diào)整聚類算法的參數(shù),比較其結(jié)果,并對比不同算法的聚類效果,選擇姣好的。

參考資料 :

  1. 一文詳解高斯混合模型原理,陳文運(yùn)|達(dá)觀數(shù)據(jù)CEO,https://www.ituring.com.cn/article/497545
  2. 數(shù)據(jù)挖掘理論與算法,袁博|清華大學(xué)深圳研究生院博士生導(dǎo)師,
    https://next.xuetangx.com/learn/THU08091000385/THU08091000385/1075998/video/714839

歡迎大家在閱讀的過程中,提出自己的意見或者建議,我會對不足之處做進(jìn)一步改進(jìn),謝謝。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容