Was machst du, wenn es keinen Ellbogenpunkt für kmeans Clustering gibt?


13

Ich habe gelernt, dass Sie bei der Auswahl einer Reihe von Clustern nach einem Ellbogenpunkt für verschiedene Werte von K suchen sollten. Ich habe die Werte von withinss für Werte von k von 1 bis 10 geplottet, sehe aber kein klares Ellbogen. Was machst du in so einem Fall?

Lästige KMeans


2
Es gibt viele Clustering-Kriterien, wobei die "SS-Ellbogen" -Regel nur eines und nicht das beste ist. Versuchen Sie es mit anderen. Es ist auch wahrscheinlich, dass Ihre Daten keine Cluster enthalten.
ttnphns

@ttnphns Von was für einem mystischen Anderen sprichst du? Wie kann ich keine Cluster in meinen Daten haben? Wie soll ich wissen?
Glen

Antworten:


7

Falsche Methode?

Möglicherweise verwenden Sie den falschen Algorithmus für Ihr Problem.

Falsche Vorverarbeitung?

K-means reagiert sehr empfindlich auf Vorverarbeitung. Wenn ein Attribut viel größer ist als die anderen, dominiert es die Ausgabe. Ihre Ausgabe wird dann effektiv eindimensional sein

Ergebnisse visualisieren

Was auch immer Sie tun, Sie müssen Ihre Ergebnisse durch etwas anderes validieren als mit einer Zahl wie SSQ zu beginnen. Betrachten Sie stattdessen Visualisierung .

Die Visualisierung kann Ihnen auch mitteilen, dass sich möglicherweise nur ein einziger Cluster in Ihren Daten befindet.


Was sind einige gute Visualisierungsoptionen für mehrdimensionale Daten?
Jeremy

1
Kommt auf deine Daten an. Einige Daten können gut projiziert werden, da sie eine wesentlich geringere intrinsische Dimension aufweisen. Zeitreihen können einfach aufgezeichnet werden. Wenn es sich bei Ihren Daten um ein serialisiertes Bild handelt, können Sie es als Bilder visualisieren. Die Visualisierung hängt in jedem Fall von Ihren Daten ab. Es wird nie eine einheitliche Lösung geben.
Hat aufgehört - Anony-Mousse

3

Eine Möglichkeit besteht darin, die Mitglieder in Ihren Clustern manuell auf ein bestimmtes k zu untersuchen, um festzustellen, ob die Gruppierungen sinnvoll sind (sind sie unterscheidbar?). Dies kann über Kontingenztabellen und bedingte Mittel erfolgen. Tun Sie dies für eine Vielzahl von k, und Sie können bestimmen, welcher Wert angemessen ist.

Ein weniger subjektiver Weg ist die Verwendung des Silhouette-Werts:

/programming/18285434/how-do-i-choose-k-when-using-k-means-clustering-with-silhouette-function

Dies kann mit Ihrem bevorzugten Softwarepaket berechnet werden. Über den Link:

Diese Methode vergleicht nur die gruppeninterne Ähnlichkeit mit der nächsten Gruppenähnlichkeit. Wenn die durchschnittliche Entfernung eines Datenelements zu anderen Mitgliedern desselben Clusters höher ist als die durchschnittliche Entfernung zu anderen Clustermitgliedern, ist dieser Wert negativ und die Clusterbildung ist nicht erfolgreich. Silhuette-Werte nahe 1 weisen dagegen auf einen erfolgreichen Clustering-Vorgang hin. 0,5 ist kein genaues Maß für die Clusterbildung.


Glen, ich persönlich denke deine Antwort ist unvollständig. Der 1. Absatz sieht unklar aus. Was ist das für eine "manuelle Inspektion", können Sie bitte den Vorgang beschreiben? Dann ist Silhouette "weniger subjektiv" als was ? Und warum?
ttnphns

@ttnphns Antwort aktualisiert.
Glen

contingency tables and conditional meansDas ist weiter mystisch. Was soll ich damit machen, um "subjektiv" zu einem guten k zu gelangen?
TTNPHNS

@ttnphns Wenn das Poster eine Frage dazu hat, werde ich nachgehen. Wie gesagt, Sie sollten überprüfen, ob die Gruppierungen unterscheidbar sind. Es scheint mir klar zu sein.
Glen

Wenn ich also niedrige Silhouettenwerte (~ .35) erhalte, könnte dies darauf hinweisen, dass diese Daten keine wirklich guten Cluster haben?
Jeremy

0
  • Kein Ellbogen für K-Mittel bedeutet nicht, dass die Daten keine Cluster enthalten.
  • Kein Ellbogen bedeutet, dass der verwendete Algorithmus keine Cluster trennen kann. (Denken Sie an K-Mittel für konzentrische Kreise, vs DBSCAN)

Im Allgemeinen können Sie Folgendes in Betracht ziehen:

  • stimmen Sie Ihren Algorithmus ab;
  • benutze einen anderen Algorithmus;
  • Daten vorverarbeiten.

-1

Wir können das NbClust-Paket verwenden, um den optimalsten Wert von k zu finden. Es bietet 30 Indizes zur Bestimmung der Anzahl der Cluster und schlägt das beste Ergebnis vor.

NbClust (data = df, distance = "euclidean", min.nc = 2, max.nc = 15, method = "kmeans", index = "all")


Willkommen auf der Seite! Könnten Sie diese Antwort erweitern? Obwohl hilfreich, würde ein wenig mehr Detail es nützlicher machen.
mkt - Wiedereinsetzung von Monica
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.