Aller au contenu

K-means

Le K-Means est un algorithme puissant d'apprentissage non supervisé utilisé pour le regroupement et la mise en cluster de points de données similaires. Il est largement appliqué dans la segmentation d'images, le traitement du langage naturel et la segmentation de marché. Ce guide couvre les concepts fondamentaux, l'implémentation et les conseils pratiques pour utiliser le K-Means efficacement.

Qu'est-ce que le regroupement K-Means ?

Le K-Means est un algorithme de regroupement qui regroupe les points de données en fonction de leur similarité. Il s'agit d'une technique d'apprentissage non supervisé qui ne nécessite aucune donnée étiquetée pour l'entraînement. L'algorithme fonctionne en partitionnant un jeu de données en K clusters, où K est un paramètre défini par l'utilisateur qui spécifie le nombre de clusters. L'algorithme K-Means vise à minimiser la somme des distances au carré entre les points de données et les centroïdes de leurs clusters assignés.

Comment fonctionne le regroupement K-Means ?

L'algorithme K-Means fonctionne selon les étapes suivantes :

  1. Initialisation : Choisir K points de données aléatoires comme centroïdes initiaux.
  2. Attribution : Assigner chaque point de données au centroïde le plus proche.
  3. Recalcul : Recalculer le centroïde de chaque cluster en prenant la moyenne de tous les points de données assignés à ce cluster.
  4. Répétition : Répéter les étapes 2 et 3 jusqu'à convergence ou jusqu'à atteindre un nombre maximum d'itérations.

Avantages du regroupement K-Means

Le regroupement K-Means présente plusieurs avantages, notamment :

  1. Facile à implémenter et à interpréter.
  2. Évolutif pour les grands ensembles de données.
  3. Applicable à divers types de données.
  4. Peut être utilisé pour la détection des valeurs aberrantes.

Inconvénients du regroupement K-Means

Le regroupement K-Means présente également certaines limites, telles que :

  1. Sensibilité à l'initialisation : La qualité du résultat final dépend des centroïdes initiaux.
  2. Choix du nombre optimal de clusters : Le nombre de clusters doit être spécifié à l'avance, ce qui peut s'avérer difficile.
  3. Fonctionne uniquement bien avec des clusters sphériques : Le K-Means suppose que les clusters sont sphériques, ce qui n'est pas toujours vrai pour tous les ensembles de données.

Implémentation du regroupement K-Means en Python

Pour implémenter le regroupement K-Means en Python, nous utiliserons la bibliothèque scikit-learn. Avant le regroupement, il est important de mettre à l'échelle vos caractéristiques, car le K-Means repose sur des calculs de distance et est très sensible aux données numériques non mises à l'échelle.

Regroupement K-Means avec mise à l'échelle et visualisation

python
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.preprocessing import StandardScaler

# Generate sample data
X, y = make_blobs(n_samples=1000, centers=3, random_state=42)

# Scale the features
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Create KMeans instance with 3 clusters
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X_scaled)

# Get cluster labels directly from the fitted model
labels = kmeans.labels_

# Visualize the results
plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=labels, cmap='viridis')
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], c='red', marker='X', s=200, label='Centroids')
plt.legend()
plt.show()

Dans cet exemple, nous générons des données d'échantillon, les mettons à l'échelle et ajustons le modèle KMeans. Nous récupérons les assignations de clusters à l'aide de l'attribut labels_, ce qui est plus efficace que d'appeler predict() après l'ajustement. La visualisation confirme que l'algorithme a correctement regroupé les points de données autour de leurs centroïdes.

Choix du nombre optimal de clusters (K)

Puisque K doit être spécifié à l'avance, la méthode du coude (Elbow method) est couramment utilisée pour trouver la valeur optimale. Elle trace la somme des carrés intra-clusters (WCSS) en fonction de différentes valeurs de K. Le point du "coude" indique le meilleur compromis entre la complexité du modèle et la variance.

python
wcss = []
for i in range(1, 11):
    kmeans = KMeans(n_clusters=i, random_state=42)
    kmeans.fit(X_scaled)
    wcss.append(kmeans.inertia_)

plt.plot(range(1, 11), wcss, marker='o')
plt.xlabel('Number of clusters (K)')
plt.ylabel('WCSS')
plt.show()

Conclusion

Le regroupement K-Means est une technique fondamentale d'apprentissage non supervisé pour regrouper des points de données similaires. En comprenant son fonctionnement, en appliquant la mise à l'échelle des caractéristiques et en utilisant des méthodes comme le graphique du coude pour sélectionner K, vous pouvez le déployer efficacement pour diverses tâches d'analyse de données.

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.