Gestionar algoritmos aleatorios
En el vídeo has visto que kmeans() inicializa aleatoriamente los centros de los clústeres. Esta inicialización aleatoria puede hacer que las observaciones se asignen a etiquetas de clúster distintas. Además, puede llevar a encontrar diferentes mínimos locales para el algoritmo k-means. En este ejercicio verás ambos efectos.
En la parte superior de cada gráfico se mostrará la medida de calidad del modelo —la suma de cuadrados dentro del clúster—. Busca el o los modelos con el error más bajo para identificar los que dan mejores resultados.
Como kmeans() asigna inicialmente las observaciones a clústeres aleatorios, es importante fijar la semilla del generador de números aleatorios para garantizar la reproducibilidad.
Este ejercicio forma parte del curso
Unsupervised Learning in R
Instrucciones del ejercicio
El conjunto de datos x sigue disponible en tu espacio de trabajo. Tu tarea es generar seis modelos kmeans() con estos datos y representar los resultados de cada uno, para ver el impacto de las inicializaciones aleatorias en los resultados del modelo.
- Fija la semilla aleatoria a 1 con
set.seed(). - En cada iteración del bucle
for, ejecutakmeans()sobrex. Supón que el número de clústeres es 3 y el número de arranques (nstart) es 1. - Visualiza la pertenencia a clúster usando el argumento
coldeplot(). Observa cómo varían la medida de calidad y las asignaciones de clúster entre las seis ejecuciones del modelo.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# Set up 2 x 3 plotting grid
par(mfrow = c(2, 3))
# Set seed
set.seed(___)
for(i in 1:6) {
# Run kmeans() on x with three clusters and one start
km.out <- kmeans(___, ___, ___)
# Plot clusters
plot(x, col = ___,
main = km.out$tot.withinss,
xlab = "", ylab = "")
}