ดัชนีแรนด์คืออะไร? (คำจำกัดความและตัวอย่าง)
ดัชนีแรนด์ เป็นวิธีการเปรียบเทียบความคล้ายคลึงของผลลัพธ์ระหว่างวิธีการจัดกลุ่มที่แตกต่างกันสองวิธี
มักแสดงแทน R ดัชนีแรนด์ถูกคำนวณดังนี้:
R = (a+b) / ( n C 2 )
ทอง:
- a: จำนวนครั้งที่คู่ขององค์ประกอบอยู่ในคลัสเตอร์เดียวกันตามวิธีการจัดกลุ่มสองวิธี
- b: จำนวนครั้งที่คู่ขององค์ประกอบอยู่ในกลุ่มที่แตกต่างกันตามวิธีการจัดกลุ่มสองวิธี
- n C 2 : จำนวนคู่ที่ไม่เรียงลำดับในชุดขององค์ประกอบ n
ดัชนีแรนด์จะใช้ค่าระหว่าง 0 ถึง 1 เสมอ โดยที่:
- 0: บ่งชี้ว่าวิธีการจัดกลุ่มสองวิธีไม่เห็นด้วยกับการจัดกลุ่มองค์ประกอบคู่หนึ่ง
- 1: บ่งชี้ว่าวิธีการจัดกลุ่มสองวิธีสอดคล้องกันอย่างสมบูรณ์ในการจัดกลุ่มขององค์ประกอบแต่ละคู่
ตัวอย่างต่อไปนี้แสดงวิธีการคำนวณดัชนี Rand ระหว่างวิธีการจัดกลุ่มสองวิธีสำหรับชุดข้อมูลแบบธรรมดา
ตัวอย่าง: วิธีคำนวณดัชนีแรนด์
สมมติว่าเรามีชุดข้อมูลต่อไปนี้ประกอบด้วยห้าองค์ประกอบ:
- ชุดข้อมูล: {A, B, C, D, E}
และสมมติว่าเราใช้วิธีจัดกลุ่มสองวิธีโดยวางแต่ละองค์ประกอบลงในกลุ่มต่อไปนี้:
- วิธีที่ 1 คลัสเตอร์: {1, 1, 1, 2, 2}
- วิธีคลัสเตอร์ 2: {1, 1, 2, 2, 3}
ในการคำนวณดัชนีแรนด์ระหว่างวิธีการจัดกลุ่มเหล่านี้ อันดับแรกเราต้องเขียนคู่ที่ไม่เรียงลำดับที่เป็นไปได้ทั้งหมดในชุดข้อมูลห้าองค์ประกอบ:
- คู่ที่ไม่ได้เรียงลำดับ: {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}
ในกรณีนี้ ข = 5 .
สุดท้าย เราสามารถคำนวณดัชนีแรนด์ได้ดังนี้
- R = (a+b) / ( n C 2 )
- ร = (1+5) / 10
- ร = 6/10
ดัชนีแรนด์คือ 0.6
วิธีการคำนวณดัชนีแรนด์ใน 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 ซึ่งสอดคล้องกับค่าที่เราคำนวณด้วยตนเอง
วิธีการคำนวณดัชนีแรนด์ใน 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
ดัชนีแรนด์กลายเป็น 0.6 ซึ่งสอดคล้องกับค่าที่คำนวณในตัวอย่างก่อนหน้านี้
แหล่งข้อมูลเพิ่มเติม
ความรู้เบื้องต้นเกี่ยวกับการจัดกลุ่ม K-Means
ข้อมูลเบื้องต้นเกี่ยวกับการจัดกลุ่ม K-Medoids
ความรู้เบื้องต้นเกี่ยวกับการจัดกลุ่มแบบลำดับชั้น