k-medoid算法的输出与k-means算法的输出不同的示例


11

我了解k medoid和k均值之间的区别。但是,您能否举一个带有少量数据集的示例,其中k个medoid输出与k均值输出不同。

Answers:


14

k-medoid基于medoids(属于数据集的一个点),其计算方法是最小化点与所选质心之间的绝对距离,而不是最小化平方距离。结果,它比k均值对噪声和离群值更鲁棒。

这是一个简单的,人为设计的示例,其中包含2个簇(忽略反转的颜色) Kmeans vs.Kmedoids

如您所见,(每组k均值的)质心和质心略有不同。另外您还应注意,由于随机起点和最小化算法的性质,每次运行这些算法时,您将获得略有不同的结果。这是另一次运行:

在此处输入图片说明

这是代码:

library(cluster)
x <- rbind(matrix(rnorm(100, mean = 0.5, sd = 4.5), ncol = 2),
           matrix(rnorm(100, mean = 0.5, sd = 0.1), ncol = 2))
colnames(x) <- c("x", "y")

# using 2 clusters because we know the data comes from two groups cl <- kmeans(x, 2) kclus <- pam(x,2)
par(mfrow=c(1,2)) plot(x, col = kclus$clustering, main="Kmedoids Cluster") points(kclus$medoids, col = 1:3, pch = 10, cex = 4) plot(x, col = cl$cluster, main="Kmeans Cluster") points(cl$centers, col = 1:3, pch = 10, cex = 4)


1
@frc,如果您认为某人的答案有误,请不要对其进行更正。您可以发表评论(一旦您的代表> 50),和/或下注。最好的选择是发布自己的答案并附上您认为正确的信息(请参阅此处)。
gung-恢复莫妮卡

2
K-medoids使聚类元素和medoid之间的任意选择的距离(不一定是绝对距离)最小化。实际上pam,默认情况下,上面使用的方法(R中K形参的示例实现)默认情况下使用欧几里得距离作为度量。K均值始终使用平方的欧几里得。K-medoids中的medoids是从聚类元素中选择的,而不是像K-means中的质心一样从整个点空间中选择的。
hannafrc

1
我没有足够的声誉来发表评论,但是我想提一提,伊兰曼(Ilanman)的答案有一个错误:他运行了整个代码,因此数据被修改了。如果只运行代码的集群部分,则集群非常稳定,顺便说一下,PAM比k-means更稳定。
朱利安·科隆布

6

medoid必须是集合的成员,质心不是。

通常在实体连续对象的上下文中讨论质心,但是没有理由相信对离散样本的扩展将要求质心成为原始集合的成员。


1

k均值和k均值算法都将数据集分为k组。而且,他们都试图最小化同一聚类的点与作为该聚类中心的特定点之间的距离。与k-means算法相反,k-medoids算法选择点作为属于dastaset的中心。k-medoids聚类算法最常见的实现方法是围绕Medoids进行分区(PAM)算法。PAM算法使用贪婪搜索,可能找不到全局最优解。相较于质心,质心对离群值的鲁棒性更高,但对于高维数据,它们需要更多的计算。

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.