Selezionare il numero di cluster
L'algoritmo k-means richiede come input il numero di cluster. Se conosci in anticipo il numero di cluster (ad esempio, per vincoli di business), impostarlo è semplice. Tuttavia, come hai visto nel video, se non conosci il numero di cluster e devi determinarlo, dovrai eseguire l'algoritmo più volte, ogni volta con un numero diverso di cluster. In questo modo puoi osservare come cambia una misura della qualità del modello al variare del numero di cluster.
In questo esercizio, eseguirai più volte kmeans() per vedere come cambia la qualità del modello al variare del numero di cluster. I grafici che mostrano queste informazioni aiutano a determinare il numero di cluster e sono spesso chiamati scree plot.
Il grafico ideale presenta un gomito (elbow), dove la misura di qualità migliora più lentamente man mano che aumenta il numero di cluster. Questo indica che la qualità del modello non sta più migliorando in modo sostanziale all'aumentare della complessità del modello (cioè, del numero di cluster). In altre parole, il gomito indica il numero di cluster intrinseco nei dati.
Questo esercizio fa parte del corso
Unsupervised Learning in R
Istruzioni dell'esercizio
I dati, x, sono ancora disponibili nel tuo workspace.
- Costruisci 15 modelli
kmeans()sux, ciascuno con un numero diverso di cluster (da 1 a 15). Impostanstart = 20per tutte le esecuzioni del modello e salva la somma totale dei quadrati entro i cluster di ciascun modello nell'elementoi-esimo diwss. - Esegui il codice fornito per creare uno scree plot dei
wssper tutti e 15 i modelli. - Osserva lo scree plot. Quanti cluster sono intrinseci nei dati? Imposta
kuguale al numero di cluster nella posizione del gomito.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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 <- ___