Medida de calidad con Average Silhouette Width (ASW)

| Última modificación: 16 de abril de 2024 | Tiempo de Lectura: 2 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabes que es la medida de calidad con Average Silhouette Width, también conocida por sus siglas ASW? ¡En este post te lo explicamos!

Medida de calidad con Average Silhouette Width (ASW)

La medida de calidad con Average Silhouette Width nos dice cómo de similar es un objeto a su propio clúster (cohesión) en comparación con otros clústeres (separación).

Su valor va entre:

  • -1: la muestra no se parece demasiado a sus vecinos y se diferencia poco de las de otro clúster.
  • 1: la muestra se parece mucho a sus vecinos y muy poco a las de otro clúster,

Se da un valor por muestra; si la mayor parte de las muestras tienen un valor alto, la configuración del clúster es buena.

Su valor s(i) se calcula como:

Medida de calidad con average Silhouette width

Donde a(i) es la media de la distancia entre i y todos los puntos de su mismo clúster:

b(i) es la distancia media de/al clúster más parecido (el que tiene una menor distancia media):

C(i) es el clúster al cual i pertenece , mientras que lC(i)l es el número de elementos en ese clúster.

En esta muestra de datos podríamos calcular el silhouette para todos los valores de clúster. Cuando tengamos un silhouette medio más alto, va a ser mucho mejor.

Ejercicio sobre medida de calidad con Average Silhouette Width

#Medida de calidad con Average Silhouette Width 
options (repr.plot.height = 4, repr.plot.width = 6, repr.plot.res = 300)

N <- 300
x1 <- c (rnorm (N, mean = 2, sd = 2), rnorm (N, mean = -2, sd = 2), rnorm (N, mean = -5, sd = 1))
x2 <- c (0.4 * x1 + c (rnorm (N, mean = 3, sd = 2), rnorm (N, mean = -3, sd = 1), rnorm (N, mean = 7, sd = 1)))
df <- data.frame (x1, x2)

library (ggplot2)
ggplot (data = df, aes (x = x1, y = x2)) + geom_point (alpha = 0.7)
#Medida de calidad con Average Silhouette Width 
library (cluster)

q <- c ()
for (k in 2 : 8) {
myclust <- kmeans (df, k)
ss <- silhouette (myclust$cluster, dist (df))
q [k] <- mean (ss[ , "sil_width"])
}
plot(q)
#Medida de calidad con Average Silhouette Width 
k <- 3
myclust <- kmeans (df, k)
ss <- silhouette (myclust$cluster, dist (df))
summary (ss)
plot (ss, col = 1 : k, border = NA)

¿Ahora qué sigue?

Una vez entendido este concepto de silhouette y cómo puede influenciar en los procesos de clustering, podemos pasar al siguiente nivel. Para ello, te invitamos a seguir nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, una formación intensiva con la que podrás adquirir todos los conocimientos necesarios para incursionar en uno de los mercados laborales más prolíficos del mundo IT y subir un escalón más para lograr tu sueño de ser un gran profesional. ¡Anímate ahora a solicitar más información!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado