我想对一组10个数据点执行k均值聚类分析,每个数据点都有一个与它们相关的4个数值的数组。我使用Pearson相关系数作为距离度量。我做了k均值聚类算法的前两步:
1)选择一组k个簇的初始中心。 [我随机选择了两个初始中心]
2)将每个对象分配给距离最近的中心的群集。 [我使用Pearson相关系数作为距离度量 - 见下文]
现在我需要帮助理解算法的第3步:
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的帮助。计算群集的新中心。如果有人可以通过并解释如何计算其中一个集群的新中心,那将对我有很大的帮助。
答案 0 :(得分:4)
不要将其他距离函数投入k-means。
K-means旨在最大限度地减少“平方和”,不是距离!通过最小化平方和,它将同时最小化Squared Eudlidean并因此最小化欧几里德距离,但这可能不适用于其他距离,因此 K-means可能在与任意距离函数一起使用时停止收敛。
再次: k-means不会最小化任意距离。它最小化了“平方和”,恰好与平方欧氏距离一致。
如果您想要一个针对任意距离函数定义良好的算法,请考虑使用k-medoids (Wikipedia), k-means变体。 PAM保证与任意距离函数收敛。
答案 1 :(得分:0)
步骤3对应于计算每个群集的 mean 。
对于群集1,您将获得新的群集中心(B+C+D+E) / 4
,即(35.25 33.75 29.75 21.75)
,即分别对群集中所有点的每个分量求和,并将其除以群集中的点数
群集中心(群集1的A
)通常不是计算新群集中心的一部分。
答案 2 :(得分:0)
对于具有n维点的每个聚类,计算n维质心以获得质心。在您的示例中,有四维点,因此质心是沿着4个维度中的每个维度的平均值。对于簇1,质心是:(30.20,30.00,27.80,30.40)。例如,第一维的平均值计算为(10 + 21 + 43 + 37 + 40)/ 5 = 30.20。
有关详细信息,请参阅Wikipedia article on K-Means clustering。