Découvrez DBSCAN pour le regroupement basé sur la densité et la détection des anomalies. Apprenez comment il identifie les formes arbitraires et le bruit dans les ensembles de données avec Ultralytics .
DBSCAN (Density-Based Spatial Clustering of Applications with Noise) est un puissant algorithme d'apprentissage non supervisé utilisé pour identifier des groupes distincts dans des données en fonction de leur densité. Contrairement aux méthodes de regroupement traditionnelles qui supposent des clusters sphériques ou nécessitent un nombre prédéterminé de groupes, DBSCAN localise des régions à haute densité séparées par des zones à faible densité. Cette capacité lui permet de découvrir des clusters de formes et de tailles arbitraires, ce qui le rend exceptionnellement efficace pour analyser des ensembles de données complexes du monde réel dont la structure sous-jacente est inconnue. L'un des principaux avantages de cet algorithme est sa fonction intégrée de détection des anomalies, car il classe automatiquement les points situés dans des régions à faible densité comme du bruit plutôt que de les forcer à entrer dans un cluster.
L'algorithme fonctionne en définissant un voisinage autour de chaque point de données et en comptant combien d'autres points se trouvent dans ce voisinage. Deux hyperparamètres principaux contrôlent ce processus, ce qui nécessite un réglage minutieux des hyperparamètres pour correspondre aux caractéristiques spécifiques des données :
Sur la base de ces paramètres, DBSCAN classe chaque point de l'ensemble de données dans l'une des trois catégories suivantes :
minPts voisins au sein de la
eps rayon. Ces points forment l'intérieur d'un cluster.
eps rayon d'un point central mais ont moins de
que minPts les voisins eux-mêmes. Ceux-ci forment les bords d'un cluster.
Bien que les deux soient fondamentaux pour l' apprentissage automatique (ML), DBSCAN offre des avantages distincts par rapport au clustering K-Means dans des scénarios spécifiques . K-Means s'appuie sur les centroïdes et la distance euclidienne, en supposant souvent que les clusters sont convexes ou sphériques. Cela peut entraîner de mauvaises performances sur des données allongées ou en forme de croissant. En revanche, l'approche basée sur la densité de DBSCAN lui permet de suivre les contours naturels de la distribution des données.
Une autre différence significative réside dans l'initialisation. K-Means exige que l'utilisateur spécifie à l'avance le nombre de clusters (k), ce qui peut s'avérer difficile sans connaissances préalables. DBSCAN déduit naturellement le nombre de clusters à partir de la densité des données. De plus, K-Means est sensible aux valeurs aberrantes, car il force chaque point à entrer dans un groupe, ce qui peut fausser les centres des clusters. La capacité de DBSCAN à étiqueter les points comme du bruit empêche les anomalies des données de contaminer les clusters valides, garantissant ainsi des résultats plus propres pour les tâches en aval telles que la modélisation prédictive.
DBSCAN est largement utilisé dans les secteurs qui nécessitent une analyse spatiale et une gestion robuste du bruit.
Dans les flux de travail liés à la vision par ordinateur, les développeurs utilisent souvent le
Plate-forme Ultralytics pour former des détecteurs d'objets, puis post-traiter
les résultats. L'exemple suivant montre comment utiliser la fonction sklearn bibliothèque pour regrouper les centroïdes
des objets détectés. Cela permet de regrouper les détections qui sont spatialement liées, en fusionnant potentiellement plusieurs
boîtes englobantes pour le même objet ou pour identifier des
groupes d'objets.
import numpy as np
from sklearn.cluster import DBSCAN
# Simulated centroids of objects detected by YOLO26
# [x, y] coordinates representing object locations
centroids = np.array(
[
[100, 100],
[102, 104],
[101, 102], # Cluster 1 (Dense group)
[200, 200],
[205, 202], # Cluster 2 (Another group)
[500, 500], # Noise (Outlier)
]
)
# Initialize DBSCAN with a radius (eps) of 10 and min_samples of 2
# This groups points close to each other
clustering = DBSCAN(eps=10, min_samples=2).fit(centroids)
# Labels: 0, 1 are cluster IDs; -1 represents noise
print(f"Cluster Labels: {clustering.labels_}")
# Output: [ 0 0 0 1 1 -1]
Bien que DBSCAN soit un algorithme classique, il s'associe efficacement au deep learning moderne. Par exemple, les caractéristiques à haute dimension extraites d'un réseau neuronal convolutif (CNN) peuvent être réduites à l'aide de techniques de réduction de dimensionnalité telles que PCA ou t-SNE avant d'appliquer DBSCAN. Cette approche hybride permet de regrouper des données d'images complexes en fonction de leur similarité sémantique plutôt que de leur simple emplacement en pixels. Cela s'avère particulièrement utile dans les scénarios d'apprentissage non supervisé où les données d'entraînement étiquetées sont rares, aidant les chercheurs à organiser efficacement de vastes archives d'images non étiquetées.