DBSCAN

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

DBSCAN(D, eps, MinPts)
   C = 0
   pour chaque point P non visité des données D
      marquer P comme visité
      PtsVoisins = epsilonVoisinage(D, P, eps)
      si tailleDe(PtsVoisins) < MinPts
         marquer P comme BRUIT
      sinon
         C++
         etendreCluster(D, P, PtsVoisins, C, eps, MinPts)
          
etendreCluster(D, P, PtsVoisins, C, eps, 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', eps)
         si tailleDe(PtsVoisins') >= MinPts
            PtsVoisins = PtsVoisins U PtsVoisins'
      si P' n'est membre d'aucun cluster
         ajouter P' au cluster C
          
epsilonVoisinage(D, P, eps)
   retourner tous les points de D qui sont à une distance inférieure à epsilon 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 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.

Estimation des paramètres

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

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

Références

  1. 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 9 mars 2020)
  3. alitouka, spark_dbscan: DBSCAN clustering algorithm on top of Apache Spark, (lire en ligne)


  • Portail de l’informatique
Cet article est issu de Wikipedia. Le texte est sous licence Creative Commons - Attribution - Sharealike. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.