通俗易懂讲透 GMM 高斯混合聚类

张开发
2026/4/14 19:28:58 15 分钟阅读

分享文章

通俗易懂讲透 GMM 高斯混合聚类
通俗易懂讲透 GMM 高斯混合聚类本科生/研究生都能看懂本文用大白话生活案例公式拆解完整代码可视化把 GMM高斯混合模型从原理、EM 算法、优缺点到实战讲得明明白白适合机器学习入门、面试复习、课程笔记。一、先搞懂GMM 到底是什么一句话定义GMM 用多个“钟形曲线高斯分布”去拟合数据按概率做软聚类的算法。和 K-Means 最大区别K-Means硬分组一个点只能属于一类GMM软分组一个点可以按概率属于多个类比如这个点 70% 属于A类30% 属于B类二、超通俗例子饮料分类你要把饮料分成两类气泡饮料可乐、雪碧果汁饮料橙汁、苹果汁用两个特征甜度气泡强度GMM 做的事假设两类饮料各自服从一个高斯分布钟形算出每瓶饮料属于哪一类的概率自动调整两个分布的中心、形状让数据拟合最好三、GMM 核心思想3 句话数据是由K 个高斯分布混合生成的每个簇 一个高斯分布均值 协方差用EM 算法迭代求解先算概率再更新分布四、GMM 最关键的 3 个参数对每个高斯分布 kπ_k权重这个簇占多少比例μ_k均值中心位置Σ_k协方差矩阵形状、方向、胖瘦五、EM 算法是什么最简单解释GMM 用 EM 算法训练只做两件事1. E 步Expectation算每个点属于每个簇的概率叫责任度 γ2. M 步Maximization用这些概率重新估计 μ、Σ、π不断循环直到分布不再变化。六、核心公式看懂就行1. 单个高斯分布P ( x ) 1 ( 2 π ) d / 2 ∣ Σ ∣ 1 / 2 exp ⁡ ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) P(x) \frac{1}{(2\pi)^{d/2}|\Sigma|^{1/2}} \exp\left(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)\right)P(x)(2π)d/2∣Σ∣1/21​exp(−21​(x−μ)TΣ−1(x−μ))2. 混合分布P ( x ) ∑ k 1 K π k ⋅ P ( x ∣ μ k , Σ k ) P(x) \sum_{k1}^K \pi_k \cdot P(x|\mu_k,\Sigma_k)P(x)k1∑K​πk​⋅P(x∣μk​,Σk​)3. 责任度E 步γ i k π k P ( x i ∣ μ k , Σ k ) ∑ j π j P ( x i ∣ μ j , Σ j ) \gamma_{ik} \frac{\pi_k P(x_i|\mu_k,\Sigma_k)}{\sum_j \pi_j P(x_i|\mu_j,\Sigma_j)}γik​∑j​πj​P(xi​∣μj​,Σj​)πk​P(xi​∣μk​,Σk​)​4. M 步更新μ k ∑ γ i k x i ∑ γ i k \mu_k \frac{\sum \gamma_{ik}x_i}{\sum \gamma_{ik}}μk​∑γik​∑γik​xi​​Σ k ∑ γ i k ( x i − μ k ) ( x i − μ k ) T ∑ γ i k \Sigma_k \frac{\sum \gamma_{ik}(x_i-\mu_k)(x_i-\mu_k)^T}{\sum \gamma_{ik}}Σk​∑γik​∑γik​(xi​−μk​)(xi​−μk​)T​π k ∑ γ i k N \pi_k \frac{\sum \gamma_{ik}}{N}πk​N∑γik​​七、代码实战GMM 图像分割超炫酷直接复制可运行包含图片加载GMM 聚类分割软概率图输出自定义色彩图importnumpyasnpimportmatplotlib.pyplotaspltfromsklearn.mixtureimportGaussianMixturefromskimageimportiofrommatplotlib.colorsimportListedColormap# 1. 加载图片 image_urlhttps://upload.wikimedia.org/wikipedia/commons/thumb/a/a9/Example.jpg/800px-Example.jpgimageio.imread(image_url)plt.figure(figsize(8,8))plt.imshow(image)plt.title(原始图片)plt.axis(off)plt.show()# 2. 展平像素 h,w,_image.shape pixelsimage.reshape(-,3)# 3. GMM 聚类 n_components4gmmGaussianMixture(n_componentsn_components,random_state42)labelsgmm.fit_predict(pixels)# 4. 分割结果 seg_imglabels.reshape(h,w)custom_cmapListedColormap([#FF5733,#33FF57,#3357FF,#FFD700])plt.figure(figsize(8,8))plt.imshow(seg_img,cmapcustom_cmap)plt.title(GMM 图像分割结果)plt.axis(off)plt.show()# 5. 软概率图 probagmm.predict_proba(pixels)[:,0].reshape(h,w)plt.figure(figsize(8,8))plt.imshow(proba,cmapplasma)plt.title(第1类概率热力图)plt.axis(off)plt.show()八、GMM 优点面试必背软聚类输出概率边界更自然能拟合任意形状簇椭圆、长条、斜向生成式模型可做密度估计、异常检测能捕捉特征相关性协方差矩阵高维数据友好九、GMM 缺点必须指定 K簇数量对初始化敏感比 K-Means 慢假设数据服从高斯分布容易局部最优十、GMM vs K-Means速记表特点K-MeansGMM聚类方式硬分类软分类概率簇形状球形任意椭圆/方向输出标签概率速度快较慢初始化敏感更敏感高维一般较好十一、什么时候用 GMM✅适合簇是椭圆形、斜向、非球形需要概率输出数据近似高斯分布图像分割、异常检测、密度估计❌不适合追求超快速度数据完全不符合高斯分布完全不知道 K 是多少十二、一句话总结GMM 是基于高斯混合的概率软聚类算法用 EM 算法迭代拟合多个钟形分布能处理任意形状簇是机器学习最经典的聚类模型之一。

更多文章