Что такое индекс рэнда? (определение и примеры)


Индекс Рэнда — это способ сравнить сходство результатов двух разных методов кластеризации.

Индекс Рэнда, часто обозначаемый R , рассчитывается следующим образом:

р знак равно (а+b) / ( п C 2 )

Золото:

  • a: количество раз, когда пара элементов принадлежит одному и тому же кластеру в соответствии с двумя методами кластеризации.
  • б: количество раз, когда пара элементов принадлежит разностным кластерам в соответствии с двумя методами кластеризации.
  • n C 2 : количество неупорядоченных пар в наборе из n элементов.

Индекс Рэнда всегда принимает значение от 0 до 1, где:

  • 0: указывает, что два метода кластеризации не согласуются при кластеризации пары элементов.
  • 1: указывает на то, что два метода кластеризации идеально согласуются при кластеризации каждой пары элементов.

В следующем примере показано, как вычислить индекс Рэнда между двумя методами кластеризации для простого набора данных.

Пример: Как рассчитать индекс Рэнда

Предположим, у нас есть следующий набор данных, состоящий из пяти элементов:

  • Набор данных: {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 } , {С, Е}, {D, Е}

Имеется 10 неупорядоченных пар.

Далее нам нужно вычислить a , которое представляет количество неупорядоченных пар, принадлежащих одному и тому же кластеру, в обоих методах кластеризации:

  • {АБ}

В этом случае а = 1 .

Далее нам нужно вычислить b , которое представляет количество неупорядоченных пар, принадлежащих разным кластерам в двух методах кластеризации:

  • {A, D}, {A, E}, {B, D}, {B, E}, {C, E}

В этом случае b = 5 .

Наконец, мы можем рассчитать индекс Рэнда следующим образом:

  • р знак равно (а+b) / ( п C 2 )
  • Р = (1+5)/10
  • Р = 6/10

Индекс Рэнда равен 0,6 .

Как рассчитать индекс Рэнда в R

Мы можем использовать функцию rand.index() из пакета ископаемых для расчета индекса Рэнда между двумя методами кластеризации в 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 для расчета индекса Рэнда между двумя кластерами:

 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-средних
Введение в кластеризацию K-Medoids
Введение в иерархическую кластеризацию

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *