CommencerCommencer gratuitement

Choisir le nombre de clusters

L’algorithme k-means suppose que le nombre de clusters fait partie des paramètres d’entrée. Si vous connaissez ce nombre à l’avance (par exemple, en raison de contraintes métier), le régler est simple. Cependant, comme vous l’avez vu dans la vidéo, si vous ne connaissez pas le nombre de clusters et devez le déterminer, vous devrez exécuter l’algorithme plusieurs fois, à chaque fois avec un nombre de clusters différent. Vous pourrez ainsi observer comment une mesure de la qualité du modèle évolue en fonction du nombre de clusters.

Dans cet exercice, vous allez exécuter kmeans() plusieurs fois pour voir comment la qualité du modèle change lorsque le nombre de clusters varie. Les graphiques qui affichent ces informations aident à déterminer le nombre de clusters et sont souvent appelés scree plots (graphique de l’éboulis).

Le graphique idéal présente un coude (elbow) : au-delà de ce point, l’amélioration de la mesure de qualité ralentit à mesure que le nombre de clusters augmente. Cela indique que la qualité du modèle ne s’améliore plus de façon substantielle malgré une complexité plus élevée (c’est-à-dire davantage de clusters). En d’autres termes, le coude indique le nombre de clusters intrinsèque aux données.

Cet exercice fait partie du cours

Apprentissage non supervisé en R

Afficher le cours

Instructions

Les données x sont toujours disponibles dans votre espace de travail.

  • Construisez 15 modèles kmeans() sur x, chacun avec un nombre de clusters différent (de 1 à 15). Définissez nstart = 20 pour toutes les exécutions et enregistrez la somme totale des carrés intra-cluster de chaque modèle dans le iᵉ élément de wss.
  • Exécutez le code fourni pour créer un scree plot des wss pour l’ensemble des 15 modèles.
  • Examinez votre scree plot. Combien de clusters semblent intrinsèques aux données ? Affectez à k le nombre de clusters correspondant à l’emplacement du coude.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

# Initialize total within sum of squares error: wss
wss <- 0

# For 1 to 15 cluster centers
for (i in ___) {
  km.out <- kmeans(___, centers = i, ___)
  # Save total within sum of squares to wss variable
  wss[i] <- km.out$___
}

# Plot total within sum of squares vs. number of clusters
plot(1:15, wss, type = "b", 
     xlab = "Number of Clusters", 
     ylab = "Within groups sum of squares")

# Set k equal to the number of clusters corresponding to the elbow location
k <- ___
Modifier et exécuter le code