DBSCAN

Algorithme de partitionnement de données basé densité

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 modifier

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

Algorithme modifier

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] modifier

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 modifier

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 modifier

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 modifier

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 modifier

Voisinage d'un point modifier

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 modifier

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.

Boule ouverte de rayon de epsilon modifier

 
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   :

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 :

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

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.

Epsilon-voisinage modifier

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

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 :

  1. La distance   entre les points   et  
  2. Le rayon de recherche   autour du point  

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.

Epsilon-voisinage dense modifier

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 :

  1. Le nombre minimum de points   pour qu'un voisinage soit désigné dense.
  2. Le rayon du voisinage   autour du point   considéré.
  3. La distance   entre points.

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.

Relations basées sur la densité modifier

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

Un point   du jeu de données   est directement accessible par densité depuis un autre point   si :

  1.   est dense
  2.  

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  .

Accessible par densité modifier

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 :

  1.  
  2.   est directement accessible par densité depuis  
  3.  

Un point   est accessible par densité depuis un autre points   s'il existe un chemin fléché vers de   vers  .

Densément connecté modifier

Un point   du jeu de données   est densément connecté à un autre point   si :

  1.  
  2.   est accessible par densité depuis  
  3.   est accessible par densité depuis  

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  .

Estimation des paramètres modifier

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 :

  •   : calculer pour chaque point de l'espace la distance à son plus proche voisin. Prendre   tel qu'une part « suffisamment grande » des points aient une distance à son plus proche voisin inférieure à  ;
  •   : calculer pour chaque point le nombre de ses voisins dans un rayon de taille   (la taille de son  -voisinage). Prendre   tel qu'une part « suffisamment grande » des points aient plus de   points dans leur  -voisinage.

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  .

Avantages et inconvénients modifier

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 modifier

Références modifier

  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)