DBSCAN

Cet article est une ébauche concernant l’informatique.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

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.

Principe général

Les points A sont les points déjà dans le cluster. Les points B et C sont atteignables depuis A et appartiennent donc au même cluster. Le point N est une donnée aberrante puisque son epsilon voisinage ne contient pas de points dont l'epsilon voisinage contient MinPts points ou plus.

L'algorithme DBSCAN utilise 2 paramètres : la distance ϵ {\displaystyle \epsilon } et le nombre minimum de points M i n P t s {\displaystyle MinPts} devant se trouver dans un rayon ϵ {\displaystyle \epsilon } 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 ϵ {\displaystyle \epsilon } -voisinage et de vérifier qu'il contient bien M i n P t s {\displaystyle MinPts} points ou plus. Ce point est alors considéré comme faisant partie d'un cluster. On parcourt ensuite l' ϵ {\displaystyle \epsilon } -voisinage de proche en proche afin de trouver l'ensemble des points du cluster.

Algorithme

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

Structure des solutions[2]

Les points du jeu de données sont séparés en 3 types :

  • Les points centraux (core points)
  • Les points frontières (border points)
  • Les points aberrants (noise points)

Les points centraux

Un point du jeu de données est dit central si :

  1. Son voisinage est dense

Ces points forment des composantes connexes indépendantes de l'ordre d'exploration du jeu de données.

Les points frontières

Un point du jeu de données est dit frontière si :

  1. Ce n'est pas un point central
  2. Il appartient au voisinage d'un point central

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.

Les points aberrants

Un point du jeu de données est dit aberrant si :

  1. Ce n'est pas un point central
  2. Ce n'est pas un point frontière

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.

Concepts mathématiques sous-jacent

Voisinage d'un point

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.

Distance entre points

Article détaillé : Distance_(mathématiques).

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,

d : E × E R + {\displaystyle d:E\times E\to \mathbb {R} ^{+}}

vérifiant les propriétés suivantes

Nom Propriété
symétrie ( a , b ) E 2 ,   d ( a , b ) = d ( b , a ) {\displaystyle \forall (a,b)\in E^{2},\ d(a,b)=d(b,a)}
séparation ( a , b ) E 2 ,   d ( a , b ) = 0 a = b {\displaystyle \forall (a,b)\in E^{2},\ d(a,b)=0\Leftrightarrow a=b}
inégalité triangulaire ( a , b , c ) E 3 ,   d ( a , c ) d ( a , b ) + d ( b , c ) {\displaystyle \forall (a,b,c)\in E^{3},\ d(a,c)\leq d(a,b)+d(b,c)}

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.

Boule ouverte de rayon de epsilon

Article détaillé : Boule_(topologie).
Boule ouverte de centre le point p et de rayon ε, pour une distance euclidienne en dimension 2

Dans l'espace usuel comme dans n'importe quel espace métrique ( E , d ) {\displaystyle (E,d)}  :

La boule ouverte est l'ensemble B ( p , ϵ ) {\displaystyle B(p,\epsilon )\,} des points M {\displaystyle M} de l'espace E {\displaystyle E} dont la distance au point p {\displaystyle p} est strictement inférieure à ϵ {\displaystyle \epsilon }  :

B ( p , ϵ ) = { M E d ( M , p ) < ϵ } {\displaystyle B(p,\epsilon )=\left\{M\in E\,\mid \,d(M,p)<\epsilon \right\}}

Le point p {\displaystyle p} est alors appelé centre de la boule ouverte B ( p , ϵ ) {\displaystyle B(p,\epsilon )\,} et ϵ {\displaystyle \epsilon } est appelé le rayon de la boule ouverte B ( p , ϵ ) {\displaystyle B(p,\epsilon )\,} .

Les caractéristiques des boules dépendent de deux éléments :

  1. La forme des boules est liée à la distance d {\displaystyle d} (paramètre implicite à DBSCAN).
  2. L'espace couvert dépend du rayon ϵ {\displaystyle \epsilon } choisie (paramètre explicite à DBSCAN).

Ci contre une boule ouverte de centre le point p {\displaystyle p} et de rayon ϵ {\displaystyle \epsilon } est représentée dans un espace à deux dimensions pour une distance d {\displaystyle d} euclidienne. La surface bleu représente la boule ouverte B ( p , ϵ ) {\displaystyle B(p,\epsilon )\,} : Celle-ci correspond à la zone de recherche des voisins pour l'algorithme DBSCAN.

Epsilon-voisinage

Epsilon-Voisinage du point p, pour une distance euclidienne en dimension 2

L' ϵ {\displaystyle \epsilon } -voisinage V ϵ ( p ) {\displaystyle V_{\epsilon }(p)} d'un point p {\displaystyle p} , est l'ensemble des points q {\displaystyle q} du jeu de données D {\displaystyle D} situés dans la boule ouverte centrée en p {\displaystyle p} et de rayon ϵ {\displaystyle \epsilon }  :

V ϵ ( p ) = { q D d ( q , p ) < ϵ } {\displaystyle V_{\epsilon }(p)=\left\{q\in D\,\mid \,d(q,p)<\epsilon \right\}}

Les points du jeu de données sélectionnés reposent sur les boules ouvertes et sont donc dépendants des paramètres suivants :

  1. La distance d {\displaystyle d} entre les points p {\displaystyle p} et q {\displaystyle q}
  2. Le rayon de recherche ϵ {\displaystyle \epsilon } autour du point p {\displaystyle p}

Ci-contre un ϵ {\displaystyle \epsilon } -voisinage du point p {\displaystyle p} a été représenté dans un espace de dimension 2 avec une distance euclidienne. Les points rouges sont les points q {\displaystyle q} du jeu de données D {\displaystyle D} qui appartiennent à l' ϵ {\displaystyle \epsilon } -voisinage du point p {\displaystyle p} , et les points de couleur indigo représentent les points q {\displaystyle q} du jeu de données D {\displaystyle D} qui n'appartiennent pas à l' ϵ {\displaystyle \epsilon } -voisinage du point p {\displaystyle p} . Pour l'algorithme DBSCAN, c'est le nombre de points rouges qui est important.

Epsilon-voisinage dense

Un ϵ {\displaystyle \epsilon } -voisinage V ϵ ( p ) {\displaystyle V_{\epsilon }(p)} est dit dense si son cardinal est supérieur ou égal à m i n P t s {\displaystyle minPts} .

V ϵ ( p ) ∣⩾ m i n P t s {\displaystyle \mid V_{\epsilon }(p)\mid \geqslant minPts}

Cette définition est la première qui dépend des 3 paramètres de DBSCAN :

  1. Le nombre minimum de points m i n P t s {\displaystyle minPts} pour qu'un voisinage soit désigné dense.
  2. Le rayon du voisinage ϵ {\displaystyle \epsilon } autour du point p {\displaystyle p} considéré.
  3. La distance d {\displaystyle d} entre points.

En reprenant l'illustration précédente, ϵ {\displaystyle \epsilon } est fixé. Si m i n P t s {\displaystyle minPts} est fixé à 3 points alors le voisinage considéré est clairement dense. À l’inverse si m i n P t s {\displaystyle minPts} est fixé à 50 points alors le voisinage n'est clairement pas dense.

Relations basées sur la densité

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é.

Directement accessible par densité

Un point q {\displaystyle q} du jeu de données D {\displaystyle D} est directement accessible par densité depuis un autre point p {\displaystyle p} si :

  1. V ϵ ( p ) {\displaystyle V_{\epsilon }(p)} est dense
  2. q V ϵ ( p ) {\displaystyle q\in V_{\epsilon }(p)}

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 p {\displaystyle p} vers le point q {\displaystyle q} .

Accessible par densité

Un point q {\displaystyle q} du jeu de données D {\displaystyle D} est accessible par densité depuis un autre point p {\displaystyle p} s'il existe une séquence ordonnée de points ( p 1 , p 2 , . . . , p n ) {\displaystyle (p_{1},p_{2},...,p_{n})} tel que :

  1. p 1 = p {\displaystyle p_{1}=p}
  2. p i + 1 {\displaystyle p_{i+1}} est directement accessible par densité depuis p i {\displaystyle p_{i}}
  3. p n = q {\displaystyle p_{n}=q}

Un point q {\displaystyle q} est accessible par densité depuis un autre points p {\displaystyle p} s'il existe un chemin fléché vers de p {\displaystyle p} vers q {\displaystyle q} .

Densément connecté

Un point q {\displaystyle q} du jeu de données D {\displaystyle D} est densément connecté à un autre point p {\displaystyle p} si :

  1. o D {\displaystyle o\in D}
  2. p {\displaystyle p} est accessible par densité depuis o {\displaystyle o}
  3. q {\displaystyle q} est accessible par densité depuis o {\displaystyle o}

Un point q {\displaystyle q} et un point p {\displaystyle p} sont densément connecté s'il existe deux chemins fléché qui partent d'un même point o {\displaystyle o} pour aller respectivement vers les points p {\displaystyle p} et q {\displaystyle q} .

Estimation des paramètres

L'estimation des paramètres ϵ {\displaystyle \epsilon } et M i n P t s {\displaystyle MinPts} 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 ϵ {\displaystyle \epsilon } et/ou une trop grande valeur de M i n P t s {\displaystyle MinPts} peuvent empêcher l'algorithme de propager les clusters. À l'inverse, une trop grande valeur pour ϵ {\displaystyle \epsilon } et/ou une trop faible valeur pour M i n P t s {\displaystyle MinPts} peuvent conduire l'algorithme à ne renvoyer que du bruit. Une heuristique[3] permettant de déterminer conjointement ϵ {\displaystyle \epsilon } et M i n P t s {\displaystyle MinPts} pour un certain espace pourrait être donnée par :

  • ϵ {\displaystyle \epsilon }  : calculer pour chaque point de l'espace la distance à son plus proche voisin. Prendre ϵ {\displaystyle \epsilon } tel qu'une part « suffisamment grande » des points aient une distance à son plus proche voisin inférieure à ϵ {\displaystyle \epsilon } ;
  • M i n P t s {\displaystyle MinPts}  : calculer pour chaque point le nombre de ses voisins dans un rayon de taille ϵ {\displaystyle \epsilon } (la taille de son ϵ {\displaystyle \epsilon } -voisinage). Prendre M i n P t s {\displaystyle MinPts} tel qu'une part « suffisamment grande » des points aient plus de M i n P t s {\displaystyle MinPts} points dans leur ϵ {\displaystyle \epsilon } -voisinage.

Par « suffisamment grand » on entend, par exemple, 95 {\displaystyle 95} % ou 90 {\displaystyle 90} % des points.


Une autre heuristique pour les cas en 2D (définie dans l'article original de DBSCAN[1]) consiste à fixer la valeur de M i n P t s {\displaystyle MinPts} à 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 ϵ {\displaystyle \epsilon } à 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 : ϵ {\displaystyle \epsilon } est donc tel que seuls les termes de bruit ont une distance à leur 4ème plus proche voisin plus grande que ϵ {\displaystyle \epsilon } .

Avantages et inconvénients

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.

Articles connexes

  • OPTICS

Références

  1. a et b M. Ester, H.-P. Kriegel, J. Sander, and X. Xu, “A density-based algorithm for discovering clusters in large spatial databases with noise,” in Proceedings of the 2nd International Conference on Knowledge Discovery and Data mining, 1996, pp. 226–231.
  2. (en) Michael Hahsler, Matthew Piekenbrock et Derek Doran, « dbscan : Fast Density-Based Clustering with R », Journal of Statistical Software, vol. 91, no 1,‎ (ISSN 1548-7660, DOI 10.18637/jss.v091.i01, lire en ligne, consulté le )
  3. alitouka, spark_dbscan: DBSCAN clustering algorithm on top of Apache Spark, (lire en ligne)
v · m
Problèmes
Apprentissage supervisé
Classement
Régression
Réseau de neurones artificiels (ANN)
Apprentissage non supervisé
Clustering
Réduction de dimensions
Réseau de neurones artificiels (ANN)
Optimisation
Théorie
Logiciels
  • icône décorative Portail de l’informatique