Los distintos algoritmos de clustering, permiten encontrar agrupamientos de tal forma que los objetos de un grupo sean similares entre sí y diferentes de los objetos de otros grupos.  Pueden detectar regiones densas de puntos separadas de otras regiones densas por regiones poco densas de otros grupos.  Al ser métodos de aprendizaje no supervisado, se caracterizan por que en los datos no existen clases predefinidas

Los resultados obtenidos dependerán del algoritmo de agrupamiento seleccionado, el conjunto de datos disponible y la medida de similitud utilizada para comparar objetos (usualmente, definida como medida de distancia).

El presente trabajo, trata sobre la comparación de los resultados obtenidos de tres algoritmos de clustering, aplicados a un mismo dataset:  K-Means y Clustering Jerárquico

Dataset

El dataset utilizado  para el siguiente estudio, se refiere a información correspondiente a animales en cautiverio, que son distintos entre sí. Cada registro de un animal contiene 17 atributos biológicos, la mayoría son  booleanos  y hacen referencia sobre diversas características propias de su  especie. Así tenemos, si el animal es mamífero, pone huevos, es doméstico, acuático, dentado, etc. El atributo nombre de animal, es un identificador único y el atributo «tipo» corresponde el atributo de clase con valores del 1 al 7. Esta columna no se considera para la ejecución de los algoritmos de clustering.

El dataset esta publicado en http://sci2s.ugr.es/keel/dataset.php?cod=69

fig1

Metodología

Para el dataset, fue aplicado los métodos de clustering: x. Para los algoritmos: K-Means y Clustering Jerárquico, se realizó la técnica de acodamiento  para encontrar el valor más adecuado para el número de agrupamientos (clúster) en una primera instancia.

Para los algoritmos K-Means y Clustering Jerárquico  se aplicó  la técnica del promedio Silhouette para medir la calidad de los agrupamientos (clusters) encontrados. Este método va a permitir determinar qué tan bien cada objeto se encuentra dentro de su agrupación. El número óptimo de clusters k es el que maximiza la silueta promedio en un rango de posibles valores de k.

Para el algoritmo DBSCAN, se utilizó la técnica KNN (k-nearest neighbors), para hallar el valor más adecuado de la distancia épsilon.  El objetivo de su aplicación es  calcular el promedio de las distancias de todos los puntos a sus k vecinos más cercanos. El valor de k será incremental en un ciclo y se corresponde con MinPts.

A continuación con la distancia óptima calculada con la técnica KNN, se realizaron varias iteraciones para calcular los agrupamientos obtenidos con el algoritmo DBSCAN, con un valor de minPts de 2 a 20. El  valor de minPts óptimo se lo asociara con número máximo de clusters determinado, luego de la ejecución de todas las iteraciones

Resultados

Algoritmo K-MEANS

Al ejecutar la técnica de acodamiento, se puede observar que el numero sugerido de clusters K,  como parámetro para el algoritmo K-Means está entre 4 y 5.

fig2

Fig. 1 Técnica del codo en K-Means

Al ejecutar la técnica del promedio Silhouette, en un rango de entre 2 a 10 particiones, el resultado sugiere que el número óptimo de agrupamientos (clusters), para el dataset es 6

fig3

Fig. 2.  Técnica Promedio Silhouette para algoritmo K-Means

k.max <- 10
data <- data.scaled
sil <- rep(0, k.max)
#for(i in 2:k.max)

{ km.res <- kmeans(data, centers = i, nstart = 25)
ss <- silhouette(km.res$cluster, dist(data))
sil[i] <- mean(ss[, 3])}

# Plot the  average silhouette width

plot(1:k.max, sil, type = «b», pch = 8,
frame = FALSE, xlab = «Number of clusters k»)
abline(v = which.max(sil), lty = 2)

A continuación se procesa, el algoritmo K-Means, con parámetro K =6, y aplicamos un plot gráfico. Se obtiene el siguiente resultado

fig4

Fig. 3. Clusters obtenidos con algoritmo K-Means

 

Agrupamiento jerárquico

Al ejecutar la técnica de acodamiento, se puede observar que el numero sugerido de clusters K,  como parámetro para el algoritmo K-Means está entre 5 y 6.

fig5

Fig. 4.  Técnica del codo en Clustering Jerárquico

Al ejecutar la técnica del promedio Silhouette, en un rango de entre 2 a 12 particiones, el resultado sugiere que el número óptimo de agrupamientos (clusters), para el dataset es 5.

fig6

Fig. 5.  Técnica Promedio Silhouette para algoritmo K-Means

k.max <- 12
data <- zoo.data.scaled
sil <- rep(0, k.max)

# Compute the average silhouette width for
for(i in 2:k.max){ km.res <-eclust(zoo.data.scaled, «hclust», k = i, graph = FALSE)
ss <- silhouette(km.res$cluster, dist(data))
sil[i] <- mean(ss[, 3])}

plot(1:k.max, sil, type = «b», pch = 15,
frame = FALSE, xlab = «Number of clusters k»)
abline(v = which.max(sil), lty = 2)

Se ejecuta el algoritmo de clustering jerárquico, con corte de k=6 y aplicamos un plot gráfico y obtenemos el siguiente resultado

fig7

Fig. 6. Dendograma obtenido con algoritmo Clustering Jerárquico

 

Algoritmo DBSCAN

Se aplicó la técnica KNN para evaluar distancias de 0 a 2,5, para el dataset en cuestión y se determinó que con un numero de MinPts = 4, la distancia épsilon optima es de 1.8. Luego de las iteraciones con un valor del parámetro MinPts de 3 a 8, se puede observar el número máximo de clusters calculado es de 6, para valores de MinPts = 4  y a partir de un valor de MinPts = 6, el número de clusters comienza a decrecer.

fig-9

Fig. 7. Comparación de Clusters en relación al número de puntos mínimos en DBSCAN

 

Conclusiones

Entre los algoritmos KMeans y Clustering Jerárquico, el valor del promedio Silhouette, se maximiza  para el algoritmo KMeans, con 0.4095, con 6 clusters. A continuación se presenta la siguiente tabla, en los que se detalla en número de clusters proyectado y la medida promedio Silhouette calculada.

Algoritmo/Cluster 2 3 4 5 6 7
hierarchical  Silhouette 0.2613 0.3008 0.3842  0.4033  0.3866 0.4009
Kmeans  Silhouette 0.2635 0.2937 0.4017 0.4071 0.4085 0.4052

 

Con respecto al algoritmo DBSCAN, el número de clusters calculado con una distancia épsilon = 1.8 y MinPts = 4, es de 6.

El número de clases (grupos) para el dataset evaluado es de 7, por lo que se puede concluir que los algoritmos K-Means y DBSCAN, han presentado alto grado de bondad y una calidad aceptable en lo que a medidas de similitud se refiere, con respecto al conjunto de datos en lo que fueron aplicados,

 

 

Gran parte de los contenidos en línea están focalizados en sentimientos personales: reacciones, comentarios, likes (me gusta) o emociones.  Jonathan Harris y Sep Kamvar, crearon el proyecto We Feel Fine, una plataforma diseñada para documentar, resaltar y visualizar los datos emocionales. En 2005 Harris y Kamvar comenzaron a filtrar las entradas de su blog que incluían la frase «me siento bien…» o «me siento estresado…» A partir de estos, crearon automáticamente un gran repositorio de datos de emociones en línea etiquetados con metadatos básicos, incluyendo su género, la edad, la ubicación y las condiciones climáticas locales. Para el año 2009, Harris y Kamvar habían registrado nueve millones de sentimientos de 2,3 millones de blogs, con 15.000 – 20.000 entradas agregadas diariamente.
We Feel Fine presenta un diseño cinético, interactivo, con una serie de opciones de búsqueda. Los visitantes pueden comenzar a recoger un sentimiento al azar, o pueden navegar por el sitio, buscando ya sea por criterios de edad, país, genero o por cada uno de los miles de sentimientos mencionados. A partir de ahí, el conjunto de datos tiene seis posibles visualizaciones, cada uno revela un aspecto diferente de la emoción humana.

wefeelfine

Por eso wefeelfine.org ha captado el futuro de Social Media, en el cual con la ayuda de herramientas para extracción de datos de redes sociales,  algoritmos computacionales para analítica  semántica y técnicas de Big data, podemos predecir los sentimientos de las personas y anticiparnos a sus deseos.  Las posibilidades son infinitas, por ejemplo,  que pasaria si luego de expresar mis deseos de explorar el mundo  en Twitter,  al minuto me llegase una publicidad  de viajes exóticos por Facebook, Instagram o email.  Ese ultimo mensaje tendría toda mi atención.

We-Feel-Fine