用高斯混合模型聚类

本主题提供了使用统计和机器学习工具箱™功能与高斯混合模型(GMM)进行聚类介绍集群,以及显示在拟合GMM模型时指定可选参数的效果的示例fitgmdist

高斯混合模型如何模拟集群数据

高斯混合模型(GMMS)通常用于数据聚类。您可以使用GMMS执行难的聚类或查询数据上的群集。

去表演难的聚类,GMM分配查询数据点给多元正态成分,最大的成分后验概率,给定的数据。也就是说,给定一个合适的GMM,集群将查询数据分配给产生最高后概率的组件。硬群集团将数据点分配到一个群集。有关如何使用拟合型号的GMM符合数据的示例,以及估算组件后续概率,请参阅使用硬群体群集高斯混合数据

此外,您可以使用GMM对数据执行更灵活的集群,称为(或模糊)聚类。软群集方法为每个群集分配给数据点的分数。分数的值表示数据点对群集的关联强度。与硬群集方法相反,软群集方法是灵活的,因为它们可以将数据点分配到多个群集。执行GMM群集时,分数是后验概率。有关GMM软群的示例,请参阅用软聚类方法聚类高斯混合数据

GMM群集可以容纳具有不同尺寸和相关结构的群集。因此,在某些应用中,GMM聚类可以比诸如的方法更合适k- eans集群。与许多聚类方法一样,GMM群集要求您在拟合模型之前指定群集数。群集数指定GMM中的组件数。

对于总经理,请遵循以下最佳实践:

  • 考虑组件协方差结构。您可以指定对角协方差矩阵或完全协方差矩阵,以及是否所有分量都有相同的协方差矩阵。

  • 指定初始条件。期望最大化(EM)算法符合GMM。就像在k- emeans聚类算法,EM对初始条件敏感,可能会收敛到本地最佳状态。您可以为参数指定自己的起始值,为数据点指定初始群集分配,也可以随机选择,或指定使用k-means ++算法

  • 实现正规化。例如,如果您的预测器多于数据点,那么您可以为估计稳定性进行正则化。

适合GMM具有不同的协方差选项和初始条件

本示例探讨在执行GMM聚类时为协方差结构和初始条件指定不同选项的效果。

装载Fisher的Iris数据集。考虑群集萼片测量,并使用Sepal测量来可视化2-D中的数据。

加载渔民;X = MEAS(:,1:2);[n,p] = size(x);plot(x(:,1),x(:,2),“。”,'Markersize'15);标题('fisher'的虹膜数据集');包含(“花萼长度(厘米)”);ylabel (萼片宽(cm)的);

组件数量k在GMM中确定子步骤或群集的数量。在该图中,难以确定两个,三个或可能更多高斯组件是合适的。GMM的复杂性增加k增加。

指定不同的协方差结构选项

每个高斯分量都有一个协方差矩阵。几何上,协方差结构决定了绘制在簇上的置信椭球的形状。您可以指定所有分量的协方差矩阵是对角的还是完整的,以及所有分量是否有相同的协方差矩阵。每种规格的组合决定了椭球体的形状和方向。

为EM算法指定三个GMM组件和1000个最大迭代。为了再现性,设置随机种子。

RNG(3);k = 3;%GMM组件数量选项= statset('maxiter',1000);

指定协方差结构选项。

sigma = {'对角线','满的'};Covariance矩阵类型的%选项nSigma =元素个数(σ);SharedCovariance ={真,假};%相同或非相同协方差矩阵的指标sctext = {'真的','错误的'};nSC =元素个数(SharedCovariance);

创建一个2-D网格,覆盖由极端测量的平面。稍后将使用此网格,以在集群上吸引信心椭圆体。

d = 500;%网格长度x1 = linspace(min(X(:,1))-2, max(X(:,1))+2, d));linspace(min(X(:,2))-2, max(X(:,2))+2, d));[x1grid, x2grid] = meshgrid (x1, x2);X0 = [x1grid(:) x2grid(:)];

指定以下:

  • 有关协方差结构选项的所有组合,请使用三个组件合适GMM。

  • 使用安装的GMM来聚类二维网格。

  • 获取指定每个置信区的99%概率阈值的分数。本说明书确定椭圆体的主要和次轴的长度。

  • 使用与其群集相似的颜色颜色为每个椭圆体。

阈值= SQRT(Chi2inv(0.99,2));count = 1;为了我= 1:nsigma为了j = 1:nsc gmfit = fitgmdist(x,k,“CovarianceType”,sigma {i},“SharedCovariance”, SharedCovariance {j},'选项'、选择);%合适的GMMclusterX =集群(gmfit X);%群集索引mahaldist =玛哈尔(Gmfit,X0);%从每个网格点到每个GMM组件的距离%在每个GMM组件上绘制椭圆体并显示聚类结果。子图(2,2,计数);h1 = g箭偶(x(:,1),x(:,2),clusterx);持有为了m = 1:k idx = mahaldist(:,m)<=阈值;颜色= H1(m).color * 0.75  -  0.5 *(H1(m).color  -  1);h2 =情节(X0 (idx, 1), X0 (idx, 2),“。”,'颜色'、颜色、'Markersize'1);uistack (h2,“底”);结尾情节(gmfit.mu (: 1) gmfit.mu (:, 2),“kx”,'行宽'2,'Markersize'10)标题(sprintf ('Sigma is %s\nSharedCovariance = %s'SCtextσ{我},{j}),'字体大小',8)传奇(H1,{' 1 ',' 2 ',“3”}) 抓住离开Count = Count + 1;结尾结尾

置信区的概率阈值确定主轴和次轴的长度,协方差类型确定轴的方向。请注意以下关于协方差矩阵的选项:

  • 对角协方差矩阵表明预测因素是不相关的。椭圆的长轴和短轴平行或垂直于椭圆xy轴。该规范将参数的总数增加了 p ,每个组件的预测器的数量,但是比完整的协方差规范更简洁。

  • 完整的协方差矩阵允许相关预测器,不限制相对于椭圆的方向xy轴。每个组件增加参数总数 p ( p + 1 ) / 2 ,但捕获预测器之间的相关结构。该规范可能导致过度装备。

  • 共享的协方差矩阵表明所有组件都具有相同的协方差矩阵。所有椭圆的尺寸都是相同的并且具有相同的方向。该规范比未共享规范更加解散,因为参数总数仅增加一个组件的协方差参数数量。

  • 非共享的协方差矩阵表明每个组件都有自己的协方差矩阵。所有椭圆的大小和方向可能不同。该规范增加了参数的数量k倍增组件的协方差参数的数量,但可以捕获组件之间的协方差差异。

该图还显示了这一点集群并不总是保留集群顺序。如果你筹集了几个GMDistribution.模型,集群可以为相似的组件分配不同的集群标签。

指定不同的初始条件

适合GMM到数据的算法可以对初始条件敏感。为了说明这种灵敏度,适合四种不同的GMM,如下所示:

  1. 对于第一个GMM,将大部分数据点分配给第一个簇。

  2. 对于第二个GMM,将数据点随机分配给集群。

  3. 对于第三种GMM,将数据点的另一个随机分配给集群。

  4. 对于第四个GMM,使用k-means ++获取初始集群中心。

initialcond1 = [(n-8,1);[2;2;2;2];[3;3;3;3];PREST GMM的%initialcond2 = randsample(1:k,n,true);第二种GMM的百分比initialCond3 = randsample (1: k, n,真的);第三种GMM的百分比initialcond4 ='加';%用于第四个GMMcluster0 = {initialCond1;initialcond2;initialCond3;initialCond4};

对于所有实例,使用k= 3个分量,未共享和完全协方差矩阵,相同的初始混合比例,相同的初始协方差矩阵。当你尝试不同的初始值集合时,为了稳定,增加EM算法的迭代次数。同时,在星团上画出置信椭球。

融合=南(4,1);为了j = 1:4 Gmfit = fitgmdist(x,k,“CovarianceType”,'满的',“SharedCovariance”,错误的,“开始”,cluster0 {j},'选项'、选择);clusterX =集群(gmfit X);%群集索引mahaldist =玛哈尔(Gmfit,X0);%从每个网格点到每个GMM组件的距离%在每个GMM组件上绘制椭圆体并显示聚类结果。子图(2,2,j);h1 = g箭偶(x(:,1),x(:,2),clusterx);%从每个网格点到每个GMM组件的距离持有;nk = numel(唯一(clusterx));为了m = 1:nK idx = mahalDist(:,m)<=阈值;Color = h1(m).Color*0.75 + -0.5*(m);颜色- 1);h2 =情节(X0 (idx, 1), X0 (idx, 2),“。”,'颜色'、颜色、'Markersize'1);uistack (h2,“底”);结尾情节(gmfit.mu (: 1) gmfit.mu (:, 2),“kx”,'行宽'2,'Markersize'10)传说(h1, {' 1 ',' 2 ',“3”});持有离开融合(j)= gmfit.converged;%收敛指标结尾

总和(融合)
ans = 4

所有算法融合。每个启动数据点的群集分配都会导致不同的拟合群集分配。您可以为名称值对参数指定正整数“复制”,运行算法指定的次数。随后,fitgmdist选择可能性最大的拟合。

什么时候调整

有时,在EM算法的迭代期间,拟合的协方差矩阵可能变成病理,这意味着可能性逃逸到无穷大。如果存在以下一个或多个条件,则会发生此问题:

  • 预测因素比数据点多。

  • 您可以使用太多组件指定拟合。

  • 变量是高度相关的。

要克服此问题,您可以使用该问题指定一个小型,正数'正规化值'名称-值对的论点。fitgmdist将此编号添加到所有协方差矩阵的对角线元素,这确保所有矩阵都是正定的。正规化可以降低最大的似然值。

模型拟合统计数据

在大多数应用程序中,组件的数量k和适当的协方差结构σ是未知的。一种方法可以通过比较信息标准来调整GMM。两个流行的信息标准是Akaike信息标准(AIC)和贝叶斯信息标准(BIC)。

AIC和BIC都采用优化的负记录,然后用模型中的参数数(模型复杂性)惩罚它。但是,BIC惩罚了比AIC更严重的复杂性。因此,AIC倾向于选择可能会过度装备的更复杂的模型,并且BIC倾向于选择可能贴在底部的更简单的模型。良好的做法是在评估模型时看看两个标准。降低AIC或BIC值表示更好的拟合模型。另外,确保您的选择k并且协方差矩阵结构适合您的应用程序。fitgmdist存储的AIC和BIC装配GMDistribution.在属性中建模对象AIC.BIC.。您可以使用点表示法访问这些属性。有关如何选择适当参数的示例,请参阅调谐高斯混合模型

另请参阅

||

相关话题