Qu’est-ce que l’indice Rand ? (Définition & Exemples)
L’ indice Rand est un moyen de comparer la similarité des résultats entre deux méthodes de clustering différentes.
Souvent noté R , l’indice Rand est calculé comme suit :
R = (une+b) / ( n C 2 )
où:
- a : le nombre de fois qu’une paire d’éléments appartient au même cluster selon deux méthodes de clustering.
- b : le nombre de fois qu’une paire d’éléments appartient à des clusters de différence selon deux méthodes de clustering.
- n C 2 : Le nombre de paires non ordonnées dans un ensemble de n éléments.
L’indice Rand prend toujours une valeur comprise entre 0 et 1 où :
- 0 : indique que deux méthodes de clustering ne s’accordent pas sur le clustering d’une paire d’éléments.
- 1 : Indique que deux méthodes de clustering s’accordent parfaitement sur le clustering de chaque paire d’éléments.
L’exemple suivant illustre comment calculer l’indice Rand entre deux méthodes de clustering pour un ensemble de données simple.
Exemple : Comment calculer l’indice Rand
Supposons que nous ayons l’ensemble de données suivant composé de cinq éléments :
- Ensemble de données : {A, B, C, D, E}
Et supposons que nous utilisions deux méthodes de clustering qui placent chaque élément dans les clusters suivants :
- Clusters de méthode 1 : {1, 1, 1, 2, 2}
- Clusters méthode 2 : {1, 1, 2, 2, 3}
Pour calculer l’indice de Rand entre ces méthodes de clustering, nous devons d’abord écrire toutes les paires non ordonnées possibles dans l’ensemble de données de cinq éléments :
- Paires non ordonnées : {A, B}, {A, C}, {A, D}, {A, E}, {B, C}, {B, D}, {B, E}, {C, D} , {C, E}, {D, E}
Il y a 10 paires non ordonnées.
Ensuite, nous devons calculer a , qui représente le nombre de paires non ordonnées appartenant au même cluster dans les deux méthodes de clustering :
- {UN B}
Dans ce cas, a = 1 .
Ensuite, nous devons calculer b , qui représente le nombre de paires non ordonnées appartenant à différents clusters dans les deux méthodes de clustering :
- {A, D}, {A, E}, {B, D}, {B, E}, {C, E}
Dans ce cas, b = 5 .
Enfin, nous pouvons calculer l’indice Rand comme suit :
- R = (une+b) / ( n C 2 )
- R = (1+5) / 10
- R = 6/10
L’indice Rand est de 0,6 .
Comment calculer l’indice Rand dans R
Nous pouvons utiliser la fonction rand.index() du package fossil pour calculer l’indice Rand entre deux méthodes de clustering dans 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 est de 0,6 . Cela correspond à la valeur que nous avons calculée manuellement.
Comment calculer l’indice Rand en Python
On peut définir la fonction suivante en Python pour calculer l’indice Rand entre deux clusters :
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 s’avère être de 0,6 . Cela correspond à la valeur calculée dans les exemples précédents.
Ressources additionnelles
Une introduction au clustering K-Means
Une introduction au clustering K-Medoids
Une introduction au clustering hiérarchique