En mi artículo anterior, Tutorial del Algoritmo de Agrupamiento Jerárquico, hicimos un resumen sobre el agrupamiento con énfasis en el método de Agrupamiento Jerárquico, que funciona mejor a la hora de buscar soluciones jerárquicas . En los casos donde no optemos por una solución jerárquica y no queramos especificar el número de agrupaciones, usaremos el Agrupamiento Espacial Basado en Densidad de Aplicaciones con Ruido, conocido por sus siglas en inglés como DBSCAN, el cual resulta una buena opción.
Esta técnica funciona mejor con clústeres de formas arbitrarias, es decir, clústeres sin una forma geométrica simple como un círculo o un cuadrado, y con ruido, lo que significa que esos clústeres tienen puntos de datos que no les pertenecen. DBSCAN también ayuda en la detección de valores atípicos mediante la agrupación de puntos cercanos entre sí con el uso de dos parámetros llamados Eps y minPoints.
Eps, también conocido como Epsilon, es el radio de los círculos que generamos alrededor de cada punto de datos, mientras que minPoints es el número más pequeño de puntos de datos que deben rodear un solo punto de datos central para que se convierta en un punto central por él mismo.
Todos los puntos que no están dentro de la distancia Eps de otro punto y no tienen el número correspondiente de minPoints dentro de su propia distancia Eps se llaman ruido o valores atípicos.
La selección de Eps y minPoints deben ser realizados con una concentración específica ya que un solo cambio en los valores podría influir en todo el proceso de agrupación. Pero, ¿cómo podemos saber los valores recomendados para nuestros problemas?
Podemos usar algunas estimaciones de acuerdo al conjunto de datos de nuestro problema. Debemos elegir Eps dependiendo de la distancia del conjunto de datos y podemos usar un gráfico de distancia-k para guiarnos. Debemos estar conscientes de que siempre es preferible un número pequeño, ya que un valor grande combinaría más puntos de datos por clúster y cierta información podría perderse.
Es evidente que los resultados más óptimos se consiguen cuando los valores de “Eps” se encuentran entre 0.17 y 0.25. Cuando el valor de Eps es menor que este rango, hay una cantidad excesiva de ruido o valores atípicos, representados por el color verde en el diagrama. En cambio, cuando es mayor, las agrupaciones se vuelven muy incluyentes como el valor 1 de Eps, cuando es un solo grupo.
El valor de minPoints va de acuerdo con el número de puntos de datos que tengamos. Sin embargo, debemos considerar que el valor mínimo puede ser nuestra dimensión de nuestro conjuntos de datos, es decir, el número de características con las que trabajamos con uno adicional, mientras que no tengamos un número de valor máximo. Por lo tanto, mientras mayor sea la recopilación de datos, mayores son los valores de minPoints que debemos seleccionar.
Ahora que entendemos los conceptos, veamos cómo funciona el algoritmo. El primer paso es clasificar los puntos de datos. El algoritmo explorará todos los puntos de datos pero escogerá uno al azar para empezar. Si la iteración confirma que se encuentra la cantidad correspondiente de minPoints en el radio Eps alrededor del punto de datos seleccionado, considerará estos puntos como parte del mismo grupo.
Luego, el algoritmo repetirá el proceso con los vecinos ya seleccionados, posiblemente expandiendo el grupo hasta que no se encuentren más puntos de datos cercanos. En ese momento, seleccionará otro punto al azar y empezará a realizar el mismo proceso.
Puede ser posible tener puntos que no se encuentren asignados a ningún grupo. Estos puntos son considerados ruidos o valores atípicos, y serán descartados de nuestro algoritmo una vez dejemos de iterar a través del conjunto de datos.
Ahora que conocemos la forma en la que el algoritmo trabaja, vamos a trabajar con un simple tutorial en Python
Python Tutorial
Como siempre, vamos a usar una distribución de Anaconda. En caso de que no te encuentres relacionado con ella, puedes instalar previamente los paquetes al ejecutar algunos comandos de instalación pip o puedes ejecutar el siguiente bloque de código, comenzando por descomentar desde el “import sys”:
Ahora, vamos a realizar algunas importaciones básicas para usarlas en nuestro programa.
Para este tutorial, vamos a usar un conjunto de datos conocido de nuestro tutorial anterior, una lista de clientes de un centro comercial (obtenido de Machine Learning A-Z: Download Codes and Datasets — Page — SuperDataScience | Machine Learning | AI | Data Science Career | Analytics | Success). Vamos a utilizar, al igual que antes, los valores del ingreso anual y el índice de gastos.
Ahora que tenemos nuestros puntos de datos en memoria, vamos a realizar un gráfico donde podamos visualizar estos puntos para una visión clara de este ejemplo.
Como se mencionó anteriormente, para ejecutar este algoritmo necesitamos algunos parámetros definidos: Eps y minPoints. Aunque no existe una forma automática de determinar los valores de minPoints, podemos realizar algunas funciones que nos permitirán tener nuestros Eps. Esto puede lograrse mediante el cálculo de la distancia-k entre todos los puntos en el conjunto de datos, el codo de la curva nos dará una aproximación del valor Eps.
En este caso, cuando llamamos a una función obtendremos un número flotante o un valor decimal. Tendremos que redondearlo
Aquí tendremos un valor Eps de 5, el cual será nuestra entrada para la siguiente función que permite la estimación de minPoints. Luego, le asignaremos una etiqueta a cada grupo, comenzando desde -1 (representando los ruidos o valores atípicos) hasta 4 (nuestro último grupo explorado).
Por último, realizaremos nuestro gráfico de dispersión, asignando colores a cada una de las etiquetas. Finalizando este tutorial.
En conclusión, el algoritmo DBSCAN es un método versátil y eficaz para la agrupación de datos en una variedad de aplicaciones. Particularmente es bien adaptado para manipular datos con formas irregulares y densidades variables, y es capaz de identificar puntos de ruido y valores atípicos en la información. DBSCAN también es relativamente fácil de implementar y no requiere conocimiento previo del número de agrupaciones en los datos, convirtiéndolo en una opción conocida para análisis exploratorio de datos.
Sin embargo, como cualquier otro algoritmo de agrupación, DBSCAN tiene ciertas limitaciones y supuestos que deben ser tomadas en cuenta a la hora de aplicarlo en datos del mundo real. Por ejemplo, supone que las agrupaciones son regiones densas separadas por zonas de menor densidad, y no puede desempeñarse adecuadamente en datos con niveles de densidad de gran diferencia o puntos de ruido que son distribuidos en toda la información. Además, requiere especial cuidado a la hora de seleccionar sus parámetros, tales como el tamaño del radio hasta donde admite vecinos y el número mínimo de puntos requeridos para formar un grupo, los cuales pueden afectar los resultados de las agrupaciones.
En general, el algoritmo DBSCAN es una herramienta valiosa para la agrupación de datos y ha sido aplicada exitosamente en una amplia gama de campos, incluyendo procesamiento de imágenes, extracción de textos y bioinformática. Comprendiendo sus ventajas y limitaciones, investigadores y profesionales pueden tomar decisiones razonadas sobre cómo y cuándo aplicar DBSCAN para sus propios datos.
Si estás interesado en explorar el código detrás del proyecto discutido en este artículo, te invito a visitar el repositorio correspondiente en GitHub. Allí, puedes encontrar el código fuente y verlo en acción. Al explorar el repositorio, obtendrás una comprensión más profunda de cómo se construyó el proyecto y cómo podrías usarlo para tus propios fines. Estoy disponible para responder cualquier pregunta que puedas tener, así que no dudes en contactarme si necesitas soporte. ¡Feliz codeo!