Découvrez le clustering K-Means, un algorithme clé d'apprentissage non supervisé pour le regroupement de données en clusters. Explorez son processus, ses applications et ses comparaisons !
Le regroupement K-Means est un algorithme largement utilisé dans le domaine de l'apprentissage non supervisé. l'apprentissage non supervisé, conçu pour diviser un ensemble de données en sous-groupes distincts qui ne se chevauchent pas. en sous-groupes distincts qui ne se chevauchent pas. Dans le contexte plus large de l 'apprentissage machine (ML), cette méthode est essentielle pour découvrir des modèles et des structures cachés dans des données non étiquetées. L'algorithme fonctionne en organisant les points de données dans un nombre $K$ de grappes, où chaque point appartient à la grappe dont la moyenne est la plus proche, servant de prototype du groupe. du groupe. Cette approche permet de minimiser la variance au sein de chaque grappe, en veillant à ce que les points de données d'un même groupe soient aussi similaires que possible, tout en conservant les mêmes caractéristiques. sont aussi similaires que possible tout en maintenant les différents groupes distincts.
Le processus de K-Means est itératif et commence par la sélection de $K$ centroïdes initiaux, qui servent de points centraux pour les clusters. les points centraux des grappes. Ces centroïdes peuvent être choisis au hasard ou par le biais de techniques d'initialisation plus intelligentes telles que Initialisation k-means afin d'améliorer la vitesse de convergence. L'algorithme passe ensuite par deux étapes primaires jusqu'à ce que les résultats se stabilisent :
Ce cycle se répète jusqu'à ce que les centroïdes ne se déplacent plus de manière significative, ce qui indique que l'algorithme a convergé. La détermination du nombre optimal de clusters est une partie critique du processus, souvent réalisée à l'aide de techniques telles que la méthode du coude ou en analysant le score de Silhouette pour mesurer la distance de séparation entre les grappes obtenues.
Le regroupement K-Means est polyvalent et trouve son utilité dans divers secteurs d'activité pour les tâches d'exploration et d'analyse des données. l'exploration et l'analyse des données.
Alors que les détecteurs d'objets modernes comme Ultralytics YOLO11 utilisent souvent utilisent souvent des techniques de régression avancées ou des têtes sans ancrage, K-Means a joué un rôle central dans l'évolution des modèles de détection. modèles de détection. Les itérations précédentes, telles que YOLOv2 à YOLOv5, utilisaient le regroupement K-Means sur les dimensions de la boîte de délimitation de l'ensemble de données COCO pour déterminer les modèles de détection optimaux. de l'ensemble de donnéesCOCO pour déterminer les boîtes d'ancrage optimales. optimales. Ces ancres précalculées ont fourni au modèle Ces ancres précalculées ont fourni au modèle de meilleurs antécédents pour prédire les formes des objets, améliorant ainsi de manière significative la stabilité de l'apprentissage et le rappel.
Il est courant de confondre les K-Means avec les K-voisins les plus proches (KNN), mais ils ont des objectifs fondamentalement différents.
Un autre concept apparenté est DBSCAN, qui regroupe les données en fonction de la densité plutôt que de la distance par rapport à un point central. Contrairement à K-Means, DBSCAN n'exige pas que le nombre de clusters soit spécifié au préalable et gère mieux les valeurs aberrantes. de spécifier au préalable le nombre de clusters et gère mieux les valeurs aberrantes.
L'exemple Python suivant montre comment utiliser les K-Means pour regrouper les couleurs des pixels, une étape courante de prétraitement des données dans les tâches de vision. de pré-traitement des données dans les tâches de vision.
import numpy as np
from sklearn.cluster import KMeans
# Simulate a small image (10x10 pixels) with 3 RGB channels
# In a real scenario, you would load an image using cv2.imread()
image_data = np.random.randint(0, 255, (10, 10, 3), dtype=np.uint8)
pixels = image_data.reshape(-1, 3)
# Apply K-Means to reduce the image to 3 dominant colors (clusters)
kmeans = KMeans(n_clusters=3, n_init="auto", random_state=42).fit(pixels)
# The cluster centers represent the dominant colors
print(f"Dominant RGB Colors:\n{kmeans.cluster_centers_}")