Wat is de randindex? (definitie & voorbeelden)
De Rand-index is een manier om de gelijkenis van resultaten tussen twee verschillende clustermethoden te vergelijken.
Vaak aangeduid met R , wordt de Randindex als volgt berekend:
R = (a+b) / ( n C 2 )
Goud:
- a: het aantal keren dat een paar elementen tot hetzelfde cluster behoort volgens twee clustermethoden.
- b: het aantal keren dat een paar elementen tot verschilclusters behoort volgens twee clustermethoden.
- n C 2 : Het aantal ongeordende paren in een set van n elementen.
De Randindex heeft altijd een waarde tussen 0 en 1 waarbij:
- 0: geeft aan dat twee clustermethoden het niet eens zijn over de clustering van een paar elementen.
- 1: Geeft aan dat twee clustermethoden het perfect eens zijn over de clustering van elk paar elementen.
Het volgende voorbeeld illustreert hoe u de Rand-index tussen twee clustermethoden voor een eenvoudige gegevensset kunt berekenen.
Voorbeeld: Hoe de Rand-index te berekenen
Stel dat we de volgende dataset hebben die uit vijf elementen bestaat:
- Gegevensset: {A, B, C, D, E}
En stel dat we twee clustermethoden gebruiken die elk element in de volgende clusters plaatsen:
- Methode 1 clusters: {1, 1, 1, 2, 2}
- Clustermethode 2: {1, 1, 2, 2, 3}
Om de Randindex tussen deze clustermethoden te berekenen, moeten we eerst alle mogelijke ongeordende paren in de dataset met vijf elementen opschrijven:
- Ongeordende paren: {A, B}, {A, C}, {A, D}, {A, E}, {B, C}, {B, D}, {B, E}, {C, D } , {C, E}, {D, E}
Er zijn 10 ongeordende paren.
Vervolgens moeten we a berekenen, die het aantal ongeordende paren vertegenwoordigt dat tot hetzelfde cluster behoort in beide clustermethoden:
- {AB}
In dit geval is a = 1 .
Vervolgens moeten we b berekenen, wat het aantal ongeordende paren vertegenwoordigt dat tot verschillende clusters behoort in de twee clustermethoden:
- {A, D}, {A, E}, {B, D}, {B, E}, {C, E}
In dit geval is b = 5 .
Tenslotte kunnen we de Randindex als volgt berekenen:
- R = (a+b) / ( n C 2 )
- R = (1+5) / 10
- R = 6/10
De Randindex bedraagt 0,6 .
Hoe de Rand-index in R te berekenen
We kunnen de functie rand.index() uit het fossiele pakket gebruiken om de Rand-index te berekenen tussen twee clustermethoden in R:
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
De Randindex bedraagt 0,6 . Dit komt overeen met de waarde die we handmatig hebben berekend.
Hoe de Rand-index in Python te berekenen
We kunnen de volgende functie in Python definiëren om de Rand-index tussen twee clusters te berekenen:
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
De Randindex blijkt 0,6 te zijn. Dit komt overeen met de waarde die in de voorgaande voorbeelden is berekend.
Aanvullende bronnen
Een inleiding tot K-Means-clustering
Een inleiding tot K-Medoids-clustering
Een inleiding tot hiërarchische clustering