Un exemple où la sortie de l'algorithme k-medoid est différente de la sortie de l'algorithme k-means

11

Je comprends la différence entre k médoïde et k signifie. Mais pouvez-vous me donner un exemple avec un petit ensemble de données où la sortie médoïde k est différente de la sortie k signifie.

tubby
la source

Réponses:

14

k-medoid est basé sur des médoïdes (qui est un point appartenant à l'ensemble de données) calculant en minimisant la distance absolue entre les points et le centroïde sélectionné, plutôt que de minimiser la distance carrée. En conséquence, il est plus résistant au bruit et aux valeurs aberrantes que les k-means.

Voici un exemple simple et artificiel avec 2 clusters (ignorez les couleurs inversées) Kmeans vs Kmedoids

Comme vous pouvez le voir, les médoïdes et centroïdes (des k-moyennes) sont légèrement différents dans chaque groupe. Vous devez également noter que chaque fois que vous exécutez ces algorithmes, en raison des points de départ aléatoires et de la nature de l'algorithme de minimisation, vous obtiendrez des résultats légèrement différents. Voici une autre course:

entrez la description de l'image ici

Et voici le code:

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)

ilanman
la source
1
@frc, si vous pensez que la réponse de quelqu'un est incorrecte, ne la modifiez pas pour la corriger. Vous pouvez laisser un commentaire (une fois que votre représentant est> 50), et / ou downvote. Votre meilleure option est de poster votre propre réponse avec ce que vous pensez être les bonnes informations (cf. ici ).
gung - Rétablir Monica
2
K-medoids minimise une distance choisie arbitrairement (pas nécessairement une distance absolue) entre les éléments groupés et le médoïde. En fait, la pamméthode (un exemple d'implémentation de K-medoids dans R) utilisée ci-dessus, utilise par défaut la distance euclidienne comme métrique. K-means utilise toujours le carré euclidien. Les médoïdes dans les K-médoïdes sont choisis parmi les éléments de la grappe, et non dans un espace entier de points comme centroïdes dans les K-moyennes.
hannafrc
1
Je n'ai pas assez de réputation pour commenter, mais je voulais mentionner qu'il y a une erreur dans les tracés de la réponse d'Ilanman: il a exécuté tout le code, de sorte que les données ont été modifiées. Si vous exécutez uniquement la partie clustering du code, les clusters sont assez stables, plus stables pour PAM que pour k-means, soit dit en passant.
Julien Colomb
6

Un médoïde doit être membre de l'ensemble, pas un centroïde.

Les centroïdes sont généralement discutés dans le contexte d'objets solides et continus, mais il n'y a aucune raison de croire que l'extension à des échantillons discrets exigerait que le centroïde soit membre de l'ensemble d'origine.

headdab
la source
1

Les algorithmes k-means et k-medoids divisent l'ensemble de données en k groupes. En outre, ils essaient tous les deux de minimiser la distance entre les points du même cluster et un point particulier qui est le centre de ce cluster. Contrairement à l'algorithme k-means, l'algorithme k-medoids choisit les points comme centres appartenant au jeu de données. L'implémentation la plus courante de l'algorithme de clustering k-medoids est l'algorithme Partitioning Around Medoids (PAM). L'algorithme PAM utilise une recherche gourmande qui peut ne pas trouver la solution optimale globale. Les médoïdes sont plus robustes aux valeurs aberrantes que les centroïdes, mais ils ont besoin de plus de calcul pour les données de haute dimension.

Christos Karatsalos
la source