Що таке індекс ранду? (визначення та приклади)


Індекс Ренда — це спосіб порівняння подібності результатів двох різних методів кластеризації.

Часто позначається 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
Вступ до ієрархічної кластеризації

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *