Ich versuche herauszufinden, wie der Rand-Index eines Cluster-Algorithmus berechnet wird, aber ich bin nicht sicher, wie die wahren und falschen Negative berechnet werden.
Im Moment verwende ich das Beispiel aus dem Buch Eine Einführung in die Informationsbeschaffung (Manning, Raghavan & Schütze, 2009). Auf Seite 359 wird erläutert, wie der Rand-Index berechnet wird. In diesem Beispiel werden drei Cluster verwendet, und die Cluster enthalten die folgenden Objekte.
- aaaaab
- abbbbc
- aaccc
Ich ersetze das Objekt (Originalzeichen in Buchstaben, aber Idee und Anzahl bleiben gleich). Ich gebe die genauen Wörter aus dem Buch, um zu sehen, wovon sie sprechen:
Wir berechnen zuerst TP + FP. Die drei Cluster enthalten jeweils 6, 6 und 5 Punkte. Die Gesamtzahl der "Positiven" oder Dokumentpaare, die sich in demselben Cluster befinden, beträgt also:
TP + FP = + {6 \ wähle 2} + {5 \ wähle 2} = 15 + 15+ 10 = 40
Davon sind die a-Paare in Cluster 1, die b-Paare in Cluster 2, die c-Paare in Cluster 3 und das a-Paar in Cluster 3 echte Positive:
TP = + + + = 10 + 6 + 3 + 1 = 20
Somit ist FP = 40 - 20 = 20.
Bis hierher sind die Berechnungen klar, und wenn ich andere Beispiele nehme, erhalte ich die gleichen Ergebnisse, aber wenn ich das falsch-negative und das wahr-negative berechnen möchte, haben Manning et al. Geben Sie Folgendes an:
FN und TN werden auf ähnliche Weise berechnet und ergeben die folgende Kontingenztabelle:
Die Kontingenztabelle sieht wie folgt aus:
+--------+--------+
| TP: 20 | FN: 24 |
+--------+--------+
| FP: 20 | TN: 72 |
+--------+--------+
Der Satz: "FN und TN werden ähnlich berechnet" ist mir nicht klar und ich verstehe nicht, welche Zahlen ich zur Berechnung von TN und FN benötige. Ich kann die rechte Seite der Tabelle folgendermaßen berechnen:
TP + FP + FN + TN = = = 136
Quelle: http://en.wikipedia.org/wiki/Rand_index
Somit ist FN + TN = 136 - TP + FP = 136 - 40 = 96, aber dies hilft mir nicht wirklich dabei, herauszufinden, wie die Variablen separat berechnet werden. Besonders wenn die Autoren sagen: "FN und TN werden ähnlich berechnet". Ich verstehe nicht wie. Auch wenn ich mir andere Beispiele ansehe, berechnen sie jede Zelle der Kontingenztabelle, indem sie sich jedes Paar ansehen.
Zum Beispiel: http://www.otlet-institute.org/wikics/Clustering_Problems.html#toc-Subsection-4.1
Meine erste Frage, basierend auf dem Beispiel von Manning et al. (2009), ist es möglich, TN und FN zu berechnen, wenn Sie nur die TP & NP kennen? Und wenn ja, wie sieht die ähnliche Berechnung basierend auf dem angegebenen Beispiel aus?
quelle
Nachdem ich die anderen Antworten in diesem Thread gelesen habe, ist hier meine Python-Implementierung, die Arrays als Eingaben verwendet
sklearn
:quelle
Ich bin mir nicht ganz sicher, aber so habe ich den TN-Wert ermittelt:
TN = (7 2) (10 2) (4 2)
(7 2) - Cluster 1 - Test sagt 'x', also zählen Sie diejenigen, die NICHT x sind (und in den Clustern 2 & 3 richtig gruppiert sind)
dh 4 'o's + 3' d's (Diamanten) = (7 2)
(10 2) - Cluster 2, zähle diejenigen, die NICHT 'O' sind und korrekt in Cluster 1 und 3 gruppiert sind,
dh 5 'x' + (2'x '+ 3'd') = (10 2)
(4 2) - Cluster 3: Zählen Sie diejenigen, die NICHT 'x' und NICHT 'd' (rautenförmige Elemente) sind, die korrekt in Cluster 1 und 2 gruppiert sind.
dh 4 'o's in Cluster 2. = (4 2)
TN = (72) + (102) + (42) = 72.
Dann ist FN:
FN = (17 2) - (TP + FP) - TN = 136 - 40 - 72 = 24. ---> (17 = Gesamtzahl der Dokumente)
quelle
Nehmen wir das Beispiel einer anderen Frage:
Die vernünftige Antwort für FN:
Erläuterung:
(c (8,2) -c (5,2) -c (2,2))
Wählen Sie 2 aus 8 für 'x' (a) die Kombination derselben Klasse in denselben Clustern (c (5,2) für Cluster 1 und c (2,2) für Cluster 3),
(c (5,2) -c (4,2))
wähle 2 aus 5 'o' (b) minus der Kombination derselben Klasse in denselben Clustern (c (4,2) für Cluster 2)
(c (4,2) -c (3,2)
Wähle 2 aus 4 für '◇' (c) minus der Kombination derselben Klasse in denselben Clustern (c (3,2) für Cluster 3)
Ich habe es so abgeleitet.
quelle
Ich habe eine Implementierung davon in R, die ich erklären werde:
TP (a im Code) ist die Summe von jeder Zelle, wählen Sie 2. Gemäß der ursprünglichen Frage (0 oder 1 wählen Sie 2 gleich 0)
FN (b) ist die Summe jeder Zeile, wählen Sie 2, alle summiert, abzüglich TP. Wobei jede Zeilensumme die Anzahl der Dokumente in jeder True-Klasse darstellt.
Die Summe daraus sind alle Dokumente, die ähnlich sind und sich im selben Cluster (TP) befinden, sowie alle Dokumente, die ähnlich sind und sich nicht im selben Cluster (FN) befinden.
Das ist also (TP + FN) - TP = FN
FP (c) wird ähnlich berechnet. Die Summe jeder Spalte ergibt 2, alle summiert, abzüglich TP. In diesem Fall repräsentiert jede Spaltensumme die Anzahl der Dokumente in jedem Cluster.
Die Summe daraus sind also alle Dokumente, die ähnlich sind und sich im selben Cluster (TP) befinden, sowie alle Dokumente, die nicht ähnlich sind und sich im selben Cluster (FP) befinden.
Das ist also (TP + FP) - TP = FP
Mit diesen 3 berechneten ist die verbleibende Berechnung von TN einfach. Die Summe der Tabelle wählen Sie 2, weniger TP, FP & FN = TN (d)
Die einzige Frage, die ich bei dieser Methode habe, ist die Definition von TP. Unter Verwendung der Terminologie in dieser Frage verstehe ich nicht, warum die 2 a in Cluster 3 als TP gelten. Ich habe dies sowohl hier als auch im dazugehörigen Lehrbuch gefunden. Ich verstehe ihre Berechnung jedoch mit der Annahme, dass ihre TP-Berechnung korrekt ist.
Hoffe das hilft
quelle
Sie können TN und FN auf dieselbe Weise berechnen.
Wechseln Sie einfach die Rollen von Labels und Clustern .
... dann führen Sie die gleichen Berechnungen durch.
quelle
Ich denke, ich habe das falsche Negativ (FN) rückgängig gemacht. Für die wahren positiven Ergebnisse haben Sie 4 Gruppen gebildet, die positiv waren. In Cluster 1 hatten Sie die fünf Einsen; in Cluster 2 hatten Sie die 4 b; In Cluster 3 hatten Sie die 3 c und die 2 a.
Also für das falsche Negativ.
Daher haben Sie (5 1) + (5 2) + (4 1) + (3 1) + (2 1), was 5 + 10 + 4 + 3 + 2 = 24 entspricht. Daher kommt dann die 24 Subtrahiere einfach das von den 136, die du bereits gefunden hast, um das wahre Neg (TN) zu erhalten.
quelle
Hier erfahren Sie, wie Sie jede Metrik für den Rand-Index berechnen, ohne sie zu subtrahieren
Randnotizen zum leichteren Verständnis:
1) Der Rand-Index basiert auf dem Vergleich von Elementpaaren. Die Theorie besagt, dass ähnliche Elementpaare in demselben Cluster platziert werden sollten, während unterschiedliche Elementpaare in separaten Clustern platziert werden sollten.
2) RI kümmert sich nicht um Unterschiede in der Anzahl der Cluster. Es geht nur um True / False-Elementpaare.
Basierend auf dieser Annahme wird der Rand-Index berechnet
Ok, lass uns hier eintauchen, das ist unser Beispiel:
Im Nenner haben wir also insgesamt mögliche Paare
(17 2) = 136
Berechnen wir nun zum besseren Verständnis jede Metrik:
A) Beginnen wir mit easy a ( True Positives oder richtig ähnlich )
Es bedeutet, dass Sie alle möglichen Elementpaare finden müssen, bei denen Vorhersage und wahres Label zusammengesetzt wurden. In einem Gitterbeispiel bedeutet dies, dass die Summe der möglichen Paare in jeder Zelle ermittelt wird.
C) Nun lass uns c machen ( False Positives oder falsches Unähnliches )
Es bedeutet, alle Paare zu finden, die wir zusammengestellt haben, die sich aber in verschiedenen Clustern befinden sollten. In einem Gitterbeispiel bedeutet dies, dass alle möglichen Paare zwischen 2 beliebigen horizontalen Zellen gefunden werden
D) Berechnung von d ( falsch negativ oder falsch ähnlich ) Es bedeutet, alle Paare zu finden, die wir in verschiedenen Clustern platziert haben, die aber zusammen sein sollten. Suchen Sie im Raster-Beispiel alle möglichen Paare zwischen zwei beliebigen vertikalen Zellen
B) Und zum Schluss machen wir b ( True Negatives oder korrektes Unähnliches )
Es bedeutet, alle Paare zu finden, die wir in verschiedenen Clustern platziert haben, die sich auch in verschiedenen Clustern befinden sollten. Im Raster bedeutet dies, dass alle möglichen Paare zwischen 2 nicht vertikalen und nicht horizontalen Zellen gefunden werden
Hier ist, welche Zahlen multipliziert werden sollten, um besser zu verstehen, was ich meinte:
In Zahlen:
Und am Ende ist Rand Index gleich:
(20 + 72) / 136 = 0.676
quelle
Unten ist das Bild, das Ihre Frage beschreibt:
Um dieses Problem zu lösen, müssen Sie diese Matrix berücksichtigen:
So berechnen wir TP, FN, FP für Rand Index:
HINWEIS: In den obigen Gleichungen habe ich ein Dreieck verwendet, um den Diamanten im Bild anzuzeigen.
Zum Beispiel sollten wir für False Negative aus der Klasse auswählen, aber in verschiedenen Clustern. Also können wir auswählen
Gleiches gilt für den Rest der Gleichungen.
Der schwierigste Teil ist TN, was wie im folgenden Bild gemacht werden kann:
Es gibt einige kürzere Wege, um den Rand-Index zu berechnen, aber es ist die Berechnung in tief und Schritt für Schritt. Schließlich sieht die Kontingenztabelle folgendermaßen aus:
quelle