Type |
Algorithme de partitionnement de données (d) |
---|---|
Inventeur |
Hans-Peter Kriegel (en) |
DBSCAN (density-based spatial clustering of applications with noise) est un algorithme de partitionnement de données proposé en 1996 par Martin Ester, Hans-Peter Kriegel, Jörg Sander et Xiaowei Xu[1]. Il s'agit d'un algorithme fondé sur la densité dans la mesure qui s’appuie sur la densité estimée des clusters pour effectuer le partitionnement.
L'algorithme DBSCAN utilise 2 paramètres : la distance et le nombre minimum de points devant se trouver dans un rayon pour que ces points soient considérés comme un cluster. Les paramètres d'entrées sont donc une estimation de la densité de points des clusters. L'idée de base de l'algorithme est ensuite, pour un point donné, de récupérer son -voisinage et de vérifier qu'il contient bien points ou plus. Ce point est alors considéré comme faisant partie d'un cluster. On parcourt ensuite l'-voisinage de proche en proche afin de trouver l'ensemble des points du cluster.
DBSCAN(D, ε, MinPts) C = 0 pour chaque point P non visité des données D marquer P comme visité PtsVoisins = epsilonVoisinage(D, P, ε) si tailleDe(PtsVoisins) < MinPts marquer P comme BRUIT sinon C++ étendreCluster(D, P, PtsVoisins, C, ε, MinPts) étendreCluster(D, P, PtsVoisins, C, ε, MinPts) ajouter P au cluster C pour chaque point P' de PtsVoisins si P' n'a pas été visité marquer P' comme visité PtsVoisins' = epsilonVoisinage(D, P', ε) si tailleDe(PtsVoisins') >= MinPts PtsVoisins = PtsVoisins U PtsVoisins' si P' n'est membre d'aucun cluster ajouter P' au cluster C epsilonVoisinage(D, P, ε) retourner tous les points de D qui sont à une distance inférieure à ε de P
Les points du jeu de données sont séparés en 3 types :
Un point du jeu de données est dit central si :
Ces points forment des composantes connexes indépendantes de l'ordre d'exploration du jeu de données.
Un point du jeu de données est dit frontière si :
Ces points viennent s'agréger autour des composantes connexes pour former des groupes. Ces groupes sont couramment appelées par leur nom anglais : Clusters.
Contrairement aux composantes connexes, la formation des clusters est dépendante de l'ordre d'exploration du jeu de données. En effet un point frontière est assigné au premier cluster rencontré lors de l'étape d'expansion. En plus de l'ordre d'exploration, ces points sont sensibles aux différentes implémentations de l'algorithme DBSCAN.
Un point du jeu de données est dit aberrant si :
Ces points sont donc tous les autres points du jeu de données.
Attention, le nom donné à ces points peut être trompeur car leur désignation dépend des paramètres choisis.
La notion de voisinage est le concept élémentaire à la base de la méthode DBSCAN. Il permet de définir mathématiquement les voisinages denses qui sont utilisés pour la localisation des points centraux et l'expansion des clusters.
En mathématiques, on appelle distance sur un ensemble E toute application d définie sur le produit E2 = E×E et à valeurs dans l'ensemble ℝ+ des réels positifs,
vérifiant les propriétés suivantes
Nom | Propriété |
---|---|
symétrie | |
séparation | |
inégalité triangulaire |
Le choix de la distance entre points est un paramètre implicite à la méthode DBSCAN.
Dans le cas de DBSCAN, c'est communément la distance euclidienne qui est utilisée.
Dans l'espace usuel comme dans n'importe quel espace métrique :
La boule ouverte est l'ensemble des points de l'espace dont la distance au point est strictement inférieure à :
Le point est alors appelé centre de la boule ouverte et est appelé le rayon de la boule ouverte .
Les caractéristiques des boules dépendent de deux éléments :
Ci contre une boule ouverte de centre le point et de rayon est représentée dans un espace à deux dimensions pour une distance euclidienne. La surface bleu représente la boule ouverte : Celle-ci correspond à la zone de recherche des voisins pour l'algorithme DBSCAN.
L'-voisinage d'un point , est l'ensemble des points du jeu de données situés dans la boule ouverte centrée en et de rayon :
Les points du jeu de données sélectionnés reposent sur les boules ouvertes et sont donc dépendants des paramètres suivants :
Ci-contre un -voisinage du point a été représenté dans un espace de dimension 2 avec une distance euclidienne. Les points rouges sont les points du jeu de données qui appartiennent à l' -voisinage du point , et les points de couleur indigo représentent les points du jeu de données qui n'appartiennent pas à l' -voisinage du point . Pour l'algorithme DBSCAN, c'est le nombre de points rouges qui est important.
Un -voisinage est dit dense si son cardinal est supérieur ou égal à .
Cette définition est la première qui dépend des 3 paramètres de DBSCAN :
En reprenant l'illustration précédente, est fixé. Si est fixé à 3 points alors le voisinage considéré est clairement dense. À l’inverse si est fixé à 50 points alors le voisinage n'est clairement pas dense.
Les relations binaires qui suivent sont utilisées pour effectuer des démonstrations sur la méthode DBSCAN, et plus généralement en apprentissage non supervisé basé sur la densité.
Un point du jeu de données est directement accessible par densité depuis un autre point si :
Autrement dit, les points directement accessible par densité sont les points d'un voisinage dense.
Une telle relation est graphiquement représentée par un flèche qui part du point vers le point .
Un point du jeu de données est accessible par densité depuis un autre point s'il existe une séquence ordonnée de points tel que :
Un point est accessible par densité depuis un autre points s'il existe un chemin fléché vers de vers .
Un point du jeu de données est densément connecté à un autre point si :
Un point et un point sont densément connecté s'il existe deux chemins fléché qui partent d'un même point pour aller respectivement vers les points et .
L'estimation des paramètres et n'est pas un problème facile, car ces deux valeurs sont intrinsèquement liées à la topologie de l'espace à partitionner. Une trop faible valeur de et/ou une trop grande valeur de peuvent empêcher l'algorithme de propager les clusters. À l'inverse, une trop grande valeur pour et/ou une trop faible valeur pour peuvent conduire l'algorithme à ne renvoyer que du bruit. Une heuristique[3] permettant de déterminer conjointement et pour un certain espace pourrait être donnée par :
Par « suffisamment grand » on entend, par exemple, % ou % des points.
Une autre heuristique pour les cas en 2D (définie dans l'article original de DBSCAN[1]) consiste à fixer la valeur de à 4, et à tracer la courbe (triée dans l'ordre décroissant) des distances de chaque point à leur 4ème plus proche voisin. On fixe alors à la valeur du "point seuil" repéré sur le graphe. Si ce seuil n'est pas clairement identifiable, l'utilisateur peut le fixer en estimant le pourcentage de bruit dans le jeu de données : est donc tel que seuls les termes de bruit ont une distance à leur 4ème plus proche voisin plus grande que .
L'algorithme est très simple et ne nécessite pas qu'on lui précise le nombre de clusters à trouver. Il est capable de gérer les données aberrantes en les éliminant du processus de partitionnement. Les clusters n'ont pas pour obligation d'être linéairement séparables (tout comme pour l'algorithme des k-moyennes par exemple). Cependant, il n'est pas capable de gérer des clusters de densités différentes.