랜드 지수란 무엇입니까? (정의 및 예)


Rand 지수는 서로 다른 두 가지 클러스터링 방법 간의 결과 유사성을 비교하는 방법입니다.

종종 R 로 표시되는 Rand 지수는 다음과 같이 계산됩니다.

R = (a+b) / ( nC2 )

금:

  • a: 두 가지 클러스터링 방법에 따라 한 쌍의 요소가 동일한 클러스터에 속하는 횟수입니다.
  • b: 두 가지 클러스터링 방법에 따라 한 쌍의 요소가 서로 다른 클러스터에 속하는 횟수입니다.
  • n C 2 : n 개 요소 집합에서 순서가 지정되지 않은 쌍의 수입니다.

Rand 지수는 항상 0과 1 사이의 값을 갖습니다. 여기서:

  • 0: 두 클러스터링 방법이 요소 쌍의 클러스터링에 동의하지 않음을 나타냅니다.
  • 1: 두 가지 클러스터링 방법이 각 요소 쌍의 클러스터링에서 완벽하게 일치함을 나타냅니다.

다음 예에서는 간단한 데이터 세트에 대한 두 클러스터링 방법 간의 Rand 인덱스를 계산하는 방법을 보여줍니다.

예: 랜드 지수를 계산하는 방법

다섯 가지 요소로 구성된 다음 데이터 세트가 있다고 가정합니다.

  • 데이터세트: {A, B, C, D, E}

그리고 각 요소를 다음 클러스터에 배치하는 두 가지 클러스터링 방법을 사용한다고 가정합니다.

  • 방법 1 클러스터: {1, 1, 1, 2, 2}
  • 클러스터 방법 2: {1, 1, 2, 2, 3}

이러한 클러스터링 방법 간의 Rand 인덱스를 계산하려면 먼저 5개 요소 데이터 세트에 가능한 모든 순서가 지정되지 않은 쌍을 적어야 합니다.

  • 순서가 지정되지 않은 쌍: {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 입니다.

마지막으로 Rand 지수는 다음과 같이 계산할 수 있습니다.

  • R = (a+b) / ( nC2 )
  • R = (1+5) / 10
  • R = 6/10

랜드 지수는 0.6 입니다.

R에서 Rand 지수를 계산하는 방법

우리는 R의 두 클러스터링 방법 사이의 Rand 인덱스를 계산하기 위해 fossil 패키지의 rand.index() 함수를 사용할 수 있습니다:

 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

Rand 지수는 0.6 으로 나타납니다. 이는 이전 예에서 계산된 값에 해당합니다.

추가 리소스

K-평균 클러스터링 소개
K-Medoids 클러스터링 소개
계층적 클러스터링 소개

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다