Vergleiche von Clustering-Ergebnissen verstehen

13

Ich experimentiere mit der Klassifizierung von Daten in Gruppen. Ich bin ziemlich neu in diesem Thema und versuche, die Ergebnisse einiger Analysen zu verstehen.

Anhand von Beispielen aus Quick-R werden mehrere RPakete vorgeschlagen. Ich habe versucht, zwei dieser Pakete zu verwenden ( fpcmit der kmeansFunktion und mclust). Ein Aspekt dieser Analyse, den ich nicht verstehe, ist der Vergleich der Ergebnisse.

# comparing 2 cluster solutions
library(fpc)
cluster.stats(d, fit1$cluster, fit2$cluster)

Ich habe die relevanten Teile des fpc Handbuchs durchgelesen und weiß immer noch nicht, worauf ich abzielen soll. Dies ist beispielsweise die Ausgabe des Vergleichs zweier verschiedener Clustering-Ansätze:

$n
[1] 521

$cluster.number
[1] 4

$cluster.size
[1] 250 119  78  74

$diameter
[1]  5.278162  9.773658 16.460074  7.328020

$average.distance
[1] 1.632656 2.106422 3.461598 2.622574

$median.distance
[1] 1.562625 1.788113 2.763217 2.463826

$separation
[1] 0.2797048 0.3754188 0.2797048 0.3557264

$average.toother
[1] 3.442575 3.929158 4.068230 4.425910

$separation.matrix
          [,1]      [,2]      [,3]      [,4]
[1,] 0.0000000 0.3754188 0.2797048 0.3557264
[2,] 0.3754188 0.0000000 0.6299734 2.9020383
[3,] 0.2797048 0.6299734 0.0000000 0.6803704
[4,] 0.3557264 2.9020383 0.6803704 0.0000000

$average.between
[1] 3.865142

$average.within
[1] 1.894740

$n.between
[1] 91610

$n.within
[1] 43850

$within.cluster.ss
[1] 1785.935

$clus.avg.silwidths
         1          2          3          4 
0.42072895 0.31672350 0.01810699 0.23728253 

$avg.silwidth
[1] 0.3106403

$g2
NULL

$g3
NULL

$pearsongamma
[1] 0.4869491

$dunn
[1] 0.01699292

$entropy
[1] 1.251134

$wb.ratio
[1] 0.4902123

$ch
[1] 178.9074

$corrected.rand
[1] 0.2046704

$vi
[1] 1.56189

Meine Hauptfrage hier ist, besser zu verstehen, wie die Ergebnisse dieses Clustervergleichs zu interpretieren sind.


Zuvor hatte ich mehr über den Effekt der Skalierung von Daten und die Berechnung einer Distanzmatrix gefragt. Dies wurde jedoch von mariana soffer klar beantwortet, und ich reorganisiere nur meine Frage, um zu betonen, dass ich an der Interpretation meiner Ausgabe interessiert bin, die ein Vergleich zweier verschiedener Clustering-Algorithmen ist.

Vorheriger Teil der Frage : Soll ich Daten immer skalieren, wenn ich eine Art Clustering durchführe? Beispielsweise verwende ich die Funktion dist()in meinem skalierten Dataset als Eingabe für die cluster.stats()Funktion, verstehe jedoch nicht vollständig, was vor sich geht. Ich habe dist() hier gelesen und es heißt:

Diese Funktion berechnet und gibt die Distanzmatrix zurück, die mit dem angegebenen Distanzmaß berechnet wurde, um die Abstände zwischen den Zeilen einer Datenmatrix zu berechnen.

Celenius
quelle
Suchen Sie weitere Erläuterungen oder sind Sie mit der Antwort von @ mariana unzufrieden? Ich denke, es betrifft Ihre allererste Frage (2. §). In diesem Fall sollten Sie Ihre Frage möglicherweise aktualisieren, damit die Benutzer verstehen, warum Sie für diese Frage ein Kopfgeld setzen.
chl
@chl Ich werde es aktualisieren, um es klarer zu machen. Ich suche nur eine Anleitung zur Interpretation der Clustervergleiche, da ich nicht verstehe, was die Ausgabe bedeutet. Die Antwort von @ mariana war sehr hilfreich, um einige der mit dieser Methode verbundenen Begriffe zu erklären.
Celenius

Antworten:

13

Lassen Sie mich zunächst sagen, dass ich hier nicht alle Maßnahmen genau erläutern werde, aber ich möchte Ihnen eine Vorstellung davon geben, wie Sie die Clustering-Methoden vergleichen können (nehmen wir an, wir vergleichen zwei Clustering-Methoden mit derselben Nummer) Cluster).

  1. Je größer der Durchmesser des Clusters ist, desto schlimmer ist beispielsweise die Clusterbildung, da die Punkte, die zum Cluster gehören, stärker gestreut sind.
  2. Je höher der durchschnittliche Abstand der einzelnen Cluster ist, desto schlechter ist die Clustermethode. (Nehmen wir an, dass die durchschnittliche Entfernung die durchschnittliche Entfernung von jedem Punkt im Cluster zur Mitte des Clusters ist.)

Dies sind die beiden am häufigsten verwendeten Metriken. Überprüfen Sie diese Links, um zu verstehen, wofür sie stehen:

  • Zwischenhaufenabstand (je höher desto besser ist die Summe des Abstands zwischen den verschiedenen Cluster-Schwerpunkten)
  • Intra-Cluster-Abstand (je niedriger, desto besser ist die Summe des Abstands zwischen den Cluster-Mitgliedern und der Mitte des Clusters)

Aktivieren Sie diese Option, um die oben genannten Metriken besser zu verstehen .

Dann sollten Sie das Handbuch der Bibliothek und der von Ihnen verwendeten Funktionen lesen, um zu verstehen, welche Kennzahlen für jede dieser Kennzahlen stehen, oder wenn diese nicht enthalten sind, versuchen Sie, die Bedeutung der enthaltenen Kennzahlen zu ermitteln. Ich würde mich jedoch nicht an die halten, die ich hier angegeben habe.

Fahren wir mit den Fragen fort, die Sie gestellt haben:

  1. In Bezug auf die Skalierung von Daten: Ja, Sie sollten die Daten immer für das Clustering skalieren, da die verschiedenen Skalierungen der verschiedenen Dimensionen (Variablen) unterschiedliche Einflüsse auf die Clusterbildung der Daten haben. Je höher die Werte in der Variablen sind, desto einflussreicher ist diese Variable Dabei sollten sie alle den gleichen Einfluss haben (es sei denn, Sie möchten es aus einem bestimmten Grund nicht so).
  2. Die Abstandsfunktionen berechnen alle Abstände von einem Punkt (Instanz) zu einem anderen. Das gebräuchlichste Entfernungsmaß ist Euklidisch. Nehmen wir also an, Sie möchten die Entfernung von Instanz 1 zu Instanz 2 messen (nehmen wir der Einfachheit halber an, Sie haben nur zwei Instanzen). Auch gehen sie davon aus, dass jede Instanz 3 Werte hat (x1, x2, x3), so I1=0.3, 0.2, 0.5und I2=0.3, 0.3, 0.4so den euklidischen Abstand von I1 und I2 wäre: sqrt((0.3-0.2)^2+(0.2-0.3)^2+(0.5-0.4)^2)=0.17, also die Distanzmatrix bewirkt:

        i1    i2
    i1  0     0.17
    i2  0.17  0

Beachten Sie, dass die Distanzmatrix immer symmetrisch ist.

Die euklidische Entfernungsformel ist nicht die einzige, die existiert. Es gibt viele andere Entfernungen, die zur Berechnung dieser Matrix verwendet werden können. Überprüfen Sie zum Beispiel in Wikipedia Manhattain Distance und wie man es berechnet. Am Ende der Wikipedia-Seite für die euklidische Entfernung (wo Sie auch die Formel überprüfen können) können Sie überprüfen, welche anderen Entfernungen vorhanden sind.

mariana weicher
quelle
Vielen Dank für Ihre sehr umfassende Antwort - es ist sehr hilfreich.
Celenius
Ich bin wirklich froh, dass es für dich hilfreich war.
mariana soffer
@marianasoffer der Link zur Stanford-Seite funktioniert nicht. Bitte aktualisieren oder zugänglich machen. Vielen Dank
Herman Toothrot
7

Ich denke, das beste Qualitätsmaß für das Clustering ist die Clusterannahme, wie sie von Seeger in Learning mit beschrifteten und unbeschrifteten Daten angegeben wurde :

Nehmen wir zum Beispiel X = Rd und die Gültigkeit der "Clusterannahme" an, nämlich dass zwei Punkte x, x die gleiche Bezeichnung t haben sollten, wenn sich in X ein Pfad zwischen ihnen befindet, der nur durch Bereiche mit relativ hohem P (x verläuft ).

Ja, das bringt die ganze Idee von Zentroiden und Zentren zum Erliegen. Dies sind schließlich eher willkürliche Konzepte, wenn Sie sich Gedanken darüber machen, dass Ihre Daten möglicherweise in einer nicht linearen Untergruppe des Bereichs liegen, in dem Sie tatsächlich tätig sind.

Sie können leicht ein synthetisches Dataset erstellen, in dem Mischungsmodelle zerfallen. ZB diese: Ein Kreis in einer Wolke.

Kurz gesagt: Ich würde die Qualität eines Clustering-Algorithmus auf minimale Weise messen. Der beste Clustering-Algorithmus ist derjenige, der die maximale Entfernung eines Punktes zum nächsten Nachbarn desselben Clusters minimiert, während er die minimale Entfernung eines Punktes zum nächsten Nachbarn von einem anderen Cluster maximiert.

A Nonparametric Information Theoretic Clustering Algorithm könnte Sie ebenfalls interessieren .

bayerj
quelle
Wie überprüfe ich eine Clusteranpassung mithilfe eines Minimax-Ansatzes? Mein Wissen über Clustering ist sehr grundlegend, daher versuche ich im Moment nur zu verstehen, wie man zwei verschiedene Clustering-Ansätze vergleicht.
Celenius
Könnten Sie bitte den R-Code für die beigefügte Abbildung teilen?
Andrej
@Andrej Meine Vermutung ist eine Gaußsche Wolke ( x<-rnorm(N);rnorm(N)->y), die durch r in drei Teile geteilt wird (von denen einer entfernt wurde).
Ich kenne keinen praktischen Algorithmus, der nach diesem Qualitätsmaß passt. Sie möchten wahrscheinlich immer noch K-Means et al. Aber wenn die oben genannte Kennzahl zusammenbricht, wissen Sie, dass die Daten, die Sie betrachten, (noch!) Nicht für diesen Algorithmus geeignet sind.
Bayerj
@Andrej Ich benutze kein R (kommt eher von ML als von Statistiken :) aber was mbq vorschlägt, scheint in Ordnung zu sein.
Bayerj