Що таке індекс ранду? (визначення та приклади)
Індекс Ренда — це спосіб порівняння подібності результатів двох різних методів кластеризації.
Часто позначається R , індекс Ренда обчислюється наступним чином:
R = (a+b) / ( n C 2 )
золото:
- a: скільки разів пара елементів належить до одного кластеру відповідно до двох методів кластеризації.
- b: скільки разів пара елементів належить до різницевих кластерів відповідно до двох методів кластеризації.
- n C 2 : кількість невпорядкованих пар у наборі з n елементів.
Індекс Ренда завжди приймає значення від 0 до 1, де:
- 0: означає, що два методи кластеризації не погоджуються щодо кластеризації пари елементів.
- 1: вказує на те, що два методи кластеризації ідеально узгоджені щодо кластеризації кожної пари елементів.
У наступному прикладі показано, як обчислити індекс Rand між двома методами кластеризації для простого набору даних.
Приклад: як розрахувати індекс ранду
Припустимо, що ми маємо наступний набір даних, що складається з п’яти елементів:
- Набір даних: {A, B, C, D, E}
І припустімо, що ми використовуємо два методи кластеризації, які поміщають кожен елемент у наступні кластери:
- Кластери методу 1: {1, 1, 1, 2, 2}
- Кластерний метод 2: {1, 1, 2, 2, 3}
Щоб обчислити індекс Ренда між цими методами кластеризації, нам спочатку потрібно записати всі можливі невпорядковані пари в п’ятиелементному наборі даних:
- Невпорядковані пари: {A, B}, {A, C}, {A, D}, {A, E}, {B, C}, {B, D}, {B, E}, {C, D} , {C, E}, {D, E}
Є 10 невпорядкованих пар.
Далі нам потрібно обчислити a , яке представляє кількість невпорядкованих пар, що належать одному кластеру в обох методах кластеризації:
- {AB}
У цьому випадку a = 1 .
Далі нам потрібно обчислити b , яке представляє кількість невпорядкованих пар, що належать до різних кластерів у двох методах кластеризації:
- {A, D}, {A, E}, {B, D}, {B, E}, {C, E}
У цьому випадку b = 5 .
Нарешті, ми можемо розрахувати індекс Ренда наступним чином:
- R = (a+b) / ( n C 2 )
- R = (1+5) / 10
- R = 6/10
Індекс Ренд дорівнює 0,6 .
Як розрахувати індекс ранду в R
Ми можемо використати функцію rand.index() із пакета fossil , щоб обчислити індекс Ранд між двома методами кластеризації в 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
Індекс Ренд дорівнює 0,6 . Це відповідає значенню, яке ми розрахували вручну.
Як розрахувати ранд-індекс у Python
Ми можемо визначити таку функцію в Python для обчислення індексу Rand між двома кластерами:
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
Індекс Ренд виявляється рівним 0,6 . Це відповідає значенню, обчисленому в попередніх прикладах.
Додаткові ресурси
Вступ до кластеризації K-Means
Введення в кластеризацію K-Medoids
Вступ до ієрархічної кластеризації