混合高斯模型_机器学习——Gaussian Mixture Models高斯混合模型和聚类验证

Gaussian Mixture Models高斯混合模型和聚类验证

Created: Apr 24, 2020 4:56 PM

什么是高斯混合模型

高斯混合模型假定每个类都遵循特定的统计分布。

26e036ea118145c02bbf64dd90562dd9.png

一维高斯分布

4cf6a6a3cb6a965d23dbe790d53eada7.png

高斯混合模型

415a725f9ff93e82f2d7e1649a83ec97.png

二维高斯分布

EM 期望最大化算法

STEP #1 : 初始化K个高斯分布STEP #2 :将数据软聚类成我们初始化的两个高斯分布,这一步称为期望步骤或E步骤STEP #3 :基于软聚类重新估计高斯,这一步称为最大化步骤,M步骤STEP #4 :评估对数似然来检查收敛,如果收敛,那么返回结果。如果不收敛返回第二步重复执行,直到收敛

STEP #1 : 初始化K个高斯分布

初始化高斯分布,我们需要给均值和方差赋值,朴素的赋值方法是将他们设置成数据集的平均值,还有一种更好的方法是在数据集熵使用K均值,我们可以使用随机值

d313827e347bd8acbaa186cc42be1628.png

STEP #2 :将数据软聚类成我们初始化的两个高斯分布,这一步称为期望步骤或E步骤

我们可以将所有数据点带入公式中,计算出属于每个类的概率值。

b4edf047758d6985672c08db885f9cf2.png

STEP #3 :基于软聚类重新估计高斯,这一步称为最大化步骤,M步骤

将第二步计算得到的结果,来生成新的高斯分布的参数u

db6f5b668ecd33fd848c0a911357d46b.png

计算方差

d613bab2331709607df58054fc025a4f.png

STEP #4 :评估对数似然来检查收敛,如果收敛,那么返回结果。如果不收敛返回第二步重复执行,直到收敛

60b6932a459367847c0c4098442935ed.png

对数似然越高,我们越能确定生成的回合模型可以负责创建数据,或者说适合我们的数据集,所以我们需要最大化这个值。

优缺点

优点:

  • - 提供软聚类,比如在进行文档分类,并且希望每个文档都是多个主题,GMM很有用
  • - 外观很有灵活性,一个聚类可以包含另外一个

缺点:

  • - GMM聚类对初始化值很敏感
  • - 可能收敛到局部最优
  • - 收敛速度比较慢

高斯混合模型在传感器上的应用

61f0e0fc14fe75524c2e101a19a7756b.png
2dac57d2c52f3f7c783e14cf9b2c213c.png

聚类分析过程

700f9eec40487cc2e243627f71cd81b2.png

聚类评价

  • - 外部指标, 处理有标签数据时使用的评分
  • - 内部指标,没有标签,
  • - 相对指标,这些指标表明两个聚类结构中哪一个在某种意义上更好。

紧凑性

一个聚类中元素彼此之间的距离

可分性

不同聚类之间的距离

754a4dfc5e7d931bc0479457f169c9da.png
import numpy as npimport matplotlib.pyplot as pltfrom sklearn import cluster, datasets, mixturen_samples = 1000varied = datasets.make_blobs(n_samples=n_samples,cluster_std=[5, 1, 0.5],random_state=3)X, y = varied[0], varied[1]plt.figure( figsize=(16,12))plt.scatter(X[:,0], X[:,1], c=y, edgecolor='black', lw=1.5, s=100, cmap=plt.get_cmap('viridis'))plt.show()
791d610e37f790eab6a9a82b51438371.png
from sklearn.cluster import KMeanskmeans = KMeans(n_clusters=3)pred = kmeans.fit_predict(X)plt.figure( figsize=(16,12))plt.scatter(X[:,0], X[:,1], c=pred, edgecolor='black', lw=1.5, s=100, cmap=plt.get_cmap('viridis'))plt.show()
b802053dba7b18aa5fa8567421a21c0a.png
# TODO: Import GaussianMixturefrom sklearn.mixture import GaussianMixture# TODO: Create an instance of Gaussian Mixture with 3 componentsgmm = GaussianMixture(n_components=3).fit(X)# TODO: fit the datasetgmm = gmm.fit(X)# TODO: predict the clustering labels for the datasetpred_gmm = gmm.predict(X)# Plot the clustersplt.figure( figsize=(16,12))plt.scatter(X[:,0], X[:,1], c=pred_gmm, edgecolor='black', lw=1.5, s=100, cmap=plt.get_cmap('viridis'))plt.show()
9945f43cc28b7eae59b8c354bdc293ec.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值