Anzahl der Cluster auswählen
Der k-means-Algorithmus nimmt die Anzahl der Cluster als Teil der Eingabe an. Wenn du die Anzahl der Cluster im Voraus kennst (z. B. aufgrund bestimmter geschäftlicher Vorgaben), ist das Festlegen der Clusterzahl einfach. Wie du im Video gesehen hast, musst du jedoch, wenn du die Anzahl der Cluster nicht kennst und sie bestimmen willst, den Algorithmus mehrfach laufen lassen – jedes Mal mit einer anderen Clusterzahl. So kannst du beobachten, wie sich ein Maß für die Modellqualität mit der Anzahl der Cluster verändert.
In dieser Übung führst du kmeans() mehrfach aus, um zu sehen, wie sich die Modellqualität mit der Anzahl der Cluster verändert. Diagramme, die diese Information anzeigen, helfen bei der Bestimmung der Clusterzahl und werden oft als Scree-Plots bezeichnet.
Das ideale Diagramm hat einen Knick (Elbow), ab dem sich das Qualitätsmaß langsamer verbessert, je mehr Cluster hinzukommen. Das zeigt, dass sich die Modellqualität nicht mehr wesentlich verbessert, während die Modellkomplexität (also die Anzahl der Cluster) steigt. Anders gesagt: Der Knick zeigt die Anzahl der in den Daten angelegten Cluster an.
Diese Übung ist Teil des Kurses
<Kurs>Unüberwachtes Lernen in R</Kurs>Übungsanweisungen
Die Daten x sind weiterhin in deinem Workspace verfügbar.
- Erstelle 15
kmeans()-Modelle aufx, jeweils mit einer anderen Anzahl von Clustern (von 1 bis 15). Setzenstart = 20für alle Modellläufe und speichere die gesamte innerhalb-Cluster-Quadratsumme jedes Modells imi-ten Element vonwss. - Führe den bereitgestellten Code aus, um einen Scree-Plot der
wssfür alle 15 Modelle zu erstellen. - Schau dir deinen Scree-Plot an. Wie viele Cluster sind in den Daten angelegt? Setze
kauf die Anzahl der Cluster an der Position des Knicks.
Interaktive praktische Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# 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 <- ___