高斯混合模型(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ù)。

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

如下圖所示,是一堆分布在二維平面中的數(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 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é)果,并對比不同算法的聚類效果,選擇姣好的。
參考資料 :
- 一文詳解高斯混合模型原理,陳文運(yùn)|達(dá)觀數(shù)據(jù)CEO,https://www.ituring.com.cn/article/497545
- 數(shù)據(jù)挖掘理論與算法,袁博|清華大學(xué)深圳研究生院博士生導(dǎo)師,
https://next.xuetangx.com/learn/THU08091000385/THU08091000385/1075998/video/714839
歡迎大家在閱讀的過程中,提出自己的意見或者建議,我會對不足之處做進(jìn)一步改進(jìn),謝謝。