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


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

Часто обозначаемый R , индекс Рэнда рассчитывается как:

R = (a+b) / ( n C 2 )

куда:

  • a: количество раз, когда пара элементов принадлежит одному и тому же кластеру при использовании двух методов кластеризации.
  • b: количество раз, когда пара элементов принадлежит разностным кластерам по двум методам кластеризации.
  • 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} , {С, Е}, {Д, Е}

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

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

  • {А, Б}

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

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

  • {А, Г}, {А, Е}, {Б, Г}, {Б, Е}, {В, Е}

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

Наконец, мы можем рассчитать индекс Рэнда как:

  • R = (a+b) / ( n C 2 )
  • Р = (1+5) / 10
  • Р = 6/10

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

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

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

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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.