主要内容

基于软聚类的高斯混合数据聚类

这个例子展示了如何在混合高斯分布的模拟数据上实现软聚类。

集群估计聚类成员的后验概率,然后将每个点分配给最大后验概率对应的聚类。软聚类是另一种聚类方法,它允许一些数据点属于多个聚类。实现软聚类:

  1. 为每个数据点分配一个集群成员分数,描述每个点与每个集群原型的相似程度。对于混合高斯分布,聚类原型是对应的分量均值,分量可以是估计的聚类隶属度后验概率。

  2. 根据它们的集群成员分数对这些点进行排序。

  3. 检查分数并确定集群成员。

对于使用后验概率作为分数的算法,一个数据点是对应于最大后验概率的聚类中的一个成员。但是,如果存在其他具有相应后验概率且接近最大值的聚类,则该数据点也可以是这些聚类的成员。在集群之前确定产生多个集群成员的分数的阈值是一种良好的实践。

这个例子来自基于硬聚类的高斯混合数据聚类

模拟来自两个二元高斯分布的混合数据。

rng (0,“旋风”%用于再现性Mu1 = [1 2];Sigma1 = [3 .2;2 2);Mu2 = [-1 -2];Sigma2 = [2 0;0 1];X = [mvnrnd(mu1, sigma1200);mvnrnd (mu2 sigma2,100)];

拟合双组分高斯混合模型。因为有两个组成部分,假设在区间[0.4,0.6]中任何具有聚类隶属度后验概率的数据点都可以是两个聚类的成员。

gm = fitgmdist(X,2);阈值= [0.4 0.6];

使用拟合的GMM估计所有数据点的后验概率通用汽车.这些表示集群成员分数。

P =后验(gm,X);

对于每个集群,对所有数据点的成员资格分数进行排序。对于每个聚类,绘制每个数据点的成员资格分数,以及它相对于所有其他数据点的排名。

n = size(X,1);[~,order] = sort(P(:,1));图的阴谋(1:n, P(订单,1),的r -1: n, P(订单,2),“b -”)({传奇“集群1”《集群2》}) ylabel (“集群成员分数”)包含(“点排名”)标题(“具有完全非共享协方差的GMM”

图中包含一个轴对象。带有完全未共享协方差的axis对象包含2个类型为line的对象。这些对象表示集群1、集群2。

虽然在数据的散点图中很难看到明显的分离,但绘制隶属度分数表明拟合分布在将数据分组方面做得很好。

绘制数据并通过最大后验概率分配聚类。确定可能在任何一个聚类中的点。

idx = cluster(gm,X);idxBoth =找到(P(: 1) > =阈值(1)& P(: 1) < =阈值(2));numInBoth =数字(idxBoth)
numInBoth = 7
图gscatter (X (: 1), (:, 2), idx,rb的' + o ', 5)情节(X (idxBoth, 1), X (idxBoth, 2),“柯”“MarkerSize”10)传奇({“集群1”《集群2》这两组患者的},“位置”“东南”)标题(散点图-具有完全非共享协方差的GMM)举行

图中包含一个轴对象。标题为散点图-具有完全非共享协方差的GMM的坐标轴对象包含3个类型为直线的对象。这些对象表示集群1、集群2、两个集群。

使用得分阈值间隔,两个集群中可以有7个数据点。

使用GMM的软聚类类似于模糊聚类k-表示聚类,它还为每个聚类分配一个成员分数。模糊k-means算法假设聚类大致为球形,且大小大致相等。这类似于一个高斯混合分布,其协方差矩阵在所有组件上共享,并且是单位矩阵的倍数。相比之下,gmdistribution允许您指定不同的协方差结构。默认情况下,为每个组件估计一个独立的、无约束的协方差矩阵。一个更受限的选择,更接近k-means,是估计一个共享的对角协方差矩阵。

拟合数据的GMM,但指定组件共享相同的对角协方差矩阵。该规范类似于实现fuzzyk-means聚类,但通过允许不同变量的不平等方差提供了更多的灵活性。

gmSharedDiag = fitgmdist(X,2,“CovType”“对角线”...“SharedCovariance”,真正的);

使用拟合的GMM估计所有数据点的后验概率gmSharedDiag.估算软集群分配。

[idxSharedDiag,~,PSharedDiag] = cluster(gmSharedDiag,X);idxBothSharedDiag = find(PSharedDiag(:,1)>=阈值(1)&...PSharedDiag(: 1) < =阈值(2));numInBoth = nummel (idxBothSharedDiag)
numInBoth = 5

假设组件之间存在共享的对角线协方差,则任何一个集群中都可以有五个数据点。

对于每个集群:

  1. 对所有数据点的会员分数进行排序。

  2. 绘制每个数据点的成员资格分数,相对于所有其他数据点的排名。

[~,orderSharedDiag] = sort(PSharedDiag(:,1));图的阴谋(1:n, PSharedDiag (orderSharedDiag, 1),的r -...1: n, PSharedDiag (orderSharedDiag, 2),“b -”)({传奇“集群1”《集群2》},“位置”“东北”) ylabel (“集群成员分数”)包含(“点排名”)标题(“共用对角分量协方差的GMM”

图中包含一个轴对象。带有共享对角线组件协方差的axis对象包含2个类型为line的对象。这些对象表示集群1、集群2。

绘制数据并从GMM分析中确定硬的聚类分配,假设组件之间存在共享的对角线协方差。另外,确定那些可能在两个聚类中的数据点。

图gscatter (X (: 1), (:, 2), idxSharedDiag,rb的' + o ', 5)情节(X (idxBothSharedDiag, 1), X (idxBothSharedDiag, 2),“柯”“MarkerSize”10)传奇({“集群1”《集群2》这两组患者的},“位置”“东南”)标题(散点图-共享对角分量协方差的GMM)举行

图中包含一个轴对象。轴对象的标题为散点图-共享对角分量协方差的GMM包含3个类型为直线的对象。这些对象表示集群1、集群2、两个集群。

另请参阅

||

相关的话题