如何手动计算群集的轮廓,内聚和分离

时间:2014-04-30 11:47:47

标签: validation cluster-analysis cohesion

美好的一天!

我一直在互联网上寻找如何计算剪影系数,凝聚力和分离,不幸的是,尽管有资源,我只是无法理解发布的公式。我知道在某些工具中有它的实现,但我想知道如何手动计算它们,特别是在给定矢量空间模型的情况下。

假设我有以下群集:

群集1 = {{1,0},{1,1}}
群集2 = {{1,2},{2,3},{2,2},{1,2}},
群集3 = {{3,1},{3,3},{2,1}}

我根据[1]理解它的方式是我必须得到每个簇的平均点数:

C1 X = 1; Y = .5
C2 X = 1.5; Y = 2.25
C3 X = 2.67; Y = 1.67

鉴于平均值,我必须通过平方误差和(SSE)计算我的凝聚力:

内聚力(C1)=(1-1)^ 2 +(1-1)^ 2 +(0-.5)^ 2 +(0-.5)^ 2 = 0.5
内聚力(C2)=(1-1.5)^ 2 +(2-1.5)^ 2 +(2-1.5)^ 2 +(1-1.5)^ 2 +(2-2.5)^ 2 +(3-2.5) ^ 2 +(2-2.5)^ 2 +(2-2.5)^ 2 = 2
内聚力(C3)=(3-2.67)^ 2 +(3-2.67)^ 2 +(2-2.67)^ 2 +(1-1.67)^ 2 +(3-1.67)^ 2 +(1-1.67) ^ 2 = 3.3334

群集(C)= 0.5 + 2 + 3.3334 = 5.8334

我的问题是: 1.我是否正确地进行了凝聚力?
2.如何计算分离?
3.如何计算Silhouette系数?

谢谢。


参考文献:
[1] http://www.cs.kent.edu/~jin/DM08/ClusterValidation.pdf

5 个答案:

答案 0 :(得分:1)

计算轮廓是直截了当的,但它不涉及质心。

所以不要试图从你为凝聚力所做的事情来计算它;从原始数据中计算出来。

答案 1 :(得分:1)

Cluster 1 ={{1,0},{1,1}} 
Cluster 2 ={{1,2},{2,3},{2,2},{1,2}}, 
Cluster 3 ={{3,1},{3,3},{2,1}}

{1,0} in cluster 1

计算平均距离 它的群集中的所有其他点,即群集1

So a1 =√( (1-1)^2 + (0-1)^2) =√(0+1)=√1=1

现在,群集1中的对象{1,0}计算其与群集2和群集3中所有对象的平均距离。其中,取最小平均距离。

所以对于集群2

{1,0} ----> {1,2} = distance = √((1-1)^2 + (0-2)^2) =√(0+4)=√4=2
{1,0} ----> {2,3} = distance = √((1-2)^2 + (0-3)^2) =√(1+9)=√10=3.16
{1,0} ----> {2,2} = distance = √((1-2)^2 + (0-2)^2) =√(1+4)=√5=2.24
{1,0} ----> {1,2} = distance = √((1-1)^2 + (0-2)^2) =√(0+4)=√4=2

因此,群集1中的点{1,0}与群集2中的所有点的平均距离=

(2+3.16+2.24+2)/4 = 2.325

同样,对于集群3

{1,0} ----> {3,1} = distance = √((1-3)^2 + (0-1)^2) =√(4+1)=√5=2.24
{1,0} ----> {3,3} = distance = √((1-3)^2 + (0-3)^2) =√(4+9)=√13=3.61
{1,0} ----> {2,1} = distance = √((1-2)^2 + (0-1)^2) =√(1+1)=√2=2.24

因此,群集1中点{1,0}与群集3中所有点的平均距离 =

(2.24+3.61+2.24)/3 = 2.7

现在,群集1中的点{1,0}与其他群集2和3的最小平均距离为

b1 =2.325(2.325< 2.7)

群集1的轮廓系数

s1= 1-(a1/b1) = 1- (1/2.325)=1-0.4301=0.5699

以类似的方式,您需要通过获取每个聚类中的任何单个对象点并重复上述步骤来分别计算聚类2和聚类3的轮廓系数。其中,具有最大轮廓系数的群集在评估中是最佳的。

注意:此处的距离是欧几里德距离!您还可以查看此视频以获得进一步说明:

https://www.coursera.org/learn/cluster-analysis/lecture/RJJfM/6-2-clustering-evaluation-measuring-clustering-quality

答案 2 :(得分:0)

正如你计算出C1的凝聚力一样,有一个错误。

Cohesion(C1) = (1 - 1) ^ 2 + (1 - 1) ^ 2 + (0 - .5) ^ 2 + (1 - .5) ^ 2 = 0.5 

这是基于原型的(在这种情况下是 Centroid )凝聚力计算。

用于计算分离:{在群集之间,即(C1,C2),(C1,C3)& (C2,C3)}

Separation(C1,C2) = SSE(Centroid(C1), Centroid(C2))
= (1 - 1.5) ^ 2 + (0.5 - 2.25) ^ 2 = 1 + 3.0625 = 4.0625

剪影系数:结合了凝聚力和分离。

参考https://cs.fit.edu/~pkc/classes/ml-internet/silhouette.pdf

答案 3 :(得分:0)

感谢您的回答,
计算其到群集中所有其他点的平均距离,即群集1' - >这部分必须予以纠正。

所以

a1 =√( (1-1)^2 + (0-1)^2) =√(0+1)=√1=1

答案 4 :(得分:0)

{1,0} ----> {2,1} = 距离 = √((1-2)^2 + (0-1)^2) =√(1+1)=√2= 2.24

这是一个错误,因为 2 的根大约是 1.41