Apprentissage interactif de la théorie des graphes
Apprentissage interactif de la théorie des graphes
Guest User
Using app without sign in
Outil interactif de clustering k-means
Regroupe les villes en territoires géographiques parfaitement séparés.
Sélectionnez un algorithme et générez les étapes pour commencer la visualisation
Le clustering k-means partitionne des points en k groupes en affectant chaque point à son centre de groupe le plus proche et en déplaçant chaque centre vers la moyenne de ses points affectés. Appliqué aux réseaux logistiques, il regroupe les clients en territoires de service ou zones de dépôt candidates.
L'algorithme de Lloyd alterne deux étapes jusqu'à stabilisation : affecter chaque point au centroïde le plus proche, puis recalculer chaque centroïde comme la moyenne de ses points. Chaque itération coûte O(nk) calculs de distance et l'objectif, la somme des distances au carré, ne croît jamais. L'initialisation compte : k-means++ répartit les centroïdes de départ de façon probabiliste et donne des résultats attendus prouvablement meilleurs. La méthode du coude ou les scores de silhouette guident le choix de k.
En conception de chaîne logistique, k-means crée des zones de livraison et localise des entrepôts candidats aux centres des clusters avant l'optimisation exacte. Au-delà de la logistique, il alimente la segmentation client, la compression d'images, les références de détection d'anomalies et la quantification vectorielle dans les pipelines d'apprentissage automatique.
Deux étapes qui alternent jusqu'à ce que plus rien ne bouge: affecter chaque point au centroïde le plus proche, puis déplacer chaque centroïde vers la moyenne des points qui lui ont été affectés.
KMoyennes(points, k):
initialiser k centroides (aleatoire, ou k-means++)
repeter jusqu a ce que les affectations ne changent plus:
// Etape d affectation
pour chaque point p:
groupe[p] = argmin sur c de distance(p, c)
// Etape de mise a jour
pour chaque centroide c:
c = moyenne des points avec groupe[p] == c
renvoyer groupes et centroidesChaque étape réduit la somme des carrés intra-groupes ou la laisse inchangée, et il n'existe qu'un nombre fini d'affectations possibles, l'algorithme termine donc toujours. Ce qu'il ne garantit pas, c'est de terminer à l'optimum global: il converge vers un minimum local qui dépend entièrement de l'initialisation, et c'est la limite pratique qu'il faut gérer.
Regroupe quatre points en deux groupes en partant délibérément d'une mauvaise initialisation, les deux centroïdes étant placés dans le même groupe réel.
Graphe d'exemple: Points en (1,1), (2,1), (8,8) et (9,8). Centroïdes initiaux placés en (1,1) et (2,1), donc tous deux dans le groupe inférieur gauche.
La convergence intervient en deux itérations et la somme des carrés intra-groupes chute de 61,333 à 1,0. Note que l'algorithme s'est remis d'une initialisation délibérément mauvaise, les deux centroïdes se trouvant dans le même groupe réel. Ce n'est pas garanti: sur d'autres données, une telle initialisation peut te bloquer dans un minimum local. C'est pourquoi k-means++ choisit des centroïdes initiaux bien écartés et pourquoi il vaut la peine de lancer l'algorithme plusieurs fois avec des initialisations différentes.
Temps: O(n · k · i · d) · Espace: O(n + k·d)
Chaque itération affecte n points en les comparant à k centroïdes en d dimensions, soit O(n fois k fois d), et l'étape de mise à jour reparcourt les points au même coût. Avec i itérations, le total est O(n fois k fois i fois d). En pratique i reste petit, de l'ordre de quelques dizaines, même si le pire cas peut croître de façon superpolynomiale. L'espace tient à l'affectation de groupe par point plus les k centroïdes. Trouver le regroupement optimal au sens de la somme des carrés est NP-difficile même pour k égal à 2, l'algorithme de Lloyd universellement employé est donc une heuristique: rapide et efficace en pratique, sans garantie d'optimalité.
Choisis selon la forme attendue des groupes et selon que tu connais k à l'avance.
| Alternative | À préférer quand | Coût |
|---|---|---|
| K-moyennes avec k-means++ | Le choix par défaut. Groupes approximativement sphériques et de tailles voisines, avec k connu. | O(n · k · i · d) |
| DBSCAN | Les groupes ont des formes arbitraires ou il y a du bruit, et k est inconnu d'avance. | O(n log n) avec index |
| Regroupement hiérarchique | Tu veux un dendrogramme et décider du nombre de groupes après avoir vu la structure. | O(n^2 log n) |
| K-médoïdes (PAM) | Les centres doivent être de vrais points de données, ou des valeurs aberrantes faussent les moyennes. | O(k·(n-k)^2) |
| Mélange de gaussiennes | Tu veux une appartenance floue et des groupes elliptiques plutôt que des affectations dures et sphériques. | O(n · k · i · d^2) |
Algorithmes associés: Localisation d'Installation, Répartition de Flotte (mTSP)