Gérer les algorithmes aléatoires
Dans la vidéo, vous avez vu que kmeans() initialise aléatoirement les centres des clusters. Cette initialisation aléatoire peut conduire à affecter des observations à des étiquettes de cluster différentes. Elle peut aussi amener l’algorithme k-means à trouver différents minima locaux. Cet exercice illustre ces deux effets.
En haut de chaque graphique, la mesure de qualité du modèle — la somme totale des carrés des distances intra-cluster — sera affichée. Repérez le ou les modèles avec l’erreur la plus faible pour identifier les meilleurs résultats.
Comme kmeans() affecte initialement les observations à des clusters aléatoires, il est important de fixer la graine du générateur aléatoire pour assurer la reproductibilité.
Cet exercice fait partie du cours
Apprentissage non supervisé en R
Instructions
Les données x sont toujours disponibles dans votre espace de travail. Votre objectif est de générer six modèles kmeans() sur ces données et de tracer les résultats de chacun, afin d’observer l’impact des initialisations aléatoires sur les résultats du modèle.
- Fixez la graine aléatoire à 1 avec
set.seed(). - À chaque itération de la boucle
for, exécutezkmeans()surx. Supposons que le nombre de clusters soit 3 et que le nombre de départs (nstart) soit 1. - Visualisez l’appartenance aux clusters en utilisant l’argument
coldeplot(). Observez comment la mesure de qualité et les affectations de clusters varient entre les six exécutions du modèle.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Set up 2 x 3 plotting grid
par(mfrow = c(2, 3))
# Set seed
set.seed(___)
for(i in 1:6) {
# Run kmeans() on x with three clusters and one start
km.out <- kmeans(___, ___, ___)
# Plot clusters
plot(x, col = ___,
main = km.out$tot.withinss,
xlab = "", ylab = "")
}