了解聚类结果的比较


13

我正在尝试将数据分类。我对这个主题还很陌生,并试图了解一些分析的结果。

使用Quick-R中的示例,R建议使用几个软件包。我尝试使用其中两个包(fpc使用kmeans函数和mclust)。我不了解这种分析的一个方面是结果的比较。

# comparing 2 cluster solutions
library(fpc)
cluster.stats(d, fit1$cluster, fit2$cluster)

我已经通读了fpc 手册的相关部分,但仍不清楚我的目标是什么。例如,这是比较两种不同聚类方法的输出:

$n
[1] 521

$cluster.number
[1] 4

$cluster.size
[1] 250 119  78  74

$diameter
[1]  5.278162  9.773658 16.460074  7.328020

$average.distance
[1] 1.632656 2.106422 3.461598 2.622574

$median.distance
[1] 1.562625 1.788113 2.763217 2.463826

$separation
[1] 0.2797048 0.3754188 0.2797048 0.3557264

$average.toother
[1] 3.442575 3.929158 4.068230 4.425910

$separation.matrix
          [,1]      [,2]      [,3]      [,4]
[1,] 0.0000000 0.3754188 0.2797048 0.3557264
[2,] 0.3754188 0.0000000 0.6299734 2.9020383
[3,] 0.2797048 0.6299734 0.0000000 0.6803704
[4,] 0.3557264 2.9020383 0.6803704 0.0000000

$average.between
[1] 3.865142

$average.within
[1] 1.894740

$n.between
[1] 91610

$n.within
[1] 43850

$within.cluster.ss
[1] 1785.935

$clus.avg.silwidths
         1          2          3          4 
0.42072895 0.31672350 0.01810699 0.23728253 

$avg.silwidth
[1] 0.3106403

$g2
NULL

$g3
NULL

$pearsongamma
[1] 0.4869491

$dunn
[1] 0.01699292

$entropy
[1] 1.251134

$wb.ratio
[1] 0.4902123

$ch
[1] 178.9074

$corrected.rand
[1] 0.2046704

$vi
[1] 1.56189

我的主要问题是更好地了解如何解释此聚类比较的结果。


以前,我曾问过更多有关缩放数据和计算距离矩阵的影响的信息。但是,玛丽安娜·索弗(mariana soffer)清楚地回答了这一点,我只是重新整理我的问题,以强调我对输出的解释感兴趣,这是对两种不同聚类算法的比较。

问题的上一部分:如果我要进行任何类型的集群,是否应该始终扩展数据?例如,我将dist()缩放数据集中的cluster.stats()函数用作函数的输入,但是我不完全了解发生了什么。我在dist() 这里读到,它指出:

此函数计算并返回距离矩阵,该距离矩阵是通过使用指定的距离度量来计算数据矩阵的行之间的距离而得出的。


您是在寻求进一步的说明还是对@mariana的回复不满意?我想这关系到您的第一个问题(第二段)。如果是这种情况,也许您应该更新您的问题,以便人们理解您为什么对这个问题设置赏金。
chl

@chl我将对其进行更新以使其更加清晰。我只是在寻找一些解释聚类比较的指导,因为不了解输出的含义。@mariana的回复对解释与此方法相关的一些术语非常有帮助。
celenius

Answers:


13

首先让我告诉您,在这里我不会完全解释所有的度量,但是我将给您一个关于如何比较聚类方法有多好的想法(假设我们正在比较两种具有相同数量的聚类方法集群)。

  1. 例如,聚类的直径越大,聚类越差,因为属于聚类的点更分散。
  2. 每个聚类的平均距离越高,聚类方法越差。(让我们假设平均距离是从群集中每个点到群集中心的距离的平均值。)

这是最常用的两个指标。检查以下链接以了解它们的含义:

  • 集群之间的距离(越高越好,是不同集群质心之间的距离的总和)
  • 集群内距离(越低越好,即集群成员到集群中心的距离之和)

为了更好地了解上述指标,请选中此项

然后,您应该阅读所使用的库和函数的手册,以了解哪些度量代表每种度量,或者如果不包括这些度量,请尝试查找所包含的含义。但是,我不会打扰和坚持我在这里所说的那些。

让我们继续您提出的问题:

  1. 关于缩放数据:是的,您应该始终缩放数据以进行聚类,否则不同维度(变量)的不同缩放比例将对数据的聚类方式产生不同的影响,变量中的值越高,则该变量的影响力越大将取决于如何进行聚类,而实际上它们都应该具有相同的影响力(除非出于某些特殊的奇怪原因,您不希望这样做)。
  2. 距离函数计算从一个点(实例)到另一点(实例)的所有距离。最常见的距离度量是欧几里得,因此,例如,假设您要度量从实例1到实例2的距离(为简单起见,假设您只有2个实例)。还让我们假设每个实例有3个值(x1, x2, x3),所以I1=0.3, 0.2, 0.5I2=0.3, 0.3, 0.4因此从I1和I2的欧几里德距离将是:sqrt((0.3-0.2)^2+(0.2-0.3)^2+(0.5-0.4)^2)=0.17,因此距离矩阵将导致:

        i1    i2
    i1  0     0.17
    i2  0.17  0

请注意,距离矩阵始终是对称的。

欧几里德距离公式并不是唯一存在的公式。还有许多其他距离可用于计算此矩阵。在Wikipedia Manhattain Distance中查看示例,以及如何计算。在Wikipedia页面上的Euclidean Distance(您还可以检查其公式)的末尾,您可以检查存在哪些其他距离。


感谢您提供的非常全面的答案-非常有用。
celenius 2011年

我很高兴对您有帮助。
mariana soffer

@marianasoffer到斯坦福页面的链接无效。请对其进行更新或使其可访问。谢谢
Herman Toothrot '18

7

我认为针对聚类的最佳质量度量是聚类假设,如Seeger在《学习》中使用带标签和未带标签的数据所给出的

例如,假设X = Rd且“聚类假设”的有效性,即两个点x,x如果X中的点之间仅通过相对较高的P(x )。

是的,这使质心和中心的整个概念下降。毕竟,如果您考虑到数据可能位于实际操作的空间的非线性子流形内的事实,那么这是相当随意的概念。

您可以轻松构建混合模型分解的综合数据集。比如这一个:云中的圆圈

长话短说:我将以最小极大值的方式来衡量聚类算法的质量。最佳的聚类算法是使一个点到同一聚类的最近邻居的最大距离最小的算法,同时使一个点与另一个聚类的最近邻的最小距离最大的算法。

您可能还对非参数信息理论聚类算法感兴趣。


我该如何使用极小极大值方法来检查聚类拟合?我的集群知识水平非常基础,因此目前我只是想了解如何比较两种不同的集群方法。
celenius 2011年

您可以共享附图的R代码吗?
Andrej

@Andrej我的猜测是高斯云(x<-rnorm(N);rnorm(N)->y)被r分成3部分(其中一个已删除)。

我不知道适合该质量指标的实用算法。您可能仍想使用K-Means等。但是,如果上述措施失败了,您就会知道您正在查看的数据不适合该算法。
bayerj 2011年

@Andrej我不使用R(来自ML而不是stats :),但是mbq所建议的似乎很好。
bayerj 2011年
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.