如何解释剪影图的平均值?

机器算法验证 数据可视化 聚类 matlab
2022-01-17 11:54:56

我试图使用剪影图来确定我的数据集中的集群数量。给定数据集Train,我使用了以下 matlab 代码

Train_data = full(Train);  
Result = [];  
for num_of_cluster = 1:20  
    centroid = kmeans(Train_data,num_of_cluster,'distance','sqeuclid');  
    s = silhouette(Train_data,centroid,'sqeuclid');  
    Result = [ Result; num_of_cluster mean(s)];  
end  
plot( Result(:,1),Result(:,2),'r*-.');`

下面给出了结果图,其中 xaxis 作为集群数, yaxis mean of silhouette value

我如何解释这个图表?我如何确定集群的数量?

在此处输入图像描述

4个回答

Sergey 的回答包含关键点,即轮廓系数量化了所达到的聚类质量——因此您应该选择使轮廓系数最大化的聚类数量。


长答案是,评估集群工作结果的最佳方法是从实际检查——人工检查——形成的集群开始,并根据对数据代表什么、集群代表什么的理解做出决定,以及集群的目的是什么。

有许多评估聚类结果的定量方法应该用作工具,并充分了解其局限性。它们在本质上往往相当直观,因此具有自然的吸引力(就像一般的聚类问题一样)。

示例:集群质量/半径/密度,集群之间的凝聚力或分离度等。这些概念经常结合使用,例如,如果集群成功,分离与凝聚力的比率应该很大。

测量聚类的方式取决于所使用的聚类算法的类型。例如,测量完整聚类算法的质量(其中所有点都被放入聚类)可能与测量基于阈值的模糊聚类算法的质量(其中某些点可能未聚类为“噪声”)非常不同)。


轮廓系数就是这样一种度量。它的工作原理如下:

对于每个点 p,首先求 p 与同一簇中所有其他点之间的平均距离(这是内聚度的度量,称为 A)。然后找到 p 和最近聚类中所有点之间的平均距离(这是与最近的其他聚类分离的度量,称为 B)。p 的轮廓系数定义为 B 和 A 之间的差除以两者中的较大者 (max(A,B))。

我们评估每个点的聚类系数,从中我们可以获得“整体”平均聚类系数。

直观地说,我们正在尝试测量集群之间的空间。如果集群内聚性好(A 小)且集群分离度好(B 大),则分子会很大,以此类推。

我在这里构建了一个示例来以图形方式演示这一点。

聚类系数 nclusters 的聚类结果 = 2:5

在这些图中,相同的数据被绘制了五次;颜色表示由 k-means 聚类创建的聚类,k = 1,2,3,4,5。也就是说,我强制使用聚类算法将数据分成 2 个集群,然后是 3 个,依此类推,并相应地对图表进行着色。

剪影图显示,当 k = 3 时,剪影系数最高,这表明这是最佳聚类数。在这个例子中,我们很幸运能够可视化数据,并且我们可能同意确实,三个集群最好地捕获了这个数据集的分割。

如果我们无法可视化数据,也许是因为更高的维度,剪影图仍然会给我们一个建议。但是,我希望我在这里有些冗长的回答也表明这种“建议”在某些情况下可能非常不充分或完全错误。

我今天一直在研究同样的事情,并在这里找到了解释。这是合乎逻辑的,但我不确定我们是否可以盲目地将解释应用于我们的数据集。总而言之,那篇文章所说的内容如下:

0.71-1.0
A strong structure has been found

0.51-0.70
A reasonable structure has been found

0.26-0.50
The structure is weak and could be artificial. Try additional methods of data analysis.

< 0.25
No substantial structure has been found

然而,似乎我们可以使用轮廓宽度来捕捉异常值。在我目前正在处理的文档聚类任务中,具有负轮廓宽度的那些是明确的异常值(当与它们的语义含义进行交叉检查时)。我不确定在去除异常值后这个宽度是否会改善(同样,这在逻辑上是有道理的,但我自己没有这样做)。

看看 集群有效性分析平台(CVAP)工具箱 和一些来自 CVAP 的资料(链接):

轮廓指数(整体平均轮廓)轮廓值越大,表明聚类结果的质量越好[Chen et al. 2002]

  • N. Bolshakova,F. Azuaje。2003. 基因组表达数据的集群验证技术,信号处理。V.83。N4,第 825-833 页。
  • E. Dimitriadou、S. Dolnicar、A. Weingessel。检查用于确定二进制数据集中簇数的索引。心理测量学,67(1):137-160,2002。

您还可以检查这个(简单)工具来估计集群的数量

看看这两个工具包的例子(你也可以使用其他集群验证技术)

如果您正在尝试为无监督学习选择集群的数量,那么也许您可以尝试做类似的事情 -

http://scikit-learn.org/stable/auto_examples/cluster/plot_kmeans_silhouette_analysis.html

他们使用的不仅仅是轮廓得分平均值(他们使用分布),但这是有道理的。它似乎更喜欢较小的集群,但也许你可以用一些生成的数据试试这个,看看是否有效?

或者,您可以查看这篇论文-

http://www.sciencedirect.com/science/article/pii/0377042787901257