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 R
Pakete vorgeschlagen. Ich habe versucht, zwei dieser Pakete zu verwenden ( fpc
mit der kmeans
Funktion 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.
quelle
Antworten:
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).
Dies sind die beiden am häufigsten verwendeten Metriken. Überprüfen Sie diese Links, um zu verstehen, wofür sie stehen:
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:
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)
, soI1=0.3, 0.2, 0.5
undI2=0.3, 0.3, 0.4
so 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: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.
quelle
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 :
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: .
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 .
quelle
x<-rnorm(N);rnorm(N)->y
), die durch r in drei Teile geteilt wird (von denen einer entfernt wurde).