ما هو مؤشر راند؟ (تعريف وأمثلة)
يعد مؤشر Rand وسيلة لمقارنة تشابه النتائج بين طريقتين مختلفتين للتجميع.
غالبًا ما يُشار إليه بـ R ، ويتم حساب مؤشر Rand على النحو التالي:
ص = (أ+ب) / ( ن ج 2 )
ذهب:
- أ: عدد المرات التي ينتمي فيها زوج من العناصر إلى نفس المجموعة وفقًا لطريقتين للتجميع.
- ب: عدد المرات التي ينتمي فيها زوج من العناصر إلى مجموعات مختلفة وفقا لطريقتين للتجميع.
- n C 2 : عدد الأزواج غير المرتبة في مجموعة من العناصر n .
يأخذ مؤشر Rand دائمًا قيمة تتراوح بين 0 و1 حيث:
- 0: يشير إلى أن طريقتين للتجميع لا تتفقان على تجميع زوج من العناصر.
- 1: يشير إلى أن طريقتي التجميع تتفقان تمامًا على تجميع كل زوج من العناصر.
يوضح المثال التالي كيفية حساب مؤشر Rand بين طريقتين للتجميع لمجموعة بيانات بسيطة.
مثال: كيفية حساب مؤشر الراند
لنفترض أن لدينا مجموعة البيانات التالية التي تتكون من خمسة عناصر:
- مجموعة البيانات: {أ، ب، ج، د، هـ}
ولنفترض أننا نستخدم طريقتين للتجميع تضعان كل عنصر في المجموعات التالية:
- مجموعات الطريقة الأولى: {1، 1، 1، 2، 2}
- طريقة المجموعة 2: {1، 1، 2، 2، 3}
لحساب مؤشر Rand بين طرق التجميع هذه، نحتاج أولاً إلى تدوين جميع الأزواج غير المرتبة المحتملة في مجموعة البيانات المكونة من خمسة عناصر:
- أزواج غير مرتبة: {A، B}، {A، C}، {A، D}، {A، E}، {B، C}، {B، D}، {B، E}، {C، D } ، {ج، ه}، {د، ه}
هناك 10 أزواج غير مرتبة.
بعد ذلك، نحتاج إلى حساب a ، الذي يمثل عدد الأزواج غير المرتبة التي تنتمي إلى نفس المجموعة في كلتا طريقتي التجميع:
- {أب}
في هذه الحالة أ = 1 .
بعد ذلك، نحتاج إلى حساب b ، الذي يمثل عدد الأزواج غير المرتبة التي تنتمي إلى مجموعات مختلفة في طريقتي التجميع:
- {أ، د}، {أ، ه}، {ب، د}، {ب، ه}، {ج، ه}
في هذه الحالة ب = 5 .
وأخيرا يمكننا حساب مؤشر الراند على النحو التالي:
- ص = (أ+ب) / ( ن ج 2 )
- ص = (1+5) / 10
- ص = 6/10
مؤشر الراند هو 0.6 .
كيفية حساب مؤشر Rand في R
يمكننا استخدام الدالة rand.index() من الحزمة الأحفورية لحساب مؤشر Rand بين طريقتين للتجميع في 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 . وهذا يتوافق مع القيمة التي حسبناها يدويًا.
كيفية حساب مؤشر راند في بايثون
يمكننا تحديد الوظيفة التالية في بايثون لحساب مؤشر 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
وتبين أن مؤشر راند هو 0.6 . وهذا يتوافق مع القيمة المحسوبة في الأمثلة السابقة.
مصادر إضافية
مقدمة إلى K-Means Clustering
مقدمة إلى مجموعات K-Medoids
مقدمة إلى التجميع الهرمي