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

机器算法验证 k-均值 k-中心点
2022-02-26 02:55:47

我了解 k medoid 和 k 均值之间的区别。但是你能给我一个小数据集的例子,其中 k medoid 输出与 k 均值输出不同。

3个回答

k-medoid 基于 medoids(属于数据集的一个点)通过最小化点与所选质心之间的绝对距离而不是最小化平方距离来计算。因此,它比 k-means 对噪声和异常值更稳健。

这是一个带有 2 个集群的简单、人为的示例(忽略反转的颜色) Kmeans vs. Kmedoids

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

在此处输入图像描述

这是代码:

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)

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

质心通常在固体、连续物体的背景下讨论,但没有理由相信离散样本的扩展需要质心成为原始集合的成员。

k-means 和 k-medoids 算法都将数据集分成 k 个组。此外,它们都试图最小化同一簇的点与作为该簇中心的特定点之间的距离。与 k-means 算法相比,k-medoids 算法选择点作为属于数据集的中心。k-medoids 聚类算法最常见的实现是 Partitioning Around Medoids (PAM) 算法。PAM 算法使用贪心搜索,可能无法找到全局最优解。中心点比质心对异常值更稳健,但它们需要更多的计算来处理高维数据。