Zufällige Algorithmen handhaben
Im Video hast du gesehen, dass kmeans() die Zentren der Cluster zufällig initialisiert. Diese zufällige Initialisierung kann dazu führen, dass Beobachtungen unterschiedlichen Clusterlabels zugewiesen werden. Außerdem kann die zufällige Initialisierung dazu führen, dass für den k-means-Algorithmus verschiedene lokale Minima gefunden werden. Diese Übung zeigt beide Effekte.
Oben in jedem Plot wird das Maß der Modellgüte – die totale Summe der quadrierten Abweichungen innerhalb der Cluster – dargestellt. Suche die Modelle mit dem niedrigsten Fehler, um die besseren Modellergebnisse zu finden.
Da kmeans() Beobachtungen zufällig Clustern zuweist, ist es wichtig, für Reproduzierbarkeit den Seed des Zufallszahlengenerators zu setzen.
Diese Übung ist Teil des Kurses
<Kurs>Unüberwachtes Lernen in R</Kurs>Übungsanweisungen
Die Daten x sind weiterhin in deinem Arbeitsbereich verfügbar. Deine Aufgabe ist es, sechs kmeans()-Modelle auf den Daten zu erzeugen und die Ergebnisse jeweils zu plotten, um den Einfluss zufälliger Initialisierungen auf die Modellergebnisse zu sehen.
- Setze den Zufallszahlenseed mit
set.seed()auf 1. - Führe in jeder Iteration der
for-Schleifekmeans()aufxaus. Gehe von 3 Clustern und einer Startzahl (nstart) von 1 aus. - Visualisiere die Clusterzugehörigkeiten mit dem Argument
colinplot(). Beobachte, wie sich das Gütemaß und die Clusterzuweisungen zwischen den sechs Modellläufen unterscheiden.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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 = "")
}