Co to jest indeks rand? (definicja i przykłady)
Indeks Rand umożliwia porównanie podobieństwa wyników uzyskanych pomiędzy dwiema różnymi metodami grupowania.
Często oznaczany jako R , indeks Rand oblicza się w następujący sposób:
R = (a+b) / ( n do 2 )
Złoto:
- a: ile razy para elementów należy do tego samego skupienia, zgodnie z dwiema metodami grupowania.
- b: ile razy para elementów należy do klastrów różnicowych według dwóch metod grupowania.
- n C 2 : Liczba par nieuporządkowanych w zbiorze n elementów.
Indeks Rand zawsze przyjmuje wartość z zakresu od 0 do 1, gdzie:
- 0: wskazuje, że dwie metody grupowania nie zgadzają się co do grupowania pary elementów.
- 1: Wskazuje, że dwie metody grupowania doskonale zgadzają się w zakresie grupowania każdej pary elementów.
Poniższy przykład ilustruje sposób obliczenia indeksu Rand między dwiema metodami grupowania dla prostego zbioru danych.
Przykład: Jak obliczyć indeks Rand
Załóżmy, że mamy następujący zbiór danych składający się z pięciu elementów:
- Zbiór danych: {A, B, C, D, E}
Załóżmy, że używamy dwóch metod grupowania, które umieszczają każdy element w następujących klastrach:
- Klastry metody 1: {1, 1, 1, 2, 2}
- Metoda klastrowania 2: {1, 1, 2, 2, 3}
Aby obliczyć indeks Rand pomiędzy tymi metodami grupowania, musimy najpierw zapisać wszystkie możliwe pary nieuporządkowane w pięcioelementowym zbiorze danych:
- Pary nieuporządkowane: {A, B}, {A, C}, {A, D}, {A, E}, {B, C}, {B, D}, {B, E}, {C, D } , {C, E}, {D, E}
Istnieje 10 par nieuporządkowanych.
Następnie musimy obliczyć a , które reprezentuje liczbę par nieuporządkowanych należących do tego samego klastra w obu metodach grupowania:
- {AB}
W tym przypadku a = 1 .
Następnie musimy obliczyć b , które reprezentuje liczbę par nieuporządkowanych należących do różnych skupień w dwóch metodach grupowania:
- {A, D}, {A, E}, {B, D}, {B, E}, {C, E}
W tym przypadku b = 5 .
Na koniec możemy obliczyć indeks Rand w następujący sposób:
- R = (a+b) / ( n do 2 )
- R = (1+5) / 10
- R = 6/10
Indeks Rand wynosi 0,6 .
Jak obliczyć indeks Rand w R
Możemy użyć funkcji rand.index() z pakietu paliwowego do obliczenia indeksu Rand pomiędzy dwiema metodami grupowania w 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
Indeks Rand wynosi 0,6 . Odpowiada to wartości, którą obliczyliśmy ręcznie.
Jak obliczyć indeks Rand w Pythonie
Możemy zdefiniować następującą funkcję w Pythonie, aby obliczyć indeks Rand między dwoma klastrami:
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
Indeks Rand wynosi 0,6 . Odpowiada to wartości obliczonej w poprzednich przykładach.
Dodatkowe zasoby
Wprowadzenie do grupowania K-średnich
Wprowadzenie do grupowania K-Medoids
Wprowadzenie do grupowania hierarchicznego