k 表示聚类算法
Posted
技术标签:
【中文标题】k 表示聚类算法【英文标题】:k means clustering algorithm 【发布时间】:2013-03-14 08:01:48 【问题描述】:我想对一组 10 个数据点执行 k 均值聚类分析,每个数据点都有一个由 4 个数值组成的数组与之关联。我使用 Pearson 相关系数作为距离度量。我做了 k 均值聚类算法的前两个步骤:
1) 选择k个簇的一组初始中心。 [我随机选择了两个初始中心]
2) 将每个对象分配给具有最近中心的集群。 [我使用 Pearson 相关系数作为距离度量——见下文]
现在我需要帮助理解算法的第三步:
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 步的帮助。计算集群的新中心。如果有人可以通过并解释如何计算其中一个集群的新中心,那将极大地帮助我。
【问题讨论】:
为什么不在这里发布这个问题stats.stackexchange.com 感谢您的链接。我还没有足够的声誉在我的问题中发布图片。我也不知道如何将公式排版成问题。 【参考方案1】:步骤 3 对应于计算每个集群的 mean。
对于集群 1,您将得到新的集群中心(B+C+D+E) / 4
,即(35.25 33.75 29.75 21.75)
,即将集群中所有点的每个分量分别求和,然后除以集群中的点数。
聚类中心(A
代表聚类 1)通常不是新聚类中心计算的一部分。
【讨论】:
好吧,我想我明白了,但(B+C+D+E) / 4
实际上不是(24.5 25.75 43.5 36.75)
?
那是不对的(就像我的原始版本一样,未更正)。例如,对于您拥有的第一个组件 (21+43+37+40)/4 = 35.25
(B+C+D+E) / 4
的第二个分量是(33+14+45+43)/4
,即把B、C、D、E的第二个分量相加并除以4。
如果你使用 k centroids,你当然应该这样做。然而,k-means 是一种类似但又不相同的算法。
@mrueg 这是不正确的。您正在考虑k-medoids。没有k-centroid;它与k-means相同。您正在提供不良信息。【参考方案2】:
对于每个具有 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 了解更多信息。
【讨论】:
【参考方案3】:不要将其他距离函数放入 k-means 中。
K-means 旨在最小化“平方和”,不是距离!通过最小化平方和,它会巧合地最小化 Squared Eudlidean 和因此 Euclidean 距离,但这可能不适用于其他距离,因此 K-means 在与任意距离函数一起使用时可能会停止收敛。。 p>
再次重申:k-means 不会最小化任意距离。它最小化了恰好与平方欧几里得距离一致的“平方和”。
如果您想要一个为任意距离函数定义良好的算法,请考虑使用k-medoids (Wikipedia),这是一个k-means 变体。 PAM 保证与任意距离函数收敛。
【讨论】:
以上是关于k 表示聚类算法的主要内容,如果未能解决你的问题,请参考以下文章