Was ist der rand-index? (definition & beispiele)
Der Rand-Index ist eine Möglichkeit, die Ähnlichkeit der Ergebnisse zwischen zwei verschiedenen Clustering-Methoden zu vergleichen.
Der Rand-Index wird oft mit R bezeichnet und wie folgt berechnet:
R = (a+b) / ( n C 2 )
Gold:
- a: Die Häufigkeit, mit der ein Elementpaar gemäß zwei Clustering-Methoden zum selben Cluster gehört.
- b: Die Häufigkeit, mit der ein Elementpaar gemäß zwei Clustering-Methoden zu Differenzclustern gehört.
- n C 2 : Die Anzahl ungeordneter Paare in einer Menge von n Elementen.
Der Rand-Index nimmt immer einen Wert zwischen 0 und 1 an, wobei:
- 0: zeigt an, dass zwei Clustering-Methoden hinsichtlich der Clusterung eines Elementpaars nicht übereinstimmen.
- 1: Zeigt an, dass zwei Clustering-Methoden hinsichtlich der Clusterung jedes Elementpaars perfekt übereinstimmen.
Das folgende Beispiel veranschaulicht, wie der Rand-Index zwischen zwei Clustering-Methoden für einen einfachen Datensatz berechnet wird.
Beispiel: So berechnen Sie den Rand-Index
Angenommen, wir haben den folgenden Datensatz, der aus fünf Elementen besteht:
- Datensatz: {A, B, C, D, E}
Und nehmen wir an, wir verwenden zwei Clustering-Methoden, die jedes Element in die folgenden Cluster einordnen:
- Cluster der Methode 1: {1, 1, 1, 2, 2}
- Cluster-Methode 2: {1, 1, 2, 2, 3}
Um den Rand-Index zwischen diesen Clustering-Methoden zu berechnen, müssen wir zunächst alle möglichen ungeordneten Paare im Fünf-Elemente-Datensatz aufschreiben:
- Ungeordnete Paare: {A, B}, {A, C}, {A, D}, {A, E}, {B, C}, {B, D}, {B, E}, {C, D} , {C, E}, {D, E}
Es gibt 10 ungeordnete Paare.
Als nächstes müssen wir a berechnen, das die Anzahl der ungeordneten Paare darstellt, die in beiden Clustering-Methoden zum selben Cluster gehören:
- {AB}
In diesem Fall ist a = 1 .
Als nächstes müssen wir b berechnen, das die Anzahl der ungeordneten Paare darstellt, die zu verschiedenen Clustern in den beiden Clustering-Methoden gehören:
- {A, D}, {A, E}, {B, D}, {B, E}, {C, E}
In diesem Fall ist b = 5 .
Schließlich können wir den Rand-Index wie folgt berechnen:
- R = (a+b) / ( n C 2 )
- R = (1+5) / 10
- R = 6/10
Der Rand-Index beträgt 0,6 .
So berechnen Sie den Rand-Index in R
Wir können die Funktion rand.index() aus dem Fossil- Paket verwenden, um den Rand-Index zwischen zwei Clustering-Methoden in R zu berechnen:
library (fossil)
#define clusters
method1 <- c(1, 1, 1, 2, 2)
method2 <- c(1, 1, 2, 2, 3)
#calculate Rand index between clustering methods
rand. index (method1, method2)
[1] 0.6
Der Rand-Index beträgt 0,6 . Dies entspricht dem von uns manuell berechneten Wert.
So berechnen Sie den Rand-Index in Python
Wir können die folgende Funktion in Python definieren, um den Rand-Index zwischen zwei Clustern zu berechnen:
import numpy as np from scipy. special import comb #define Rand index function def rand_index (actual, pred): tp_plus_fp = comb(np. bincount (actual), 2). sum () tp_plus_fn = comb(np. bincount (pred), 2). sum () A = np. c_ [(actual, pred)] tp = sum(comb( np.bincount (A[A[:, 0] == i, 1]), 2) .sum () for i in set(actual)) fp = tp_plus_fp - tp fn = tp_plus_fn - tp tn = comb(len(A), 2) - tp - fp - fn return (tp + tn) / (tp + fp + fn + tn) #calculate Rand index rand_index([1, 1, 1, 2, 2], [1, 1, 2, 2, 3]) 0.6
Der Rand-Index beträgt 0,6 . Dies entspricht dem in den vorherigen Beispielen berechneten Wert.
Zusätzliche Ressourcen
Eine Einführung in das K-Means-Clustering
Eine Einführung in das K-Medoid-Clustering
Eine Einführung in das hierarchische Clustering