Что такое индекс рэнда? (определение и примеры)
Индекс Рэнда — это способ сравнить сходство результатов двух разных методов кластеризации.
Индекс Рэнда, часто обозначаемый 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
Введение в иерархическую кластеризацию