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

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert