DBSCAN: ¿Qué es eso? ¿Cuándo usarlo? Cómo usarlo.

DBSCAN (Agrupación espacial basada en densidad de aplicaciones con ruido) es un método de aprendizaje popular no supervisado utilizado en la construcción de modelos y algoritmos de aprendizaje automático. Antes de continuar, necesitamos definir qué es un método de aprendizaje “sin supervisión”. Los métodos de aprendizaje sin supervisión son cuando no hay un objetivo claro o resultado que estamos buscando encontrar. En cambio, estamos agrupando los datos en función de la similitud de las observaciones. Para ayudar a aclarar, tomemos a Netflix como ejemplo. Según los programas anteriores que has visto en el pasado, Netflix te recomendará programas para que veas a continuación. Cualquiera que haya visto o estado en Netflix ha visto la siguiente pantalla con recomendaciones (Sí, esta imagen está tomada directamente de mi cuenta de Netflix y si nunca ha visto Shameless antes, le sugiero que se suba lo antes posible).

Debido a que vi "Shameless", Netflix recomienda varios otros programas similares para ver. Pero, ¿de dónde recopila Netflix esas recomendaciones? Teniendo en cuenta que está tratando de predecir el futuro con el programa que veré a continuación, Netflix no tiene nada en lo que basar las predicciones o recomendaciones (no hay un objetivo claro y definitivo). En cambio, Netflix observa a otros usuarios que también vieron "Shameless" en el pasado, y analiza lo que esos usuarios vieron además de "Shameless". Al hacerlo, Netflix agrupa a sus usuarios en base a similitudes de intereses. Así es exactamente cómo funciona el aprendizaje no supervisado. Simplemente agrupando las observaciones juntas en función de la similitud, con la esperanza de sacar conclusiones precisas basadas en los grupos.

De vuelta a DBSCAN. DBSCAN es un método de agrupación que se utiliza en el aprendizaje automático para separar los grupos de alta densidad de los grupos de baja densidad. Dado que DBSCAN es un algoritmo de agrupamiento basado en la densidad, hace un gran trabajo al buscar áreas en los datos que tienen una alta densidad de observaciones, en comparación con áreas de los datos que no son muy densas con las observaciones. DBSCAN también puede ordenar los datos en grupos de diferentes formas, otra gran ventaja. DBSCAN funciona como tal:

  • Divide el conjunto de datos en n dimensiones
  • Para cada punto en el conjunto de datos, DBSCAN forma una forma de n dimensiones alrededor de ese punto de datos, y luego cuenta cuántos puntos de datos caen dentro de esa forma.
  • DBSCAN cuenta esta forma como un clúster. DBSCAN expande iterativamente el clúster, pasando por cada punto individual dentro del clúster y contando el número de otros puntos de datos cercanos. Tome el gráfico a continuación como ejemplo:

Pasando por el proceso mencionado paso a paso, DBSCAN comenzará dividiendo los datos en n dimensiones. Después de que DBSCAN lo haya hecho, comenzará en un punto aleatorio (en este caso, supongamos que era uno de los puntos rojos), y contará cuántos otros puntos están cerca. DBSCAN continuará este proceso hasta que no haya otros puntos de datos cerca, y luego buscará formar un segundo grupo.

Como habrás notado en el gráfico, hay un par de parámetros y especificaciones que necesitamos darle a DBSCAN antes de que haga su trabajo. Los dos parámetros que debemos especificar son los siguientes:

¿Cuál es el número mínimo de puntos de datos necesarios para determinar un solo clúster?
¿Qué tan lejos puede estar un punto del siguiente punto dentro del mismo grupo?

Volviendo al gráfico, el épsilon es el radio dado para probar la distancia entre los puntos de datos. Si un punto cae dentro de la distancia épsilon de otro punto, esos dos puntos estarán en el mismo grupo.

Además, el número mínimo de puntos necesarios se establece en 4 en este escenario. Al pasar por cada punto de datos, siempre que DBSCAN encuentre 4 puntos dentro de una distancia épsilon entre sí, se formará un grupo.

IMPORTANTE: Para que un punto se considere un punto "central", debe contener el número mínimo de puntos dentro de una distancia épsilon. Ergo, la visualización en realidad solo tiene DOS puntos centrales. Vea la documentación aquí y observe el parámetro min_samples en particular.

También notará que el punto azul en el gráfico no está contenido en ningún clúster. DBSCAN NO necesariamente clasifica cada punto de datos y, por lo tanto, es excelente para manejar valores atípicos en el conjunto de datos. Examinemos el siguiente gráfico:

La imagen de la izquierda muestra un método de agrupación más tradicional que no tiene en cuenta la multidimensionalidad. Mientras que la imagen de la derecha muestra cómo DBSCAN puede contorsionar los datos en diferentes formas y dimensiones para encontrar grupos similares.

La imagen de la izquierda muestra un método de agrupación más tradicional, como K-Means, que no tiene en cuenta la multidimensionalidad. Mientras que la imagen de la derecha muestra cómo DBSCAN puede contorsionar los datos en diferentes formas y dimensiones para encontrar grupos similares. También notamos en la imagen de la derecha, que los puntos a lo largo del borde exterior del conjunto de datos no están clasificados, lo que sugiere que son valores atípicos entre los datos.

Ventajas de DBSCAN:

  • Es excelente para separar grupos de alta densidad versus grupos de baja densidad dentro de un conjunto de datos dado.
  • Es excelente para manejar valores atípicos dentro del conjunto de datos.

Desventajas de DBSCAN:

  • No funciona bien cuando se trata de grupos de diferentes densidades. Si bien DBSCAN es excelente para separar grupos de alta densidad de grupos de baja densidad, DBSCAN lucha con grupos de densidad similar.
  • Luchas con datos de alta dimensionalidad. Lo sé, en todo este artículo he declarado cómo DBSCAN es excelente para contorsionar los datos en diferentes dimensiones y formas. Sin embargo, DBSCAN solo puede ir tan lejos, si se le dan datos con demasiadas dimensiones, DBSCAN sufre

A continuación, he incluido cómo implementar DBSCAN en Python, en el que luego explico las métricas y la evaluación de su modelo DBSCAN

Implementación de DBSCAN en Python

1. Asignando los datos como nuestros valores X
Recuerde, dado que este es un aprendizaje no supervisado, no tenemos ningún valor y claro para establecer.
2. Instanciando nuestro modelo DBSCAN. En el siguiente código, epsilon = 3 y min_samples es el número mínimo de puntos necesarios para constituir un clúster.
3. Almacenar las etiquetas formadas por el DBSCAN
4. Identificar qué puntos forman nuestros "puntos centrales"
5. Cálculo del número de grupos
6. Calcular el puntaje de silueta

Métricas para medir el rendimiento de DBSCAN:

Puntaje de silueta: El puntaje de silueta se calcula utilizando la distancia media dentro del grupo entre puntos, Y la distancia media del grupo más cercano. Por ejemplo, un grupo con muchos puntos de datos muy cercanos entre sí (alta densidad) Y está muy lejos del siguiente grupo más cercano (lo que sugiere que el grupo es muy único en comparación con el siguiente más cercano), tendrá un puntaje de silueta fuerte . Un puntaje de silueta varía de -1 a 1, siendo -1 el peor puntaje posible y 1 el mejor puntaje. Las puntuaciones de silueta de 0 sugieren grupos superpuestos.

Inercia: la inercia mide la suma de cuadrados del clúster interno (la suma de cuadrados es la suma de todos los residuos). La inercia se utiliza para medir qué tan relacionados están los grupos entre sí, cuanto menor sea la puntuación de inercia, mejor. SIN EMBARGO, es importante tener en cuenta que la inercia se basa en gran medida en el supuesto de que los grupos son convexos (de forma esférica). DBSCAN no necesariamente divide los datos en grupos esféricos, por lo tanto, la inercia no es una buena medida para evaluar los modelos DBSCAN (por lo que no incluí la inercia en el código anterior). La inercia se usa con más frecuencia en otros métodos de agrupación, como la agrupación K-means.

Otros recursos:

El blog de Naftali Harris es un tremendo recurso adicional para obtener más información.