Ich habe eine Clusterbildung von Koordinatenpunkten (Längen- und Breitengrad) durchgeführt und überraschende, nachteilige Ergebnisse aus Clustering-Kriterien für die optimale Anzahl von Clustern gefunden. Die Kriterien sind dem clusterCrit()
Paket entnommen . Die Punkte, die ich auf einem Plot zu gruppieren versuche (die geografischen Merkmale des Datensatzes sind deutlich sichtbar):
Das vollständige Verfahren war das folgende:
- Hierarchisches Clustering an 10.000 Punkten durchgeführt und Medoide für 2: 150 Cluster gespeichert.
- Nahm die Medoide aus (1) als Keime für kmeans Clustering von 163k Beobachtungen.
- 6 verschiedene Clustering-Kriterien für die optimale Anzahl von Clustern überprüft.
Nur zwei Clustering-Kriterien ergaben für mich sinnvolle Ergebnisse - die Kriterien Silhouette und Davies-Bouldin. Für beide sollte man das Maximum auf dem Grundstück suchen. Es scheint, dass beide die Antwort „22 Cluster sind eine gute Zahl“ geben. Für die folgenden Grafiken: Auf der x-Achse ist die Anzahl der Cluster und auf der y-Achse der Wert des Kriteriums. Entschuldigen Sie die falschen Beschreibungen auf dem Bild. Silhouette und Davies-Bouldin:
Schauen wir uns nun die Werte von Calinski-Harabasz und Log_SS an. Das Maximum befindet sich auf dem Grundstück. Die Grafik zeigt, dass die Clusterbildung umso besser ist, je höher der Wert ist. Ein derart stetiges Wachstum ist ziemlich überraschend. Ich denke, 150 Cluster sind bereits eine ziemlich hohe Zahl. Unterhalb der Diagramme für Calinski-Harabasz- bzw. Log_SS-Werte.
Nun zum überraschendsten Teil die letzten beiden Kriterien. Für die Ballhalle ist der größte Unterschied zwischen zwei Clustern erwünscht und für Ratkowsky-Lance das Maximum. Ball-Hall- und Ratkowsky-Lance-Diagramme:
Die letzten beiden Kriterien geben völlig negative Antworten (je kleiner die Anzahl der Cluster, desto besser) als das 3. und 4. Kriterium. Wie ist das möglich? Für mich scheinen nur die ersten beiden Kriterien einen Sinn für das Clustering zu haben. Eine Silhouette-Breite von ca. 0,6 ist gar nicht so schlecht. Sollte ich einfach die Indikatoren überspringen, die seltsame Antworten geben, und an diejenigen glauben, die vernünftige Antworten geben?
Bearbeiten: Plotten für 22 Cluster
Bearbeiten
Sie können sehen, dass die Daten in 22 Gruppen recht gut gruppiert sind. Kriterien, die darauf hinweisen, dass Sie 2 Cluster auswählen sollten, scheinen Schwächen zu haben. Die Heuristik funktioniert nicht richtig. Es ist in Ordnung, wenn ich die Daten zeichnen kann oder wenn die Daten in weniger als 4 Hauptkomponenten gepackt und dann geplottet werden können. Aber wenn nicht? Wie soll ich die Anzahl der Cluster anders als anhand eines Kriteriums auswählen? Ich habe Tests gesehen, die Calinski und Ratkowsky als sehr gute Kriterien angaben, und dennoch liefern sie negative Ergebnisse für einen scheinbar einfachen Datensatz. Vielleicht sollte die Frage nicht lauten: "Warum unterscheiden sich die Ergebnisse?", Sondern "Wie sehr können wir diesen Kriterien vertrauen?".
Warum ist eine euklidische Metrik nicht gut? Der tatsächliche, genaue Abstand zwischen ihnen interessiert mich nicht wirklich. Ich verstehe, dass der wahre Abstand sphärisch ist, aber für alle Punkte A, B, C, D, wenn sphärisch (A, B)> sphärisch (C, D) als auch euklidisch (A, B)> euklidisch (C, D), was sein sollte ausreichend für eine Clustering-Metrik.
Warum möchte ich diese Punkte gruppieren? Ich möchte ein Vorhersagemodell erstellen, und am Ort jeder Beobachtung sind viele Informationen enthalten. Für jede Beobachtung habe ich auch Städte und Regionen. Aber es gibt zu viele verschiedene Städte und ich möchte zum Beispiel keine 5000-Faktor-Variablen erstellen. Deshalb habe ich darüber nachgedacht, sie nach Koordinaten zu gruppieren. Es hat ziemlich gut funktioniert, da die Dichten in verschiedenen Regionen unterschiedlich sind und der Algorithmus es gefunden hat, 22 Faktorvariablen wären in Ordnung. Ich könnte die Güte des Clusters auch anhand der Ergebnisse des Vorhersagemodells beurteilen, bin mir aber nicht sicher, ob dies rechnerisch sinnvoll wäre. Vielen Dank für die neuen Algorithmen, ich werde sie auf jeden Fall ausprobieren, wenn sie schnell mit riesigen Datenmengen arbeiten.
quelle
Antworten:
Die Frage , die Sie sich stellen sollten , lautet: Was wollen Sie erreichen .
Alle diese Kriterien sind nichts als Heuristiken . Sie beurteilen das Ergebnis einer mathematischen Optimierungstechnik anhand einer weiteren mathematischen Funktion. Dies misst nicht wirklich, ob das Ergebnis gut ist , sondern nur, ob die Daten zu bestimmten Annahmen passen.
Jetzt, da Sie einen globalen Datensatz in Längen- und Breitengrad haben, ist die euklidische Entfernung bereits keine gute Wahl. Einige dieser Kriterien und Algorithmen (k-means…) benötigen jedoch diese unangemessene Distanzfunktion.
Einige Dinge, die Sie versuchen sollten:
Schauen Sie sich zB diese verwandte Frage / Antwort zum Stackoverflow an .
quelle
Länge und Breite sind Winkel , die Punkte auf einer Kugel definieren , so dass Sie wahrscheinlich auf der Suche sollte Großkreisentfernung oder anderen geodätischen Abstände zwischen den Punkten statt der euklidischen Abstand.
Wie bereits erwähnt, treffen bestimmte explizit modellbasierte Clustering-Algorithmen wie Mischungsmodelle und implizit modellbasierte wie K-Mittel Annahmen über die Form und Größe der Cluster. Erwarten Sie in dieser Situation, dass Ihre Daten zu einem zugrunde liegenden Modell passen? Wenn nicht, sind dichtebasierte Methoden, die keine Annahmen über die Form / Größe der Cluster treffen, möglicherweise besser geeignet.
quelle