我想对一组10个数据点执行k均值聚类分析,每个数据点都有一个由4个数值组成的数组。我使用皮尔逊相关系数作为距离度量。我完成了k均值聚类算法的前两步,它们是:
1)选择k个簇的一组初始中心。我随机选择了两个初始中心
2)将每个对象分配到中心最近的集群。我使用皮尔逊相关系数作为距离度量--见下文
现在我需要帮助理解算法中的第三步:
3)计算集群的新中心:
其中X,在这种情况下是一个4维向量,n是集群中数据点的数量。
假设下面的数据,我该如何计算C(S)呢?
# Cluster 1
A 10 15 20 25 # randomly chosen centre
B 21 33 21 23
C 43 14 23 23
D 37 45 43 49
E 40 43 32 32
# Cluster 2
F 100 102 143 212 #random chosen centre
G 303 213 212 302
H 102 329 203 212
I 32 201 430 48
J 60 99 87 34
K均值算法的最后一步是重复步骤2和3,直到没有对象改变聚类,这是足够简单的。
我需要帮助完成步骤3.计算集群的新中心。如果有人能通过并解释如何计算其中一个集群的新中心,那将对我有很大的帮助。
发布于 2013-03-25 06:27:15
步骤3对应于计算每个集群的平均值。对于集群1,你将得到新的集群中心(B+C+D+E) / 4
,它是(35.25 33.75 29.75 21.75)
,即对集群中所有点的每个分量分别求和,然后除以集群中的点数。
集群中心(集群1的A
)通常不是新集群中心计算的一部分。
发布于 2013-03-25 16:41:19
不要在k-means中加入其他距离函数。
K-means的目的是最小化“平方和”,而不是距离!通过最小化平方和,它将巧合地最小化平方欧氏距离,从而使欧几里德距离最小化,但这可能不适用于其他距离,因此当与任意距离函数一起使用时,K-means可能会停止收敛。
再说一次:k-means不会最小化任意距离。它最小化了恰好与平方欧几里德距离一致的“平方和”。
如果您想要一种为任意距离函数定义良好的算法,请考虑使用k-medoids (Wikipedia),一种k-means变体。PAM保证以任意距离函数收敛。
发布于 2013-03-25 08:03:01
对于具有n维点的每个簇,计算n维质心以获得质心。在您的示例中,有4维点,因此质心是沿4个维度的每个维度的平均值。对于簇1,质心是:(30.20,30.00,27.80,30.40)。例如,第一个维度的平均值计算为(10+21+43+37+40)/5 = 30.20。
有关详细信息,请参阅Wikipedia article on K-Means clustering。
https://stackoverflow.com/questions/15604647
复制相似问题