LoslegenKostenlos starten

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>
Kurs ansehen

Übungsanweisungen

Die Daten x sind weiterhin in deinem Workspace verfügbar.

  • Erstelle 15 kmeans()-Modelle auf x, jeweils mit einer anderen Anzahl von Clustern (von 1 bis 15). Setze nstart = 20 für alle Modellläufe und speichere die gesamte innerhalb-Cluster-Quadratsumme jedes Modells im i-ten Element von wss.
  • Führe den bereitgestellten Code aus, um einen Scree-Plot der wss für alle 15 Modelle zu erstellen.
  • Schau dir deinen Scree-Plot an. Wie viele Cluster sind in den Daten angelegt? Setze k auf 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 <- ___
Code bearbeiten und ausführen