Gestire gli algoritmi casuali
Nel video hai visto che kmeans() inizializza casualmente i centri dei cluster. Questa inizializzazione casuale può portare ad assegnare le osservazioni a etichette di cluster diverse. Inoltre, può portare a trovare minimi locali differenti per l’algoritmo k-means. In questo esercizio vedrai entrambe le situazioni.
In alto in ciascun grafico verrà visualizzata la misura della qualità del modello—la somma totale degli errori al quadrato entro i cluster. Cerca il o i modelli con l’errore più basso per individuare quelli con risultati migliori.
Poiché kmeans() inizializza le osservazioni in cluster casuali, è importante fissare il seed del generatore di numeri casuali per garantire la riproducibilità.
Questo esercizio fa parte del corso
Unsupervised Learning in R
Istruzioni dell'esercizio
Il dato x è ancora disponibile nel tuo workspace. Il tuo compito è generare sei modelli kmeans() sul dato e tracciarne i risultati, per osservare l’impatto delle inizializzazioni casuali sui risultati del modello.
- Imposta il seed a 1 con
set.seed(). - A ogni iterazione del ciclo
for, eseguikmeans()sux. Supponi che il numero di cluster sia 3 e il numero di avvii (nstart) sia 1. - Visualizza l’appartenenza ai cluster usando l’argomento
coldiplot(). Osserva come la misura di qualità e le assegnazioni ai cluster variano tra le sei esecuzioni del modello.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# 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 = "")
}