基于软聚类的高斯混合数据聚类
这个例子展示了如何在混合高斯分布的模拟数据上实现软聚类。
集群
估计聚类成员的后验概率,然后将每个点分配给最大后验概率对应的聚类。软聚类是另一种聚类方法,它允许一些数据点属于多个聚类。实现软聚类:
为每个数据点分配一个集群成员分数,描述每个点与每个集群原型的相似程度。对于混合高斯分布,聚类原型是对应的分量均值,分量可以是估计的聚类隶属度后验概率。
根据它们的集群成员分数对这些点进行排序。
检查分数并确定集群成员。
对于使用后验概率作为分数的算法,一个数据点是对应于最大后验概率的聚类中的一个成员。但是,如果存在其他具有相应后验概率且接近最大值的聚类,则该数据点也可以是这些聚类的成员。在集群之前确定产生多个集群成员的分数的阈值是一种良好的实践。
这个例子来自基于硬聚类的高斯混合数据聚类.
模拟来自两个二元高斯分布的混合数据。
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”)
虽然在数据的散点图中很难看到明显的分离,但绘制隶属度分数表明拟合分布在将数据分组方面做得很好。
绘制数据并通过最大后验概率分配聚类。确定可能在任何一个聚类中的点。
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)举行从
使用得分阈值间隔,两个集群中可以有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
假设组件之间存在共享的对角线协方差,则任何一个集群中都可以有五个数据点。
对于每个集群:
对所有数据点的会员分数进行排序。
绘制每个数据点的成员资格分数,相对于所有其他数据点的排名。
[~,orderSharedDiag] = sort(PSharedDiag(:,1));图的阴谋(1:n, PSharedDiag (orderSharedDiag, 1),的r -,...1: n, PSharedDiag (orderSharedDiag, 2),“b -”)({传奇“集群1”《集群2》},“位置”,“东北”) ylabel (“集群成员分数”)包含(“点排名”)标题(“共用对角分量协方差的GMM”)
绘制数据并从GMM分析中确定硬的聚类分配,假设组件之间存在共享的对角线协方差。另外,确定那些可能在两个聚类中的数据点。
图gscatter (X (: 1), (:, 2), idxSharedDiag,rb的,' + o ', 5)在情节(X (idxBothSharedDiag, 1), X (idxBothSharedDiag, 2),“柯”,“MarkerSize”10)传奇({“集群1”,《集群2》,这两组患者的},“位置”,“东南”)标题(散点图-共享对角分量协方差的GMM)举行从