Cos'è l'indice rand? (definizione ed esempi)


L’ indice Rand è un modo per confrontare la somiglianza dei risultati tra due diversi metodi di clustering.

Spesso indicato con R , l’indice Rand viene calcolato come segue:

R = (a+b) / ( n C 2 )

Oro:

  • a: il numero di volte in cui una coppia di elementi appartiene allo stesso cluster secondo due metodi di clustering.
  • b: il numero di volte in cui una coppia di elementi appartiene a cluster differenti secondo due metodi di clustering.
  • n C 2 : Il numero di coppie non ordinate in un insieme di n elementi.

L’indice Rand assume sempre un valore compreso tra 0 e 1 dove:

  • 0: indica che due metodi di clustering non concordano sul clustering di una coppia di elementi.
  • 1: indica che due metodi di raggruppamento concordano perfettamente sul raggruppamento di ciascuna coppia di elementi.

L’esempio seguente illustra come calcolare l’indice Rand tra due metodi di clustering per un set di dati semplice.

Esempio: come calcolare l’indice Rand

Supponiamo di avere il seguente set di dati composto da cinque elementi:

  • Set di dati: {A, B, C, D, E}

E supponiamo di utilizzare due metodi di clustering che inseriscono ciascun elemento nei seguenti cluster:

  • Cluster metodo 1: {1, 1, 1, 2, 2}
  • Metodo cluster 2: {1, 1, 2, 2, 3}

Per calcolare l’indice Rand tra questi metodi di clustering, dobbiamo prima annotare tutte le possibili coppie non ordinate nel set di dati di cinque elementi:

  • Coppie non ordinate: {A, B}, {A, C}, {A, D}, {A, E}, {B, C}, {B, D}, {B, E}, {C, D } , {C, E}, {D, E}

Ci sono 10 coppie non ordinate.

Successivamente, dobbiamo calcolare a , che rappresenta il numero di coppie non ordinate appartenenti allo stesso cluster in entrambi i metodi di clustering:

  • {AB}

In questo caso, a = 1 .

Successivamente, dobbiamo calcolare b , che rappresenta il numero di coppie non ordinate appartenenti a cluster diversi nei due metodi di clustering:

  • {A, D}, {A, E}, {B, D}, {B, E}, {C, E}

In questo caso, b = 5 .

Infine, possiamo calcolare l’indice Rand come segue:

  • R = (a+b) / ( n C 2 )
  • R = (1+5) / 10
  • R = 6/10

L’indice Rand è 0,6 .

Come calcolare l’indice Rand in R

Possiamo usare la funzione rand.index() dal pacchetto fossil per calcolare l’indice Rand tra due metodi di clustering 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

L’indice Rand è 0,6 . Ciò corrisponde al valore che abbiamo calcolato manualmente.

Come calcolare l’indice Rand in Python

Possiamo definire la seguente funzione in Python per calcolare l’indice Rand tra due cluster:

 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

L’indice Rand risulta essere 0,6 . Ciò corrisponde al valore calcolato negli esempi precedenti.

Risorse addizionali

Un’introduzione al clustering K-Means
Un’introduzione al clustering K-Medoids
Un’introduzione al clustering gerarchico

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *