主要内容

采用高斯混合模型的聚类

本主题介绍如何使用统计和机器学习工具箱™功能使用高斯混合模型(GMM)聚类集群,并举例说明在拟合GMM模型时指定可选参数的效果fitgmdist

高斯混合如何对聚类数据建模

高斯混合模型(GMMs)常用于数据聚类。您可以使用gmm来执行这两种操作聚类或对查询数据进行集群化。

执行聚类时,GMM将查询数据点分配给给定数据的多元正态成分,使成分后验概率最大化。也就是说,给定拟合的GMM,集群将查询数据分配给产生最高后验概率的组件。硬集群只将一个数据点分配给一个集群。有关演示如何将GMM拟合到数据、使用拟合模型聚类以及估计组件后验概率的示例,请参见基于硬聚类的高斯混合数据聚类

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

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

对于gmm,请遵循以下最佳实践:

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

  • 指定初始条件。期望最大化(EM)算法适合GMM。就像k-均值聚类算法,EM对初始条件敏感,可能收敛到局部最优。可以为参数指定自己的起始值、为数据点指定初始群集分配或随机选择数据点,或指定使用k——+ +算法

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

拟合不同协方差和初始条件下的GMM

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

加载费雪的虹膜数据集。考虑将萼片测量值聚类,并使用萼片测量值在2-D中可视化数据。

负载fisheriris;X = meas(:,1:2);[n,p] = size(X);情节(X (: 1) X (:, 2),“。”“MarkerSize”15);标题(“Fisher的虹膜数据集”);包含(“萼片长度(厘米)”);ylabel (“萼片宽度(厘米)”);

图中包含一个轴对象。标题为Fisher's Iris Data Set的axes对象包含一个类型为line的对象。

分量的数量k在一个GMM中决定了亚种群或簇的数量。在这个图中,很难确定两个、三个或者更多的高斯分量是合适的。GMM的复杂性随着k增加。

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

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

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

提高(3);K = 3;% GMM组件个数选项= statset(“麦克斯特”, 1000);

指定协方差结构选项。

σ = {“对角线”“全部”};%选择协方差矩阵类型西格玛=数字(西格玛);sharedco方差= {true,false};相同或不相同协方差矩阵的指示器SCtext = {“真正的”“假”};nSC =数字(sharedco方差);

创建一个二维网格,覆盖由极值测量组成的平面。稍后您将使用此网格在簇上绘制置信椭球。

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

指定以下内容:

  • 对于协方差结构选项的所有组合,拟合具有三个分量的GMM。

  • 使用拟合的GMM对二维网格进行聚类。

  • 获取为每个置信区域指定99%概率阈值的分数。这个规格决定了椭球的长轴和小轴的长度。

  • 为每个椭球上色,使用相似的颜色作为其簇。

阈值=√(chi2inv(0.99,2));Count = 1;i = 1:nSigmaj = 1:nSC gmfit = fitgmdist(X,k,“CovarianceType”σ{我},...“SharedCovariance”, SharedCovariance {j},“选项”、选择);%装配的GMMclusterX = cluster(gmfit,X);%聚类指数mahalDist = mahal(gmfit,X0);%从每个格点到每个GMM组件的距离在每个GMM组件上绘制椭球并显示聚类结果。次要情节(2,2,数);h1 = gscatter(X(:,1),X(:,2),clusterX);持有m = 1:k idx = mahalDist(:,m)<=threshold;颜色= h1(m)。颜色*0.75 - 0.5*(h1(m)。颜色- 1);h2 = plot(X0(idx,1),X0(idx,2),“。”“颜色”、颜色、“MarkerSize”1);uistack (h2,“底”);结束情节(gmfit.mu (: 1) gmfit.mu (:, 2),“kx”“线宽”2,“MarkerSize”10)标题(sprintf ('Sigma is %s\ nsharedco方差= %s'SCtextσ{我},{j}),“字形大小”8)传说(h1, {' 1 '' 2 '“3”})举行Count = Count + 1;结束结束

图中包含4个轴对象。坐标轴对象1的标题为Sigma is diagonal SharedCovariance = true包含7个类型为line的对象。这些物体代表1,2,3。坐标轴对象2,标题Sigma是对角线SharedCovariance = false包含7个类型为line的对象。这些物体代表1,2,3。坐标轴对象3的标题为Sigma is full SharedCovariance = true包含7个类型为line的对象。这些物体代表1,2,3。轴对象4与标题Sigma是完整的SharedCovariance = false包含7个对象的类型行。这些物体代表1,2,3。

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

  • 对角协方差矩阵表明预测因子是不相关的。椭圆的长轴和小轴平行或垂直于x而且y轴。该规范将参数总数增加 p ,每个分量的预测因子的数量,但比完整的协方差规范更简洁。

  • 全协方差矩阵允许相关的预测因子,而不限制椭圆相对于的方向x而且y轴。每个组件将参数的总数增加 p p + 1 / 2 ,但捕获了预测因子之间的相关结构。这种规格会导致过拟合。

  • 共享协方差矩阵表示所有分量具有相同的协方差矩阵。所有椭圆大小相同,方向相同。这个规范比非共享规范更简洁,因为参数的总数只随着一个组件的协方差参数的数量而增加。

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

图中也显示了这一点集群并不总是保持聚类顺序。如果你集群几个合适gmdistribution模型,集群可以为相似的组件分配不同的集群标签。

指定不同的初始条件

将GMM拟合到数据上的算法对初始条件很敏感。为了说明这种灵敏度,拟合四种不同的gmm如下:

  1. 对于第一个GMM,将大多数数据点分配给第一个集群。

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

  3. 对于第三个GMM,将数据点随机分配到集群。

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

initialCond1 = [ones(n-8,1);[2;2;2;2);[3;3;3;3]];%用于第一个GMMinitialCond2 = randsample(1:k,n,true);%用于第二个GMMinitialCond3 = randsample(1:k,n,true);%用于第三个GMMinitialCond4 =“+”%用于第四个GMMcluster0 = {initialCond1;initialCond2;initialCond3;initialCond4};

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

收敛= nan(4,1);j = 1:4 gmfit = fitgmdist(X,k,“CovarianceType”“全部”...“SharedCovariance”假的,“开始”, cluster0 {j},...“选项”、选择);clusterX = cluster(gmfit,X);%聚类指数mahalDist = mahal(gmfit,X0);%从每个格点到每个GMM组件的距离在每个GMM组件上绘制椭球并显示聚类结果。次要情节(2,2,j);h1 = gscatter(X(:,1),X(:,2),clusterX);%从每个格点到每个GMM组件的距离持有;nK =编号(唯一的(clusterX));m = 1:nK idx = mahalDist(:,m)<=阈值;颜色= h1(m).颜色*0.75 + -0.5*(h1(m)。颜色- 1);h2 = plot(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.收敛;收敛指标结束

图中包含4个轴对象。Axes对象1包含7个line类型的对象。这些物体代表1,2,3。Axes对象2包含7个line类型的对象。这些物体代表1,2,3。Axes对象3包含7个line类型的对象。这些物体代表1,2,3。Axes对象4包含7个line类型的对象。这些物体代表1,2,3。

总和(聚合)
Ans = 4

所有算法都收敛了。每个数据点的初始聚类分配都会导致不同的拟合聚类分配。您可以为名称-值对参数指定一个正整数复制,它将运行指定次数的算法。随后,fitgmdist选择产生最大可能性的匹配。

何时规范化

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

  • 预测因素比数据点多。

  • 你指定的配件太多了。

  • 变量是高度相关的。

方法指定一个小的正数来解决这个问题“RegularizationValue”名称-值对参数。fitgmdist将这个数字加到所有协方差矩阵的对角线元素上,确保所有矩阵都是正定的。正则化可以降低最大似然值。

模型拟合统计

在大多数应用程序中,指组件的数量k和适当的协方差结构Σ是未知的。调优GMM的一种方法是比较信息标准。两种流行的信息标准是赤池信息标准(AIC)和贝叶斯信息标准(BIC)。

AIC和BIC都采用优化的负对数似然,然后用模型中的参数数量(模型复杂性)对其进行惩罚。然而,BIC对复杂性的惩罚比AIC更严厉。因此,AIC倾向于选择可能过拟合的更复杂的模型,BIC倾向于选择可能欠拟合的更简单的模型。一个好的实践是在评估模型时同时考虑这两个标准。AIC或BIC值越低,拟合模型越好。此外,确保你的选择k协方差矩阵结构适合你的应用。fitgmdist存储匹配的AIC和BICgmdistribution在属性中建模对象另类投资会议而且BIC.您可以使用点表示法来访问这些属性。有关显示如何选择适当参数的示例,请参见调整高斯混合模型

另请参阅

||

相关的话题