DBSCAN

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 11 de diciembre de 2021; la verificación requiere 1 edición .

El agrupamiento espacial de aplicaciones con ruido basado en la densidad ( DBSCAN  ) es un algoritmo de agrupamiento de datos propuesto por Maritin Ester, Hans-Peter Kriegel, Jörg Sander y Xiaowei Su en 1996 [1] . Este es un algoritmo de agrupamiento basado en la densidad: dado un conjunto de puntos en algún espacio, el algoritmo agrupa los puntos que están muy próximos entre sí (puntos con muchos vecinos cercanos ), marcando como valores atípicos los puntos que están solos en áreas de baja densidad. (más cercano cuyos vecinos están lejos). DBSCAN es uno de los algoritmos de agrupamiento más utilizados y es el que se menciona con mayor frecuencia en la literatura científica [2] .

En 2014, el algoritmo recibió el premio "time-tested" (un premio que se otorga a los algoritmos que han recibido una atención significativa en la teoría y la práctica) en la principal conferencia sobre minería de datos, KDD [3] .

Primeras versiones

En 1972, Robert F. Ling ya había publicado un artículo titulado The  Theory and Construction of k-Clusters [4] en The Computer Journal con un algoritmo similar con una estimación de la complejidad computacional [4] . DBSCAN tiene la complejidad del peor de los casos y la redacción de DBSCAN en términos orientados a la base de datos de consultas de rango[ clear ] permite acelerar por índice. Los algoritmos difieren en el manejo de los puntos de borde.

Preparación

Considere un conjunto de puntos en algún espacio que requiera agrupamiento. Para realizar el agrupamiento de DBSCAN, los puntos se dividen en puntos centrales , accesibles por densidad de puntos , y valores atípicos de la siguiente manera:

Ahora, si p es un punto central, entonces forma un grupo junto con todos los puntos (centrales o no centrales) accesibles desde ese punto. Cada grupo contiene al menos un punto principal. Los puntos no esenciales pueden formar parte de un grupo, pero forman su "borde" porque no se pueden utilizar para llegar a otros puntos.

La accesibilidad no es una relación simétrica porque, por definición, no se puede llegar a ningún punto desde un punto no central, independientemente de la distancia (por lo que se puede alcanzar un punto no central, pero no se puede llegar a nada desde él). Por lo tanto, el concepto adicional de conectividad es necesario para la definición formal del área de clústeres encontrada por el algoritmo DBSCAN. Dos puntos p y q están relacionados con la densidad si hay un punto o tal que tanto p como q son accesibles desde o . La conectividad de densidad es simétrica.

Entonces el clúster satisface dos propiedades:

  1. Todos los puntos en el grupo están conectados por pares en densidad.
  2. Si un punto es alcanzable por densidad desde algún punto del clúster, también pertenece al clúster.

Algoritmo

El algoritmo original basado en consultas

DBSCAN requiere que se especifiquen dos parámetros: y el número mínimo de puntos que deben formar una región densa [5] (minPts). El algoritmo parte de un punto arbitrario que aún no ha sido visto. Se elige una vecindad del punto y, si contiene suficientes puntos, se forma un grupo; de lo contrario, el punto se marca como ruido. Tenga en cuenta que este punto se puede encontrar más tarde en la vecindad de otro punto e incluirse en algún grupo.

Si un punto se encuentra como un punto denso de un grupo, su vecindario también forma parte de este grupo. Por lo tanto, todos los puntos que se encuentran en la vecindad de este punto se agregan al clúster. Este proceso continúa hasta que se encuentra un clúster conectado por densidad . Luego, se selecciona y procesa un nuevo punto no visitado, lo que conduce al descubrimiento del siguiente grupo o ruido.

DBSCAN se puede utilizar con cualquier función de distancia [1] [6] (así como una función de similitud o una condición booleana) [7] . Por lo tanto, la función de distancia (dist) puede considerarse como un parámetro adicional.

El algoritmo se puede escribir en pseudocódigo de la siguiente manera [6] :

DBSCAN(DB, distFunc, eps, minPts) { C=0 /* Recuento de grupos */ para cada punto P en la base de datos DB { if label(P) ≠ indefinido luego continuar /* El punto se buscó en el ciclo interno */ Vecinos N=RangeQuery(DB, distFunc, P, eps) / * Buscar vecinos */ if |N|< minPts then { /* Comprobación de densidad */ label(P)=Ruido /* Marcar como ruido */ continuar } C=C + 1 /* siguiente etiqueta de clúster */ label(P)=C /* Label start point */ Conjunto de semillas S=N \ {P} /* Vecinos a expandir */ para cada punto Q en S { /* Tratar cada punto semilla */ if label(Q)=Noise then label(Q)=C /* Change label Noise to Edge */ if label(Q) ≠ undefined then continue /* Ha sido visto */ label(Q)= C /* Marcar vecino */ Vecinos N=RangeQuery(DB, distFunc, Q, eps) /* Buscar vecinos */ if |N|≥ minPts then { /* Verificar densidad */ S=S ∪ N /* Agregar vecinos a establecer puntos rudimentarios */ } } } }

donde RangeQuery se puede implementar usando un índice de base de datos para un mejor rendimiento, o se puede usar una búsqueda lenta lineal:

RangeQuery(DB, distFunc, Q, ) { Vecinos=lista vacía para cada punto P en la base de datos DB { /* Escanea todos los puntos en la base de datos */ si entonces { /* Calcula la distancia y verifica épsilon */ Vecinos = Vecinos ∪ {P} /* Agrega al resultado */ } } volver vecinos }

Algoritmo abstracto

El algoritmo DBSCAN se puede descomponer en los siguientes pasos [6] :

  1. Encontramos puntos en la vecindad de cada punto y seleccionamos los puntos principales con más de minPts vecinos.
  2. Encontramos los componentes conectados de los puntos principales en el gráfico de vecinos, ignorando todos los puntos no básicos.
  3. Asigne cada grupo no primario más cercano si el grupo es vecino; de lo contrario, considere el punto como ruido.

La implementación ingenua del algoritmo requiere memorizar los vecinos en el paso 1, por lo que requiere una memoria significativa. El algoritmo DBSCAN original no requiere esto al hacer estos pasos un punto a la vez.

Dificultad

DBSCAN visita cada punto de la base de datos, quizás varias veces (por ejemplo, como candidatos para otros grupos). Sin embargo, según la experiencia operativa, la complejidad del tiempo se rige principalmente por el número de consultas regionQuery. DBSCAN ejecuta exactamente una consulta de este tipo para cada punto, y si se usa una estructura de índice que completa la consulta de vecindad en tiempo O(log n ) , la complejidad de tiempo promedio general es O( n log n ) (si el parámetro es elegido con sensatez, entonces es tal que en promedio solo se devuelven O(log n ) puntos). Sin el uso de una estructura de índice de aceleración, o en datos degenerados (por ejemplo, cuando todos los puntos son menores que ), el tiempo de ejecución del peor de los casos permanece . La matriz de distancia de tamaño se puede calcular para evitar volver a calcular las distancias, pero esto requiere memoria , mientras que una implementación de DBSCAN sin una matriz de distancia solo requiere memoria O( n ) .

Beneficios

  1. DBSCAN no requiere la especificación del número de grupos en los datos a priori , a diferencia del método k-means .
  2. DBSCAN puede encontrar grupos de forma arbitraria. Incluso puede encontrar clústeres completamente rodeados por (pero no conectados a) otros clústeres. Gracias al parámetro MinPts, se reduce el llamado efecto de una conexión (la conexión de diferentes grupos con una delgada línea de puntos).
  3. DBSCAN tiene la noción de ruido y tolera los valores atípicos .
  4. DBSCAN requiere sólo dos parámetros y es mayormente insensible al orden de los puntos en la base de datos . (Sin embargo, los puntos que están en el borde de dos grupos diferentes pueden terminar en otro grupo si se cambia el orden de los puntos y la asignación de los grupos es única hasta el isomorfismo).
  5. DBSCAN está diseñado para usarse con bases de datos que pueden acelerar las consultas en un rango de valores, como con un árbol R* .
  6. Los minPts y los parámetros pueden ser establecidos por expertos en el campo en cuestión si los datos se entienden bien.

Desventajas

  1. DBSCAN no es completamente inequívoco: los puntos de borde a los que se puede llegar desde más de un grupo pueden pertenecer a cualquiera de estos grupos, según el orden en que se visualicen los puntos. Para la mayoría de los conjuntos de datos, estas situaciones rara vez ocurren y tienen poco efecto en el resultado de la agrupación [6]  : los puntos principales y el ruido son procesados ​​de forma única por DBSCAN. DBSCAN* [8] es una variante que trata los puntos de borde como ruido y, por lo tanto, logra un resultado completamente inequívoco, así como una interpretación estadística más consistente de los componentes conectados por densidad.
  2. La calidad de DBSCAN depende de la medida de distancia utilizada en la función regionQuery(P,ε). La métrica de distancia más utilizada es la métrica euclidiana . Especialmente para agrupar datos de alta dimensión , esta métrica puede ser casi inútil debido a la llamada "maldición de la dimensionalidad" , que dificulta encontrar un valor apropiado . Este efecto, sin embargo, está presente en cualquier otro algoritmo basado en la distancia euclidiana.
  3. DBSCAN no puede agrupar bien los conjuntos de datos con grandes diferencias de densidad, porque no puede elegir una combinación que sea aceptable para todos los grupos [9] .
  4. Si los datos y la escala no se entienden bien, puede resultar difícil elegir un umbral de distancia significativo.

Consulte la sección a continuación sobre extensiones para modificaciones algorítmicas que se ocupan de estos problemas.

Estimación de Parámetros

Cualquier tarea de minería de datos tiene un problema de parámetros. Cualquier parámetro tiene un efecto específico en el algoritmo. El algoritmo DBSCAN necesita parámetros y minPts . Los parámetros deben ser definidos por el usuario. Idealmente, el valor está determinado por el problema que se está resolviendo (p. ej., distancias físicas), y minPts luego determina el tamaño de clúster mínimo deseado [5] .

Se puede pensar en OPTICS como una generalización de DBSCAN en la que el parámetro se reemplaza por el valor máximo que tiene el mayor impacto en el rendimiento. MinPts luego se convierte en el tamaño mínimo de clúster. Aunque el algoritmo es sustancialmente más simple en el dominio de selección de parámetros que DBSCAN, sus resultados son más difíciles de usar, ya que generalmente produce un agrupamiento jerárquico en lugar de la partición simple que produce DBSCAN.

Recientemente, uno de los autores de DBSCAN revisó DBSCAN y OPTICS y publicó una versión revisada del DBSCAN jerárquico (HDBSCAN*) [8] , que ya no tiene el concepto de puntos de borde. Solo los puntos principales forman un grupo.

Extensiones

DBSCAN generalizado (GDBSCAN) [7] [10] es una generalización de los mismos autores para expresiones booleanas arbitrarias "vecindario" y "densidad". Los parámetros y minPts se eliminan del algoritmo y se transfieren a condiciones booleanas. Por ejemplo, en datos poligonales, "vecindario" puede ser cualquier intersección de polígonos, mientras que la condición de densidad utiliza el área en lugar del recuento de entidades.

Se han propuesto varias extensiones del algoritmo DBSCAN, incluidos métodos de paralelización, estimación de parámetros y soporte para datos cuestionables. La idea básica se ha extendido a la agrupación jerárquica mediante el algoritmo OPTICS . El algoritmo DBSCAN también se ha utilizado como parte de algoritmos de agrupamiento subespacial como PreDeCon y SUBCLU . HDBSCAN [8] es una versión jerárquica de DBSCAN, que también es más rápida que OPTICS, y en la que se puede extraer una partición plana de la jerarquía, que consta de los clústeres más visibles [11] .

Disponibilidad

Se encontraron varias implementaciones del algoritmo con una gran diferencia en el rendimiento, la más rápida completó el trabajo en los datos de prueba en 1,4 segundos y la más lenta en 13803 segundos [12] . La diferencia se puede atribuir a la calidad de la implementación, la diferencia de lenguajes y compiladores, y el uso de índices para acelerar las cosas.

Notas

  1. 1 2 3 Ester, Kriegel, Sander, Xu, 1996 , pág. 226–231.
  2. Búsqueda académica de Microsoft, 2010 .
  3. Premio Prueba del Tiempo, 2014 .
  4. 12 Ling , 1972 , pág. 326–332.
  5. 1 2 Si bien minPts es intuitivamente el tamaño mínimo de clúster, en algunos casos DBSCAN puede producir clústeres más pequeños ( Schubert, Sander, Ester, Kriegel, Xu 2017 ). Un grupo DBSCAN consta de al menos un punto central . Dado que otros puntos pueden ser puntos de borde de más de un grupo, no hay garantía de que se incluyan al menos minPts de puntos en cada grupo.
  6. 1 2 3 4 5 6 7 8 9 Schubert, Sander, Ester, Kriegel, Xu, 2017 , pág. 19:1–19:21.
  7. 1 2 3 4 Sander, Ester, Kriegel, Xu, 1998 , pág. 169–194.
  8. 1 2 3 Campello, Moulavi, Zimek, Sander, 2015 , p. 1–51.
  9. Kriegel, Kröger, Sander, Zimek, 2011 , pág. 231–240.
  10. Lijadora, 1998 .
  11. Campello, Moulavi, Zimek, Sander, 2013 , p. 344.
  12. Kriegel, Schubert, Zimek, 2016 , pág. 341.

Literatura