Algorithme k-means : Exemple simple


Notre article vous guide à travers un exercice pratique pour mieux comprendre l’algorithme k-means. Plongez dans cette lecture pour élucider cette méthode de clustering et découvrir comment elle peut transformer vos données en informations claires et exploitables.


INTRODUCTION

L’entreprise MAAV réalise une étude sur ses clients afin de les regrouper en trois clusters. Son objectif est d’attribuer des bonus en fonction de leurs transferts sur la puce les mardis et vendredis. Pour le premier groupe, elle souhaite offrir un bonus de 100 %, pour le second, un bonus de 150 % et pour le troisième, un bonus de 200 %. Elle fait donc appel à vous pour cette tâche.

Vous décidez d’utiliser un échantillon des clients de l’entreprise MAAV pour effectuer votre analyse.

DEVELOPPEMENT

Vous sélectionnez donc les clients suivants :

NOMS MARDI VENDREDI
ABOULE (A) 4 000 6 000
BADOLO (B) 2 000 1 000
COULIBALY (C) 8 000 300
DAGNOGO (D) 3 000 8 000
ETOHO (E) 7 000 9 000
FOFANA (F) 400 800
GOGOUA (G) 1 500 6 500
HOUNGBEDI (H) 9 000 9 500
KOUAME (K) 700 500
NADOU (N) 300 300

Votre objectif est d’utiliser l’algorithme k-means pour créer trois groupes, chacun ayant son propre bonus.

À partir de cette base de donnée, nous pouvons faire une représentation graphique dans laquelle nous placerons les points suivants : A(4 000 ; 6 000), B(2 000 ; 1 000), C(8 000 ; 300), D(3 000 ; 8 000), E(7 000 ; 9 000), F(400 ; 800), G(1 500 ; 6 500), H(9 000 ; 9 500), K(700 ; 500) et N(300 ; 300).

On obtient donc le graphique suivant :

Puisque nous voulons former trois groupes, nous allons choisir aléatoirement trois points sur le plan, comme le fait l’algorithme. Ces points sont appelés centroïdes. Soient donc les points : C1(5 000 ; 7 000), C2(8 000 ; 7 000) et C3(5 000 ; 10 000).

Représentation graphique :

Dessinons un tableau pour représenter tout cela :

CLIENTS Distance à : Cluster Nouveau Cluster
NOMS Mardi Vendredi Centroïde 1 Centroïde 2 Centroïde 3
5000 7000 8000 7000 5000 10000
A 4000 6000
B 2000 1000
C 8000 300
D 3000 8000
E 7000 9000
F 400 800
G 1500 6500
H 9000 9500
K 700 500
N 300 300

D’abord, nous calculerons les distances des points A, B, C, D, E, F, G, H, K et N jusqu’aux centroïdes c1, c2 et c3 en utilisant la distance euclidienne.

Pour calculer la distance du point A au centroïde C1, on utilise la formule de la distance euclidienne :

  d(A ; c1) = \sqrt{ (4000 - 5000)^{2} + (6000 - 7000)^{2} } =  1414,213562

Et on note le résultat dans le tableau comme suit :

CLIENTS Distance à : Cluster Nouveau Cluster
NOMS Mardi Vendredi Centroïde 1 Centroïde 2 Centroïde 3
5000 7000 8000 7000 5000 10000
A 4000 6000 1414,213562
B 2000 1000
C 8000 300
D 3000 8000
E 7000 9000
F 400 800
G 1500 6500
H 9000 9500
K 700 500
N 300 300

Nous procédons de la même manière pour les autres centroïdes et on obtient :

CLIENTS Distance à : Cluster Nouveau Cluster
NOMS Mardi Vendredi Centroïde 1 Centroïde 2 Centroïde 3
5000 7000 8000 7000 5000 10000
A 4000 6000 1414,213562 4123,105626 4123,105626
B 2000 1000
C 8000 300
D 3000 8000
E 7000 9000
F 400 800
G 1500 6500
H 9000 9500
K 700 500
N 300 300

Après cela, on note dans la colonne ” Cluster ” le numéro du centroïde le plus proche du point ( celui par rapport auquel la distance est la plus petite ). Par exemple le centroïde le plus proche du point A est c1, on notera donc 1.

De cette même manière, on obtient les résultats suivants :

CLIENTS Distance à : Cluster Nouveau Cluster
NOMS Mardi Vendredi Centroïde 1 Centroïde 2 Centroïde 3
5000 7000 8000 7000 5000 10000
A 4000 6000 1414,213562 4123,105626 4123,105626 1
B 2000 1000
C 8000 300
D 3000 8000
E 7000 9000
F 400 800
G 1500 6500
H 9000 9500
K 700 500
N 300 300

En faisant pareil pour tous les points, on obtient le tableau suivant:

CLIENTS Distance à : Cluster Nouveau Cluster
NOMS Mardi Vendredi Centroïde 1 Centroïde 2 Centroïde 3
5000 7000 8000 7000 5000 10000
A 4000 6000 1414,213562 4123,105626 4123,105626 1
B 2000 1000 6708,203932 8485,281374 9486,832981 1
C 8000 300 7340,980861 6700 10153,32458 2
D 3000 8000 2236,067977 5099,019514 2828,427125 1
E 7000 9000 2828,427125 2236,067977 2236,067977 3
F 400 800 7720,103626 9808,159868 10285,9127 1
G 1500 6500 3535,533906 6519,202405 4949,747468 1
H 9000 9500 4716,990566 2692,582404 4031,128874 2
K 700 500 7793,587107 9774,456507 10427,84733 1
N 300 300 8184,130986 10206,86044 10778,68267 1

En image, voici le clustering fait par l’ordinateur :

L’on voit bien le cluster 1 en violet, le cluster 2 en bleu et le cluster 3 en orange.

Ensuite, nous mettons à jour les centroïdes. Pour minimiser les erreurs, comme mentionné dans notre article précédent, nous choisissons les centres de gravité des points formant chaque cluster comme nouveaux centroïdes.

Nous obtenons ainsi les nouveaux centroïdes : c1(1 700 ; 3 300), c2(8 500 ; 4 900) et c3(7 000 ; 9 000). Nous refaisons alors les mêmes calculs de distance.

Ensuite, nous notons dans la colonne “Nouveau Cluster” le numéro du centroïde le plus proche pour chaque point.

CLIENTS Distance à : Cluster Nouveau Cluster
NOMS Mardi Vendredi Centroïde 1 Centroïde 2 Centroïde 3
1700 3300 8500 4900 7000 9000
A 4000 6000 3546,82957 4632,493929 4242,640687 1 1
B 2000 1000 2319,482701 7580,237463 9433,981132 1 1
C 8000 300 6977,82201 4627,094121 8757,282684 2 2
D 3000 8000 4876,474136 6313,477647 4123,105626 1 3
E 7000 9000 7783,315489 4365,775991 0 3 3
F 400 800 2817,800561 9078,546139 10526,15789 1 1
G 1500 6500 3206,243908 7180,529228 6041,522987 1 1
H 9000 9500 9577,577982 4627,094121 2061,552813 2 3
K 700 500 2973,213749 8955,445271 10580,17013 1 1
N 300 300 3310,589071 9402,127419 10980,8925 1 1

On obtient le clustering suivant :

Enfin, nous allons effacer les éléments de la colonne ” Cluster ” et les remplacer par ceux de la colonne ” Nouveau Cluster “. Puis nous allons tout simplement reprendre les calculs des distances afin d’obtenir de nouveaux clustering.

L’on s’arrêtera lorsque les clustering se seront stabilisés ( c’est a dire que le clustering obtenu a l’étape n+1 est le même que celui obtenu a l’étape n ).

On obtient donc :

CLIENTS Distance à : Cluster Nouveau Cluster
NOMS Mardi Vendredi Centroïde 1 Centroïde 2 Centroïde 3
1483,33 2516,67 8000 300 6333,3 8833,33
A 4000 6000 4297,349855 6963,476143 3670,428828 1 3
B 2000 1000 1602,259585 6040,695324 8952,013616 1 1
C 8000 300 6883,35774 0 8694,573582 2 2
D 3000 8000 5689,217501 9180,958556 3435,888208 3 3
E 7000 9000 8512,767809 8757,282684 687,2174175 3 3
F 400 800 2029,9162 7616,42961 9986,913426 1 1
G 1500 6500 3983,364881 8982,761268 5367,049262 1 1
H 9000 9500 10259,98176 9254,188241 2748,77023 3 3
K 700 500 2163,461065 7302,739212 10058,75031 1 1
N 300 300 2512,74666 7700 10450,76216 1 1

CLIENTS Distance à : Cluster Nouveau Cluster
NOMS Mardi Vendredi Centroïde 1 Centroïde 2 Centroïde 3
980 1820 8000 300 5750 8125
A 4000 6000 5156,820726 6963,476143 2752,839443 3 3
B 2000 1000 1308,739852 6040,695324 8051,591458 1 1
C 8000 300 7182,673597 0 8142,059015 2 2
D 3000 8000 6501,75361 9180,958556 2752,839443 3 3
E 7000 9000 9369,781214 8757,282684 1525,819452 3 3
F 400 800 1173,371212 7616,42961 9070,729023 1 1
G 1500 6500 4708,800272 8982,761268 4550,068681 1 3
H 9000 9500 11104,17939 9254,188241 3528,898553 3 3
K 700 500 1349,370223 7302,739212 9145,66154 1 1
N 300 300 1665,172664 7700 9535,886168 1 1

CLIENTS Distance à : Cluster Nouveau Cluster
NOMS Mardi Vendredi Centroïde 1 Centroïde 2 Centroïde 3
850 650 8000 300 4900 7800
A 4000 6000 6208,461967 6963,476143 2012,46118 3 3
B 2000 1000 1202,081528 6040,695324 7392,563831 1 1
C 8000 300 7158,561308 0 8115,417426 2 2
D 3000 8000 7658,00235 9180,958556 1910,497317 3 3
E 7000 9000 10370,39054 8757,282684 2418,677324 3 3
F 400 800 474,341649 7616,42961 8321,658489 1 1
G 1500 6500 5886,00034 8982,761268 3640,054945 3 3
H 9000 9500 12031,00162 9254,188241 4438,468204 3 3
K 700 500 212,1320344 7302,739212 8421,995013 1 1
N 300 300 651,9202405 7700 8798,295289 1 1

On obtient donc les 3 clusters suivants :

Cluster 1 : B, F, K, N ( Celui des clients qui dépensent peu )  donc bonus de 100 %

Cluster 2 : C ( Celui de ceux qui dépensent fortement seulement le MARDI ou en semaine ) donc bonus de 150 %

Cluster 3 : A, D, E, G, H ( Celui de ceux qui dépensent assez les MARDI et VENDREDI ) donc bonus de 200 %

Remarquons que si nous étions tombé de façon aléatoire sur d’autres centroïdes, nous aurions eu un autre clustering. Par exemple si nous avions eu comme centroïdes de départ, les points : c1(1 000 ; 3 000), c2(1 500 ; 8 000) et c3( 8 000 ; 5 000), au bout de seulement 2 itérations, les clusters se seraient stabilisés et nous aurions eu :

CLIENTS Distance à : Cluster Nouveau Cluster
NOMS Mardi Vendredi Centroïde 1 Centroïde 2 Centroïde 3
1000 3000 1500 8000 8000 5000
A 4000 6000 4242,640687 3201,562119 4123,105626 2
B 2000 1000 2236,067977 7017,834424 7211,102551 1
C 8000 300 7502,666193 10076,70581 4700 3
D 3000 8000 5385,164807 1500 5830,951895 2
E 7000 9000 8485,281374 5590,169944 4123,105626 3
F 400 800 2280,35085 7283,543094 8683,317338 1
G 1500 6500 3535,533906 1500 6670,832032 2
H 9000 9500 10307,76406 7648,52927 4609,772229 3
K 700 500 2517,935662 7542,545989 8575,54663 1
N 300 300 2789,265136 7792,945528 9021,086409 1

CLIENTS Distance à : Cluster Nouveau Cluster
NOMS Mardi Vendredi Centroïde 1 Centroïde 2 Centroïde 3
850 650 2833,33 6833,33 8000 6266,67
A 4000 6000 6208,461967 1433,721653 4008,879256 2 2
B 2000 1000 1202,081528 5892,552739 7983,596488 1 1
C 8000 300 7158,561308 8329,398524 5966,67 3 3
D 3000 8000 7658,00235 1178,515073 5291,921474 2 2
E 7000 9000 10370,39054 4696,338763 2910,514197 3 3
F 400 800 474,341649 6505,548845 9361,86311 1 1
G 1500 6500 5886,00034 1374,3645 6504,186566 2 2
H 9000 9500 12031,00162 6718,552506 3384,438342 3 3
K 700 500 212,1320344 6682,975818 9302,928726 1 1
N 300 300 651,9202405 7007,29347 9741,208903 1 1

CONCLUSION

Voici ainsi expliqué l’algorithme k-means. Si vous voulez mieux le comprendre, vous pouvez lire cette vidéo qui m’a servi de référence : K Means Clustering Algorithm

Une question vous trouble sans doute : les résultats diffèrent-ils en fonction des centroïdes initiaux, et donc, deux machines peuvent-elles obtenir des résultats différents ? Cela pourrait être dangereux pour la prise de décision. Ne vous inquiétez pas. Pour remédier à cela, l’algorithme effectue au moins 30 clustering différents et affiche comme résultat une moyenne des différents clustering obtenus.

On comprend donc que les centroïdes initiaux n’affectent pas notre résultat final. Cependant, une autre question se pose : “Pourquoi forcément trois clusters ? Pourquoi pas plus ? Et comment savoir si nous avons choisi le bon nombre de clusters ?”

Nous répondrons à ces questions dans notre prochain article !