O que é o índice rand? (definição e exemplos)
O índice Rand é uma forma de comparar a similaridade de resultados entre dois métodos de agrupamento diferentes.
Muitas vezes denotado R , o índice Rand é calculado da seguinte forma:
R = (a+b) / ( n C 2 )
Ouro:
- a: o número de vezes que um par de elementos pertence ao mesmo cluster de acordo com dois métodos de agrupamento.
- b: o número de vezes que um par de elementos pertence a clusters de diferença de acordo com dois métodos de clustering.
- n C 2 : O número de pares não ordenados em um conjunto de n elementos.
O índice Rand sempre assume um valor entre 0 e 1 onde:
- 0: indica que dois métodos de agrupamento não concordam com o agrupamento de um par de elementos.
- 1: Indica que dois métodos de agrupamento concordam perfeitamente no agrupamento de cada par de elementos.
O exemplo a seguir ilustra como calcular o índice Rand entre dois métodos de cluster para um conjunto de dados simples.
Exemplo: Como calcular o índice Rand
Suponha que temos o seguinte conjunto de dados composto por cinco elementos:
- Conjunto de dados: {A, B, C, D, E}
E suponha que usemos dois métodos de agrupamento que colocam cada elemento nos seguintes agrupamentos:
- Clusters do Método 1: {1, 1, 1, 2, 2}
- Método de cluster 2: {1, 1, 2, 2, 3}
Para calcular o índice Rand entre esses métodos de agrupamento, primeiro precisamos anotar todos os pares não ordenados possíveis no conjunto de dados de cinco elementos:
- Pares não ordenados: {A, B}, {A, C}, {A, D}, {A, E}, {B, C}, {B, D}, {B, E}, {C, D } , {C, E}, {D, E}
Existem 10 pares não ordenados.
A seguir, precisamos calcular a , que representa o número de pares não ordenados pertencentes ao mesmo cluster em ambos os métodos de agrupamento:
- {AB}
Neste caso, a = 1 .
A seguir, precisamos calcular b , que representa o número de pares não ordenados pertencentes a diferentes clusters nos dois métodos de agrupamento:
- {A, D}, {A, E}, {B, D}, {B, E}, {C, E}
Neste caso, b = 5 .
Finalmente, podemos calcular o índice Rand da seguinte forma:
- R = (a+b) / ( n C 2 )
- R = (1+5)/10
- R = 6/10
O índice Rand é 0,6 .
Como calcular o índice Rand em R
Podemos usar a função rand.index() do pacote fossil para calcular o índice Rand entre dois métodos de agrupamento em 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
O índice Rand é 0,6 . Isso corresponde ao valor que calculamos manualmente.
Como calcular o índice Rand em Python
Podemos definir a seguinte função em Python para calcular o índice Rand entre dois 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
O índice Rand acabou sendo 0,6 . Isto corresponde ao valor calculado nos exemplos anteriores.
Recursos adicionais
Uma introdução ao agrupamento K-Means
Uma introdução ao cluster K-Medoids
Uma introdução ao cluster hierárquico