Comprendre l’algorithme de clustering K-means en apprentissage automatique
Regroupement K-means ou algorithme K-means ou encore algorithme de regroupement K-means — eh bien, avant de nous plonger dans ce que sont les algorithmes de regroupement, nous devons comprendre à quel point ils sont essentiels pour les entreprises modernes afin de donner du sens aux données — données sur les produits, données sur les clients, données sur les transactions, et ainsi de suite.
Dans un monde où la technologie redéfinit le paysage des affaires, les entreprises dépensent des millions de dollars pour analyser des données afin de développer des modèles qui les aident à devenir plus efficaces et à accroître leurs bénéfices. Regrouper des objets en fonction de leurs attributs est l’une des premières tâches impliquées dans ce processus d’élaboration de tels modèles.
Regrouper des objets aide les entreprises à concevoir diverses stratégies pour diverses situations. Les clients, les produits et les transactions sont des objets d’intérêt central dans de tels processus. Regrouper les clients en fonction de leur comportement aide les entreprises à concevoir des offres personnalisées. Regrouper les produits les aide à proposer des choix alternatifs aux clients. Et regrouper les transactions les aide à identifier des modèles inhabituels qui nécessitent une attention plus approfondie.
C’est là qu’intervient le regroupement. Le regroupement est un algorithme d’apprentissage automatique (ML) non supervisé qui regroupe les objets en fonction de leurs attributs.
Cet article complet de Zilliz, une entreprise leader de base de données vectorielle pour l’IA prête pour la production, vous fera découvrir en profondeur ce qu’est l’algorithme de regroupement K-means en apprentissage automatique et comment vous pouvez l’implémenter à l’aide de Python. Il explorera également quand utiliser l’algorithme de regroupement K-means et donnera un exemple concret de regroupement K-means.
Qu’est-ce que le regroupement ?
Le regroupement est le processus qui consiste à regrouper des points de données de sorte que chaque élément d’un groupe particulier soit plus similaire aux éléments de ce groupe qu’aux éléments d’autres groupes. Le regroupement ne désigne pas un algorithme spécifique. Il s’agit d’une tâche générique qui peut être résolue à l’aide de nombreux algorithmes. Les algorithmes de regroupement définissent généralement une métrique pour quantifier systématiquement la similarité. Le regroupement est utilisé dans de nombreux domaines, tels que le traitement d’images, la récupération d’informations, les moteurs de recommandation et la compression de données.
Le regroupement établit la similarité en fonction des attributs des objets qu’il regroupe. Les attributs diffèrent selon le domaine. Par exemple, dans le cas d’une image, les attributs sont les valeurs des pixels. Dans le cas d’un profil utilisateur, les attributs sont des détails tels que l’âge, le genre et l’historique d’achat. Dans le cas d’un produit, les attributs sont la catégorie, la couleur, le prix, etc. Le regroupement est appelé une tâche non supervisée parce qu’il n’existe pas de processus d’entraînement supervisé par l’utilisateur impliquant la préparation de données étiquetées.
Comment fonctionnent les algorithmes de regroupement ?
La plupart des algorithmes de regroupement fonctionnent en calculant la similarité entre toutes les paires d’échantillons. Chaque point de données est attribué au centroïde le plus proche sur la base de calculs de distance, ce qui constitue une étape fondamentale du processus de regroupement.
La capacité à passer à l’échelle du volume de l’ensemble de données est un facteur essentiel à prendre en compte lors du choix de l’algorithme de regroupement pour un problème. Le temps d’exécution augmente avec le nombre de paires d’éléments. Dans les cas extrêmes, il peut varier proportionnellement au carré du volume de données.
Quatre approches du regroupement
Il existe quatre approches courantes du regroupement : fondée sur les centroïdes, fondée sur la densité, hiérarchique et fondée sur la distribution. Examinons-les une par une.
1. Regroupement fondé sur les centroïdes
Cette méthode organise les points de données en clusters individuels sans aucune hiérarchie, en fonction du centroïde de tous les points de données du cluster. Le centroïde est le centre géométrique d’un objet. En termes simples, il s’agit de la moyenne arithmétique de tous les points qui constituent cet objet dans un espace à n dimensions. Ici, un cluster est un ensemble de points situés autour d’un centroïde. Le clustering basé sur les centroïdes souffre de problèmes liés aux affectations initiales et aux valeurs aberrantes.
2. Clustering basé sur la densité
Comme son nom l’indique, il calcule la densité des points dans une zone, puis affecte les points de données à des clusters là où une forte densité est trouvée. Dans ce cas, les clusters peuvent prendre n’importe quelle forme. Le clustering basé sur la densité rencontre des problèmes lorsque les données présentent intrinsèquement une forte variance de densité. Il ne fonctionne pas bien lorsque la dimension des données est élevée, car il peut avoir du mal à distinguer les clusters des clusters voisins.
3. Clustering hiérarchique
Cette méthode fournit un arbre de clusters avec la possibilité que des clusters soient situés à l’intérieur de clusters plus grands. Cette méthode convient bien lorsque les données présentent une hiérarchie inhérente. Le clustering hiérarchique permet de choisir n’importe quel nombre de clusters différents après l’exécution, puisque l’analyste peut couper l’arbre au point requis et ne considérer que les clusters après ce point.
4. Clustering basé sur la distribution
Cette méthode utilise le concept de distributions de probabilité pour trouver des clusters. Elle suppose que la probabilité qu’un point appartienne à un cluster diminue lorsque la distance par rapport au centre du cluster augmente. Les développeurs doivent connaître la distribution de leurs données pour utiliser cette méthode efficacement.
Qu’est-ce que le clustering K-means ?
L’algorithme de clustering K-means est un algorithme de clustering basé sur les centroïdes. Il s’agit d’un algorithme d’apprentissage non supervisé, car il ne repose pas sur des données étiquetées. Le « K » dans un algorithme de clustering K-means représente le nombre de clusters.
K-means est un algorithme itératif qui calcule la moyenne ou le centroïde de nombreuses fois avant de converger. Le temps nécessaire à la convergence dépend de l’affectation initiale et du nombre optimal de clusters utilisé. Généralement, la complexité temporelle de K-means est
où d est le nombre de dimensions, k est le nombre de clusters, et n est le nombre de k clusters d’éléments de données.
L’algorithme de clustering K-means fonctionne en calculant la distance de chaque élément de données par rapport au centre géométrique d’un cluster. Il reconfigure ensuite le cluster s’il trouve qu’un point appartenant à un cluster spécifique est plus proche du centroïde d’un autre cluster. Après cela, il recalcule le centroïde du cluster et répète le processus jusqu’à ce qu’il n’y ait plus de réaffectation de cluster.
Voyons comment fonctionne l’algorithme.
Comment fonctionne l’algorithme de clustering K-means ?
L’algorithme de clustering K-means est un processus itératif impliquant quatre étapes principales. Pour comprendre ces étapes, considérons un problème de clustering bidimensionnel. Supposons que les points soient (x1,y1),(x2,y2), et ainsi de suite. Commençons avec une taille de cluster de 2.
Affectation initiale
Cette étape affecte chaque point à un cluster arbitraire. Une option consiste à affecter des points aléatoires comme centroïdes de cluster et à calculer les distances entre chaque point de données et les centroïdes.
Les points sont affectés au cluster dont le centroïde est le plus proche d’eux. La distance entre deux clusters est calculée à l’aide de la formule de distance euclidienne. Par exemple, si x3,y3 est l’un des centroïdes attribués aléatoirement, on peut calculer la distance entre x1,y1 et x3,y3 à l’aide de cette formule :
Y vs. X
Y vs. X
Les points rouges et verts indiquent les affectations initiales aléatoires des centroïdes. Sur la base de ces seuls centroïdes initiaux de clusters, l’affectation initiale des clusters apparaîtra comme indiqué ci-dessous :
Y vs. X
Y vs. X
Calcul des centroïdes
Cette étape consiste à recalculer les centroïdes pour chaque cluster. Le centroïde d’un cluster est calculé à l’aide de la moyenne arithmétique de tous les éléments de ce cluster. Par exemple, supposons que x1,y1, x2,y2 et x3,y3 appartiennent à un cluster. Le centroïde de ce cluster est calculé comme suit :
Les points en forme de losange, comme indiqué ci-dessous, deviennent les nouveaux centroïdes.
Y vs. X
Y vs. X
Réaffectation des clusters
Une fois les nouveaux centroïdes trouvés pour les trois clusters, la distance entre chaque point et les nouveaux centroïdes est recalculée. Si l’un des points est situé plus près du centroïde d’un cluster auquel il est actuellement affecté, les points sont réaffectés.
Y vs. X
Y vs. X
Convergence
Après la réaffectation des clusters, les centroïdes sont à nouveau calculés, et le processus se répète. Le calcul des centroïdes et la réaffectation des clusters sont exécutés jusqu’à ce qu’il n’y ait plus de nouvelles réaffectations. La tâche de clustering convergée, dans ce cas, apparaîtra comme indiqué ci-dessous :
Y vs. X
Y vs. X
Choisir le nombre de clusters
Deux méthodes couramment utilisées pour choisir le nombre idéal de clusters sont la méthode du coude et la méthode de silhouette.
Méthode du coude
La méthode du coude calcule une métrique appelée WCSS (Within Cluster Sum of Squares). WCSS est la somme des carrés de la distance de chaque point au centroïde de son cluster le plus proche ci-dessus. Le tracé de WCSS par rapport au nombre de clusters est utilisé comme indication pour sélectionner le nombre optimal de clusters.
Les développeurs exécutent le clustering K-means pour des nombres de clusters de 1 à n, puis calculent WCSS pour chacune de ces exécutions. WCSS sera le plus élevé pour une exécution avec un seul cluster et diminue lorsque le nombre de clusters augmente. Le point où WCSS présente une inflexion marquée, comme le coude d’un bras, est considéré comme le nombre idéal optimal de clusters.
Méthode du coude
Méthode du coude
Méthode de silhouette
Cette méthode tente de comprendre le degré de similarité d’un objet avec les autres membres du même cluster et le degré de séparation des objets par rapport aux autres clusters. Le score de silhouette pour un point est calculé en combinant la distance moyenne de ce point par rapport aux autres points du cluster (a) et la distance moyenne de ce point avec tous les points appartenant à d’autres clusters (b), y compris les clusters voisins. Une fois a et b trouvés, le score de silhouette pour un point est calculé comme suit
Le score de chaque point est ensuite moyenné pour trouver le score de silhouette. Le score est calculé pour tous les candidats au nombre optimal, puis celui avec les k points et le score le plus élevé est sélectionné comme nombre optimal.
Méthode de silhouette
Méthode de silhouette
Un exemple réel de l’algorithme de clustering K-means (implémentation du clustering K-means avec Python)
Ce tutoriel montre comment implémenter le clustering K-means à l’aide de Python et trouver la taille optimale des clusters. Pour ce faire, supposons un énoncé de problème courant dans le domaine du e-commerce. Le clustering des clients en fonction de leurs attributs démographiques et de leurs habitudes de dépenses est une tâche courante dans le domaine du e-commerce. Pour simplifier l’exemple de clustering K-means, nous utiliserons ici deux attributs : l’âge du client et le montant moyen dépensé par mois.
- Pour ce faire, utilisons une bibliothèque d’apprentissage automatique Python appelée scikit-learn et une bibliothèque de tracé appelée matplotlib. Tout d’abord, initialisez les bibliothèques à l’aide des instructions d’importation données ci-dessous :
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette\_score
from sklearn.preprocessing import StandardScaler
- L’étape suivante consiste à définir la trame de données d’entrée. Ici, le premier attribut est l’âge et le second attribut est la dépense mensuelle moyenne en roupies indiennes (INR). Par souci de simplicité, initialisons le tableau directement dans le code. Nous avons ici 16 points de données :
raw\_features = np.array([[22,200],[24,200],[24,200],[20,800],[24,800],[24,800],[25,200],[54,200],[24,200],[54,200],[50,800],[53,800],[24,800],[55,800],[53,800],[50,800]])
- Vous normaliserez ensuite les points de données, afin que la variation d’un attribut ne masque pas les variations des autres attributs.
scaler = StandardScaler()
features = scaler.fit\_transform(raw\_features)
- Implémentez une boucle for pour essayer le clustering K-means avec un nombre de clusters variant de 2 à 6. Nous calculerons ensuite la somme des carrés et la tracerons en fonction du nombre de clusters afin d’identifier le nombre optimal de clusters.
sse = []
s\_scores=[]
for i in range(2,6):
kmeans = KMeans(init = **"random"** ,n\_clusters = i,n\_init = 10,max\_iter = 300,random\_state = 42)
kmeans.fit(features)
sse.append(kmeans.inertia\_)
s\_scores.append(silhouette\_score(features, kmeans.labels\_))
- Utilisez la bibliothèque matplotlib pour tracer la somme des carrés en fonction du nombre de clusters.
plt.style.use( **"fivethirtyeight"** )
plt.plot(range(1, 6), sse)
plt.xticks(range(1, 6))
plt.xlabel( **"Number of Clusters"** )
plt.ylabel( **"SSE"** )
plt.show()
- L’exécution du code ci-dessus produira un graphique que nous pourrons utiliser pour identifier le nombre optimal de clusters.
Clustering K-means
Algorithme de clustering K-means
Le nuage de points ci-dessus montre un « coude » distinct à 4. Le nombre optimal de clusters ici est donc 4. Avec une certaine connaissance du domaine, un data scientist peut expliquer ce nombre comme quatre combinaisons : clients à faible âge et fortes dépenses, à faible âge et faibles dépenses, à âge élevé et fortes dépenses, et à âge élevé et faibles dépenses. Mais de telles explications ne sont pas toujours possibles, et le nombre optimal de clusters varie selon les spécifications du problème.
C’est tout ce qu’il y a à faire pour exécuter un clustering K-means en Python. Les frameworks scikit-learn et matplotlib rendent l’utilisation du clustering en Python très facile.
Quand utiliser l’algorithme de clustering K-Means
Ainsi, comme nous l’avons appris, le clustering est un algorithme d’apprentissage automatique non supervisé qui aide à regrouper des objets en fonction de leur similarité. Il est largement utilisé dans de nombreux domaines industriels pour l’analyse exploratoire des données.
Il est utile dans des domaines tels que la segmentation client, les moteurs de recommandation et la recherche de similarité. Cela dit, l’algorithme de clustering K-means n’est pas la seule technique pouvant être utilisée pour résoudre ces problèmes. Une autre façon de résoudre un tel problème consiste à générer des vector embeddings pour chaque objet en fonction de ses attributs.
Les réseaux d’entraînement basés sur l’apprentissage profond peuvent générer des embeddings multidimensionnels pour des objets ayant un grand nombre d’attributs. Ces embeddings, associés à une bonne base de données vectorielle, peuvent résoudre des problèmes fondés sur la similarité avec un bien meilleur contrôle.
Si vous travaillez sur de tels problèmes, découvrez Zilliz. Elle propose une solution tout-en-un pour les défis liés au traitement des données non structurées, en particulier pour les entreprises qui créent des applications IA/ML exploitant la recherche de similarité vectorielle.
Zilliz a créé Milvus, une base de données vectorielle open-source populaire, largement reconnue par plus d’un millier d’utilisateurs professionnels dans le monde. L’entreprise propose également un service de base de données vectorielle entièrement géré, Zilliz Cloud, qui permet aux entreprises de profiter de toute la puissance de Milvus sans les contraintes liées à la création et à la gestion de l’infrastructure.
Si vous voulez savoir : qu’est-ce qu’une base de données vectorielle ? - vous pouvez consulter le guide détaillé. Vous cherchez plus d’informations sur des sujets connexes ? Consultez cette explication de Approximate Nearest Neighbor Search (ANNS). Vous voulez en savoir plus sur la manière dont Zilliz peut vous aider ? Il vous suffit de cliquer ici et de poser votre question !
Continuer à lire

Why We Built Vector Lakebase: Rethinking Unstructured Data Architecture for AI
Vector Lakebase: a unified, lake-native data foundation for AI workloads — and an answer to what happens after vector databases succeed.

How Zilliz Ended Up at the Center of NVIDIA’s Unstructured Data Story at GTC 2026
If unstructured data is the context of AI, then the ceiling of AI applications will be set not just by models, but by how mature the infrastructure for unstructured data becomes.

How to Use Anthropic MCP Server with Milvus
MCP + Milvus: Streamline AI agent development with standardized data access, eliminating integration hassles while enhancing context and flexibility.



