如何解释轮廓图的均值?


34

我正在尝试使用轮廓图来确定数据集中的聚类数量。给定数据集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*-.');`

下面将得到的曲线图,给出与x轴作为簇的簇号和Y轴平均轮廓值

我如何解释该图?我该如何确定群集的数量?

在此处输入图片说明


有关确定群集数的信息,请参见“ 可视化软件-群集”下的最小生成树(MST)方法。
denis

@Learner:剪影函数是否内置在某些库中?如果不是,如果您不介意,可以将其发布在问题中吗?
传奇

@Legend:在Matlab统计工具箱中可用。
Learner

@Learner:糟糕...我以为您正在使用Python :)感谢您让我知道这一点。
传奇

1
+1显示代码!另外,由于轮廓的最大平均值出现在k = 2时,因此您可能需要检查数据是否聚类,这可以使用差距统计量(另一个链接)来完成。
Franck Dernoncourt 2013年

Answers:


41

Sergey的答案包含了一个关键点,那就是轮廓系数可以量化实现的聚类质量-因此,您应该选择最大化轮廓系数的聚类数量。


长远的答案是,评估群集工作结果的最佳方法是从实际检查(人为检查)开始,首先对形成的群集进行评估,然后根据对数据代表什么,群集代表什么,以及集群的目的是什么。

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

例如:簇的质量/半径/密度,簇之间的内聚力或分离度等。这些概念经常结合在一起,例如,如果聚类成功,则分离与内聚的比率应较大。

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


轮廓系数就是这样一种度量。其工作方式如下:

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

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

直观地,我们正在尝试测量群集之间的空间。如果群集凝聚力好(A小)且群集分离好(B大),则分子将大,依此类推。

我在这里构造了一个示例,以图形方式进行演示。

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

在这些图中,相同的数据绘制了五次。颜色表示由k均值聚类创建的聚类,其中k = 1,2,3,4,5。也就是说,我已强制采用聚类算法将数据分为2个簇,然后是3个簇,依此类推,并相应地为图形着色。

轮廓图表明,当k = 3时,轮廓系数最高,表明这是最佳聚类数。在此示例中,我们很幸运能够可视化数据,并且我们可能同意,实际上,三个聚类可以最好地捕获此数据集的分段。

如果我们无法可视化数据(也许是由于更高的维数),轮廓图仍会为我们提供建议。但是,我希望我在这里有些冗长的回答也指出,在某些情况下,这种“建议”可能会非常不足或完全是错误的。


5
谢谢您的详细回答,特别是地块非常有帮助。但是,我不太理解the average silhouette witdh "suggestion" could be very insufficient or just plain wrong in certain scenarios.您所说的如何。
2015年

10

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

轮廓指数(总体平均轮廓)较大的轮廓值表示聚类结果的质量更好[Chen等。2002]

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

您也可以检查此(简单的)工具来估算群集数量

只看两个工具箱的示例(您也可以使用其他集群验证技术)


6

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

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

但是,似乎我们可以使用轮廓宽度来捕获离群值。在我当前正在处理的文档聚类任务中,轮廓宽度为负的轮廓是确定的离群值(当对其语义含义进行交叉检查时)。我不确定删除异常值后宽度是否会增加(再次,这是合乎逻辑的,但我自己没有这样做)。


4
只是一个历史记录,该表最初来自Sewell,Grandville和PJ Rousseau。“在数据中查找组:聚类分析简介。” (1990)。img546.imageshack.us/img546/4523/cnfg.png(可能在作者的一篇文章中较早出版)
Franck Dernoncourt,2013年

答案中的链接不再可用。您能否再提供参考?
BajajG '18 -10-11

这是来自网络档案馆的文章链接:web.archive.org/web/20111002220803/http
Justas

1

如果您尝试选择无监督学习的集群数量,那么也许您可以尝试执行以下操作:

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

他们使用的不只是剪影得分平均值(他们使用分布),但这很有意义。似乎更喜欢较小的群集,但是也许您可以对一些生成的数据进行尝试,看看是否可行?

另外,您可以查看此文件-

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.