Rand endeksi nedir? (tanım ve örnekler)
Rand endeksi, iki farklı kümeleme yöntemi arasındaki sonuçların benzerliğini karşılaştırmanın bir yoludur.
Çoğunlukla R olarak gösterilen Rand endeksi şu şekilde hesaplanır:
R = (a+b) / ( nC2 )
Altın:
- a: iki kümeleme yöntemine göre bir öğe çiftinin aynı kümeye ait olma sayısı.
- b: iki kümeleme yöntemine göre bir öğe çiftinin fark kümelerine ait olma sayısı.
- n C 2 : n elemanlı bir kümedeki sırasız çiftlerin sayısı.
Rand endeksi her zaman 0 ile 1 arasında bir değer alır; burada:
- 0: İki kümeleme yönteminin bir çift öğenin kümelenmesi konusunda anlaşmaya varmadığını gösterir.
- 1: İki kümeleme yönteminin, her bir öğe çiftinin kümelenmesi konusunda mükemmel şekilde uyuştuğunu belirtir.
Aşağıdaki örnek, basit bir veri kümesi için iki kümeleme yöntemi arasında Rand dizininin nasıl hesaplanacağını gösterir.
Örnek: Rand endeksi nasıl hesaplanır?
Beş öğeden oluşan aşağıdaki veri setine sahip olduğumuzu varsayalım:
- Veri kümesi: {A, B, C, D, E}
Ve her bir öğeyi aşağıdaki kümelere yerleştiren iki kümeleme yöntemi kullandığımızı varsayalım:
- Yöntem 1 kümeleri: {1, 1, 1, 2, 2}
- Küme yöntemi 2: {1, 1, 2, 2, 3}
Bu kümeleme yöntemleri arasında Rand endeksini hesaplamak için öncelikle beş öğeli veri kümesindeki tüm olası sırasız çiftleri yazmamız gerekir:
- Sırasız çiftler: {A, B}, {A, C}, {A, D}, {A, E}, {B, C}, {B, D}, {B, E}, {C, D } , {C, E}, {D, E}
10 tane sırasız çift vardır.
Daha sonra, her iki kümeleme yönteminde de aynı kümeye ait sırasız çiftlerin sayısını temsil eden a’yı hesaplamamız gerekir:
- {AB}
Bu durumda a = 1 olur.
Daha sonra, iki kümeleme yönteminde farklı kümelere ait sırasız çiftlerin sayısını temsil eden b’yi hesaplamamız gerekir:
- {A, D}, {A, E}, {B, D}, {B, E}, {C, E}
Bu durumda b = 5 olur.
Son olarak Rand indeksini şu şekilde hesaplayabiliriz:
- R = (a+b) / ( nC2 )
- R = (1+5) / 10
- R = 6/10
Rand endeksi 0,6’dır .
R’de Rand endeksi nasıl hesaplanır
R’deki iki kümeleme yöntemi arasındaki Rand indeksini hesaplamak için fosil paketindeki Rand.index() fonksiyonunu kullanabiliriz:
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
Rand endeksi 0,6’dır . Bu bizim manuel olarak hesapladığımız değere karşılık geliyor.
Python’da Rand Dizini Nasıl Hesaplanır?
İki küme arasındaki Rand indeksini hesaplamak için Python’da aşağıdaki fonksiyonu tanımlayabiliriz:
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 endeksi 0,6 olarak çıkıyor. Bu, önceki örneklerde hesaplanan değere karşılık gelir.
Ek kaynaklar
K-Means Kümelenmesine Giriş
K-Medoids kümelemeye giriş
Hiyerarşik kümelemeye giriş