ComenzarEmpieza gratis

Selección del número de clústeres

El algoritmo k-means asume el número de clústeres como parte de la entrada. Si conoces el número de clústeres de antemano (por ejemplo, por ciertas restricciones del negocio), fijarlo es sencillo. Sin embargo, como viste en el vídeo, si no sabes cuántos clústeres hay y necesitas determinarlo, tendrás que ejecutar el algoritmo varias veces, cada una con un número distinto de clústeres. A partir de esto, puedes observar cómo cambia una medida de calidad del modelo con el número de clústeres.

En este ejercicio, ejecutarás kmeans() varias veces para ver cómo cambia la calidad del modelo a medida que cambia el número de clústeres. Los gráficos que muestran esta información ayudan a determinar el número de clústeres y suelen llamarse scree plots (gráficos de sedimentación).

El gráfico ideal tendrá un codo donde la medida de calidad mejora más lentamente al aumentar el número de clústeres. Esto indica que la calidad del modelo ya no mejora de forma sustancial a medida que aumenta la complejidad del modelo (es decir, el número de clústeres). En otras palabras, el codo indica el número de clústeres inherente en los datos.

Este ejercicio forma parte del curso

Unsupervised Learning in R

Ver curso

Instrucciones del ejercicio

Los datos, x, siguen disponibles en tu espacio de trabajo.

  • Construye 15 modelos kmeans() sobre x, cada uno con un número distinto de clústeres (de 1 a 15). Establece nstart = 20 en todas las ejecuciones y guarda la suma total de cuadrados dentro de los clústeres de cada modelo en el elemento i de wss.
  • Ejecuta el código proporcionado para crear un scree plot de wss para los 15 modelos.
  • Echa un vistazo a tu scree plot. ¿Cuántos clústeres hay de forma inherente en los datos? Asigna a k el número de clústeres en la posición del codo.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Initialize total within sum of squares error: wss
wss <- 0

# For 1 to 15 cluster centers
for (i in ___) {
  km.out <- kmeans(___, centers = i, ___)
  # Save total within sum of squares to wss variable
  wss[i] <- km.out$___
}

# Plot total within sum of squares vs. number of clusters
plot(1:15, wss, type = "b", 
     xlab = "Number of Clusters", 
     ylab = "Within groups sum of squares")

# Set k equal to the number of clusters corresponding to the elbow location
k <- ___
Editar y ejecutar código