ดัชนีแรนด์คืออะไร? (คำจำกัดความและตัวอย่าง)


ดัชนีแรนด์ เป็นวิธีการเปรียบเทียบความคล้ายคลึงของผลลัพธ์ระหว่างวิธีการจัดกลุ่มที่แตกต่างกันสองวิธี

มักแสดงแทน 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
ความรู้เบื้องต้นเกี่ยวกับการจัดกลุ่มแบบลำดับชั้น

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *