回答:
k-medoidは、二乗距離を最小化するのではなく、ポイントと選択した重心間の絶対距離を最小化することによって計算するmedoids(データセットに属するポイント)に基づいています。その結果、k平均よりもノイズや外れ値に対してロバストです。
これは、2つのクラスターを使用した単純で不自然な例です(反転した色は無視してください)。
ご覧のとおり、(k平均の)medoidと重心は、各グループでわずかに異なります。また、これらのアルゴリズムを実行するたびに、ランダムな開始点と最小化アルゴリズムの性質により、わずかに異なる結果が得られることに注意してください。ここに別の実行があります:
そしてここにコードがあります:
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)
pam
上記で使用した方法(RでのK-medoidの実装例)は、デフォルトでメトリックとしてユークリッド距離を使用します。K-meansは常に二乗ユークリッドを使用します。K-medoidのmedoidは、K-meansの重心として、点空間全体からではなく、クラスター要素から選択されます。
k-meansアルゴリズムとk-medoidsアルゴリズムの両方が、データセットをk個のグループに分割しています。また、どちらも同じクラスターのポイントとそのクラスターの中心である特定のポイントとの間の距離を最小化しようとしています。k-meansアルゴリズムとは対照的に、k-medoidsアルゴリズムは、dastasetに属する中心として点を選択します。k-medoidsクラスタリングアルゴリズムの最も一般的な実装は、Partitioning Around Medoids(PAM)アルゴリズムです。PAMアルゴリズムは貪欲な検索を使用するため、大域的な最適解が見つからない可能性があります。Medoidは、重心よりも外れ値に対してロバストですが、高次元データにはより多くの計算が必要です。