DBSCAN

DBSCAN: Density-based spatial clustering of applications with noise

Es un método de clusterización adecuado para buscar patrones de agrupación en el espacio físico, este método es más adecuado para los datos en los que los métodos jerárquicos no funcionan del todo bien debido al ruido y los valores atípicos.

Este algorítmo agrupa los puntos que están más cercanos respecto a alguna métrica, comúnmente se utiliza la distancia euclidiana, además para este algorítmo se tiene que cada cluster contendrá un mínimo de puntos.

Diferencias con otros métodos de clusterización.

Este método tiene sus ventajas y desventajas respecto otros métodos de clusterización (K-MEANS por ejemplo) y dependiendo del problema que se quiera analizar se debe elegir el método más adecuado, aún así hay varios aspectos que deben ser tomados en cuenta.

También tiene algunas desventajas

Implementación en R

Parámetros

Este método necesita sólo dos parámetros

Ejemplos

IRIS

Con la base iris Tenemos 150 observaciones y 5 variables, una de ellas es “species” que es a la clasificación que trataríamos llegar aplicando el algorítmo así que la removeremos del dataset

Cabe mencionar que sólo hay 3 tipos de especies, así que lo ideal sería obtener esos 3 clusters.

##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

Primero, tenemos 4 variables restantes en la base así que tomaremos 5 como el mínimo número de puntos.

Ahora, para elegir el radio de los grupos utilizaremos un K-Distance Plot.

#df: dataset sin variable "species"
#k: el número mínimo de puntos que elegimos

kNNdistplot(df, k = 5  )
abline(h = 0.4, lty = 2)

Por lo que se observa en la gráfica tomaremos eps= 0.4

Por último, al aplicar la función y graficar el resultado se observaron 4 clusters y con el fin de que el resultado se acercara más a la clasificación con la que ya cuenta el dataset se modificó el radio a 4.2 y así se llegó a 3 clusters.

#Con eps=0.4
cl<-dbscan(df,eps=0.4,MinPts = 5)
head(cbind(df,cl$cluster))
##   Sepal.Length Sepal.Width Petal.Length Petal.Width cl$cluster
## 1          5.1         3.5          1.4         0.2          1
## 2          4.9         3.0          1.4         0.2          1
## 3          4.7         3.2          1.3         0.2          1
## 4          4.6         3.1          1.5         0.2          1
## 5          5.0         3.6          1.4         0.2          1
## 6          5.4         3.9          1.7         0.4          1
hullplot(df,cl$cluster, main = "Convex cluster Hulls, eps= 0.4")

#Con eps=0.42
cl1<-dbscan(df,eps=0.42,MinPts = 5)
head(cbind(df,cl1$cluster))
##   Sepal.Length Sepal.Width Petal.Length Petal.Width cl1$cluster
## 1          5.1         3.5          1.4         0.2           1
## 2          4.9         3.0          1.4         0.2           1
## 3          4.7         3.2          1.3         0.2           1
## 4          4.6         3.1          1.5         0.2           1
## 5          5.0         3.6          1.4         0.2           1
## 6          5.4         3.9          1.7         0.4           1
hullplot(df,cl1$cluster,  main = "Convex cluster Hulls, eps= 0.42")

USARRESTS

Nuevamente debemos elegir los parámetros, el mínimo de puntos que habrá en cada cluster y la distancia que se utilizará.

Elegiremos que tengan al menos 4 puntos y eps = 1

Aplicamos la función y graficamos el resultado

En esta se observa que no hay tantos clusters aún tomando una distancia relativamente grande y el mínimo de puntos es igual al número de variables, esta base de datos es muy pequeña y puede ser por eso que no logre encontrar tantos grupos.

Ejemplo 3

Por último agrego el ejemplo con datos que vienen con la paquetería en la cuál se pueden observar los resultados

Es una base de datos de 8000 observaciones y 2 variables

Tomaremos eps=5