LoginSignup
5
9

More than 1 year has passed since last update.

クラスタリング結果の一致を調べるーその1:Rand index

Last updated at Posted at 2019-04-03

Rand index(ランド指標・ランド指数)

Wikipediaでは英語版しかなく、日本語での説明記事がなぜかほとんどないので書きました。
ぬるっとWikiを読むと、X, Yそれぞれで任意個のサンプルが存在してもいいのかと一瞬混乱したので、初学者(と未来の自分)へ向けて残しておきます。
(追記)ランド指数で検索したら出てくるのを知った。日本語版Wikipedia早く誰か作って。

Rand indexとは

例えばX, Yというふたつの実験でそれぞれ対応するn個のサンプルが、別々にクラスタリングをしたときにも、できるだけ同じようなクラスターに分類されていて欲しいとする。そのような状態を表現する指標がRand indexです。

具体例

実際に5回ずつ計測されたX, Yのなんらかのデータをもとに、試しに2つのグループにクラスタリングすると

X: 1, 2, 1, 1, 2
Y: 1, 1, 2, 1, 2

というクラスに分類されたとする。
ここで、この5つからとりうるすべてのペア間でX, Yにおけるクラスタリングの結果を比較します。
評価の基準はそれぞれが同じクラスに入っていたか、そうでないか
ただそれだけ。

例えば1,2番目のペア同士を比較すると、

X: 1 x 2
Y: 1 o 1

となり、Xのクラスタリング結果は一致、Yの結果は不一致です。
このようにそれぞれでの一致不一致を調べた結果の個数をContingency tableにまとめる。
例えば上の例は左下のケースとして数えられる。

  Yo Yx
Xo 1 3 4
Xx 3 3 6
4 6 10

このテーブルの値をもとにいよいよRand indexを計算する。
このときのテーブルの値を以下のような変数で表現したとき、

  Yo Yx
Xo a c
Xx b d

Rand indexは下の式で計算ができる。

$$Rand\ index=\frac{(a+d)}{(a+b+c+d)}=\frac{(a+d)}{\binom{n}{2}}$$

実際の値をいれて計算すると、今回のクラスタリング結果のRand indexは
$$=\frac{(1+3)}{(1+3+3+3)}=\frac{(1+3)}{\frac{5\times(5-1)}{2\times 1}}=0.4$$

という値になる。
例では2つのグループへのクラスタリングだったが、実際には任意の数のグループへの分割に対して定義されていて、各X,Yで同じクラスター数である必要もない。

ということで、Rand indexを計算することができるデータセットは

X, Y二条件において同じ数の(ペアを組んでいる)サンプルが存在する
X, Yそれぞれで任意の有限個のクラスターへの分類を行う

この2つが前提となります。

ちなみにRの関数はこれですよ。

g1 <- sample(1:2, size=10, replace=TRUE)
g2 <- sample(1:3, size=10, replace=TRUE)
rand.index(g1, g2)

-> Adjusted Rand Indexへ続く?

5
9
11

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9