ランド指数とは何ですか? (定義と例)


Rand インデックスは、 2 つの異なるクラスタリング手法間の結果の類似性を比較する方法です。

Rand インデックスはRで表されることが多く、次のように計算されます。

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

金:

  • a: 2 つのクラスタリング方法に従って、要素のペアが同じクラスターに属する回数。
  • b: 2 つのクラスタリング手法による、要素のペアが差分クラスターに属する回数。
  • n C 2 : n 個の要素のセット内の順序のないペアの数。

Rand インデックスは常に 0 から 1 までの値を取ります。

  • 0: 2 つのクラスタリング手法が要素のペアのクラスタリングに関して一致しないことを示します。
  • 1: 2 つのクラスタリング手法が要素の各ペアのクラスタリングに関して完全に一致することを示します。

次の例は、単純なデータセットに対して 2 つのクラスタリング手法間の Rand インデックスを計算する方法を示しています。

例: Rand インデックスの計算方法

5 つの要素で構成される次のデータ セットがあるとします。

  • データセット: {A、B、C、D、E}

そして、各要素を次のクラスターに配置する 2 つのクラスタリング手法を使用するとします。

  • 方法 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です。

次に、2 つのクラスタリング方法で異なるクラスターに属する順序なしペアの数を表すbを計算する必要があります。

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

この場合、 b = 5です。

最後に、次のように Rand インデックスを計算できます。

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

ランド指数は0.6です。

R で Rand インデックスを計算する方法

fossilパッケージのrand.index()関数を使用して、R の 2 つのクラスタリング手法間の Rand インデックスを計算できます。

 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 で Rand インデックスを計算する方法

Python で次の関数を定義して、2 つのクラスター間の 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-Means クラスタリングの概要
K-Medoids クラスタリングの概要
階層的クラスタリングの概要

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です