การคำนวณดัชนีแรนด์


17

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

ตอนนี้ฉันใช้ตัวอย่างจากหนังสือ An Introduction to Information Retrieval (Manning, Raghavan & Schütze, 2009) ที่หน้า 359 พวกเขาพูดถึงวิธีคำนวณดัชนีแรนด์ สำหรับตัวอย่างนี้พวกเขาใช้สามกลุ่มและกลุ่มมีวัตถุต่อไปนี้

  1. aaaaab
  2. abbbbc
  3. aaccc

ฉันเปลี่ยนวัตถุ (สัญญาณเดิมเป็นตัวอักษร แต่ความคิดและจำนวนยังคงเหมือนเดิม) ฉันจะให้คำที่แน่นอนจากหนังสือเพื่อดูสิ่งที่พวกเขากำลังพูดถึง:

อันดับแรกเราคำนวณ TP + FP สามกลุ่มประกอบด้วย 6, 6 และ 5 คะแนนตามลำดับดังนั้นจำนวนรวมของ "ผลบวก" หรือคู่ของเอกสารที่อยู่ในคลัสเตอร์เดียวกันคือ:

TP + FP = + + = 15 + 15+ 10 = 40(62)(62)(52)

ในบรรดาเหล่านี้คู่ในคลัสเตอร์ 1, คู่ b ในกลุ่ม 2, คู่ c ในกลุ่ม 3 และคู่ในกลุ่ม 3 เป็นผลบวกจริง:

TP = + + {3 \ select 2} + {2 \ select 2} = 10 + 6 + 3 + 1 = 20(52)(42)(32)(22)

ดังนั้น FP = 40 - 20 = 20

จนถึงที่นี่มีการคำนวณที่ชัดเจนและถ้าฉันนำตัวอย่างอื่น ๆ ฉันได้ผลลัพธ์เดียวกัน แต่เมื่อฉันต้องการคำนวณค่าลบเท็จและค่าลบจริง Manning และคณะ ระบุสิ่งต่อไปนี้:

FN และ TN คำนวณในทำนองเดียวกันผลลัพธ์ในตารางฉุกเฉินดังต่อไปนี้:

ตารางฉุกเฉินมีลักษณะดังนี้:

+--------+--------+
| TP: 20 | FN: 24 |
+--------+--------+
| FP: 20 | TN: 72 |
+--------+--------+

ประโยค: "FN และ TN คำนวณในทำนองเดียวกัน" ไม่ชัดเจนกับฉันและฉันไม่เข้าใจว่าต้องคำนวณตัวเลขใดกับ TN และ FN ฉันสามารถคำนวณด้านขวาของตารางโดยทำสิ่งต่อไปนี้:

TP + FP + FN + TN = = = 136(n2)(172)

ที่มา: http://en.wikipedia.org/wiki/Rand_index

ดังนั้น FN + TN = 136 - TP + FP = 136 - 40 = 96 แต่สิ่งนี้ไม่ได้ช่วยฉันในการหาวิธีการคำนวณตัวแปรแยกจากกัน โดยเฉพาะอย่างยิ่งเมื่อผู้เขียนพูดว่า: "FN และ TN คำนวณในทำนองเดียวกัน" ฉันไม่เห็นวิธี นอกจากนี้เมื่อฉันดูตัวอย่างอื่น ๆ พวกเขาคำนวณแต่ละเซลล์ของตารางฉุกเฉินโดยดูที่แต่ละคู่

ตัวอย่างเช่น: http://www.otlet-institute.org/wikics/Clustering_Problems.html#toc-Subsection-4.1

คำถามแรกของฉันตามตัวอย่างของ Manning et al (2009) เป็นไปได้หรือไม่ที่จะคำนวณ TN และ FN หากคุณรู้จัก TP & NP? และถ้าเป็นเช่นนั้นการคำนวณที่คล้ายกันจะมีลักษณะอย่างไรตามตัวอย่างที่กำหนด

คำตอบ:


9

ฉันครุ่นคิดถึงเรื่องเดียวกันและฉันแก้ไขมันแบบนี้ สมมติว่าคุณมีตารางเมทริกซ์ / เหตุการณ์ที่เกิดขึ้นร่วมกันโดยที่แถวนั้นเป็นกลุ่มความจริงภาคพื้นดินและคอลัมน์เป็นกลุ่มที่พบโดยอัลกอริทึมการจัดกลุ่ม

ดังนั้นสำหรับตัวอย่างในหนังสือมันจะมีลักษณะ:

  | 1 | 2 | 3
--+---+---+---
x | 5 | 1 | 2
--+---+---+---
o | 1 | 4 | 0
--+---+---+---
◊ | 0 | 1 | 3

ตอนนี้คุณสามารถคำนวณ TP + FP ได้อย่างง่ายดายโดยการหาผลรวมต่อคอลัมน์และ 'เลือก 2' เหนือค่าเหล่านั้นทั้งหมด ผลรวมคือ [6, 6, 5] และคุณทำ '6 เลือก 2' + '6 เลือก 2' + '5 เลือก 2'

ทีนี้, ในทำนองเดียวกัน, คุณสามารถรับ TP + FN ได้โดยการหาผลรวมของแถว (เช่น, นั่นคือ [8, 5, 4] ในตัวอย่างข้างต้น), ใช้ 'เลือก 2' เหนือค่าทั้งหมดเหล่านั้น, และรับ ผลรวมของสิ่งนั้น

TP ของตัวเองสามารถคำนวณได้โดยใช้ 'เลือก 2' กับทุกเซลล์ในเมทริกซ์และนำผลรวมของทุกสิ่ง (สมมติว่า '1 เลือก 2' คือ 0)

ในความเป็นจริงนี่เป็นรหัส Python ที่ทำสิ่งนั้นอย่างถูกต้อง:

import numpy as np
from scipy.misc import comb

# There is a comb function for Python which does 'n choose k'                                                                                            
# only you can't apply it to an array right away                                                                                                         
# So here we vectorize it...                                                                                                                             
def myComb(a,b):
  return comb(a,b,exact=True)

vComb = np.vectorize(myComb)

def get_tp_fp_tn_fn(cooccurrence_matrix):
  tp_plus_fp = vComb(cooccurrence_matrix.sum(0, dtype=int),2).sum()
  tp_plus_fn = vComb(cooccurrence_matrix.sum(1, dtype=int),2).sum()
  tp = vComb(cooccurrence_matrix.astype(int), 2).sum()
  fp = tp_plus_fp - tp
  fn = tp_plus_fn - tp
  tn = comb(cooccurrence_matrix.sum(), 2) - tp - fp - fn

  return [tp, fp, tn, fn]

if __name__ == "__main__":
  # The co-occurrence matrix from example from                                                                                                           
  # An Introduction into Information Retrieval (Manning, Raghavan & Schutze, 2009)                                                                       
  # also available on:                                                                                                                                   
  # http://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-clustering-1.html                                                                     
  #                                                                                                                                                      
  cooccurrence_matrix = np.array([[ 5,  1,  2], [ 1,  4,  0], [ 0,  1,  3]])

  # Get the stats                                                                                                                                        
  tp, fp, tn, fn = get_tp_fp_tn_fn(cooccurrence_matrix)

  print "TP: %d, FP: %d, TN: %d, FN: %d" % (tp, fp, tn, fn)

  # Print the measures:                                                                                                                                  
  print "Rand index: %f" % (float(tp + tn) / (tp + fp + fn + tn))

  precision = float(tp) / (tp + fp)
  recall = float(tp) / (tp + fn)

  print "Precision : %f" % precision
  print "Recall    : %f" % recall
  print "F1        : %f" % ((2.0 * precision * recall) / (precision + recall))

ถ้าฉันเรียกใช้ฉันจะได้รับ:

$ python testCode.py
TP: 20, FP: 20, TN: 72, FN: 24
Rand index: 0.676471
Precision : 0.500000
Recall    : 0.454545
F1        : 0.476190

ฉันไม่ได้ตรวจสอบตัวอย่างอื่นนอกเหนือจากนี้ดังนั้นฉันหวังว่าฉันทำถูกต้อง .... ;-)


หาคำตอบ แต่คุณไม่ต้องอธิบาย คุณพูดตามคอลัมน์ทั้งสองครั้ง คุณสามารถอัปเดตคำตอบของคุณและรวม FN + TN เช่นเดียวกับที่คุณทำ FP + TP
MonsterMMORPG

ฉันไม่เข้าใจว่าเพราะเหตุใดสำหรับการพิจารณาเลือก '2 เลือก 2' ไม่ได้หมายความว่า x ถูกจัดประเภทไม่ถูกต้องเป็น◊หรือไม่
vcosk

คุณไม่หมายถึง "ผลรวมของแถว" สำหรับ TP + FN ใช่หรือไม่
zython

ฉันขอโทษใช่คุณพูดถูก แก้ไขในคำตอบ
Tom

6

หลังจากได้ศึกษาคำตอบอื่น ๆ ในกระทู้นี้นี่คือการใช้ Python ของฉันซึ่งใช้อาร์เรย์เป็นอินพุตsklearn- สไตล์:

import numpy as np
from scipy.misc import comb

def rand_index_score(clusters, classes):

    tp_plus_fp = comb(np.bincount(clusters), 2).sum()
    tp_plus_fn = comb(np.bincount(classes), 2).sum()
    A = np.c_[(clusters, classes)]
    tp = sum(comb(np.bincount(A[A[:, 0] == i, 1]), 2).sum()
             for i in set(clusters))
    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)

In [319]: clusters
Out[319]: [0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2]

In [320]: classes
Out[320]: [0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 2, 1, 0, 2, 2, 2, 0]

In [321]: rand_index_score(clusters, classes)
Out[321]: 0.67647058823529416

4

ฉันไม่ค่อยแน่ใจตัวเอง แต่นี่เป็นวิธีที่ฉันทำค่า
TN : TN = (7 2) (10 2) (4 2)

(7 2) - กลุ่ม 1 - ทดสอบบอกว่า 'x' ดังนั้นให้นับจำนวนที่ไม่ใช่ x (และจัดกลุ่มในกลุ่ม 2 และ 3 อย่างถูกต้อง)

ie 4 'o's + 3' d's (เพชร) = (7 2)

(10 2) - กลุ่ม 2 นับจำนวนที่ไม่ได้รวมอยู่ในกลุ่มที่ 1 และ 3 อย่างถูกต้อง

ie 5 'x' + (2'x '+ 3'd') = (10 2)

(4 2) - กลุ่ม 3 นับจำนวนที่ไม่ใช่ 'x' และไม่ 'd' (องค์ประกอบรูปเพชร) ที่มีการจัดกลุ่มอย่างถูกต้องในคลัสเตอร์ 1 & 2

ie 4 'o ในคลัสเตอร์ 2 = (4 2)

TN = (7 2) + (10 2) + (4 2) = 72

จากนั้น FN คือ:

FN = (17 2) - (TP + FP) - TN = 136 - 40 -72 = 24. ---> (17 = จำนวนเอกสารทั้งหมด)


นี่คือคำตอบที่สมเหตุสมผลที่สุดสำหรับฉันแม้ว่ามันจะไม่แสดงให้เห็นว่า "FN และ TN คำนวณด้วยวิธีเดียวกัน" ตามที่หนังสือพูดและคำถามหมายถึง ฉันสงสัยว่าอาจจะมีวิธีที่ง่ายกว่าเดิมซึ่งอาจเป็นคำตอบที่กล่าวถึงกลยุทธ์การเปลี่ยนกลุ่ม / ชั้นเรียนที่
cjauvin

นี่เป็นสิ่งผิดคำอธิบายนี้ใช้ไม่ได้กับตัวอย่างอื่น ให้คะแนนโหวตกลับของฉัน! คำตอบที่ถูกต้องคือ @ user9668
Özgür

คำตอบนี้เหมาะสมอย่างแท้จริง
EhsanF

2

ยกตัวอย่างของคำถามอื่น:

  | 1 | 2 | 3
--+---+---+---
x | 5 | 1 | 2
--+---+---+---
o | 1 | 4 | 0
--+---+---+---
◊ | 0 | 1 | 3

คำตอบที่เหมาะสมสำหรับ FN:

FN = (c(8,2)-c(5,2)-c(2,2))+(c(5,2)-c(4,2))+(c(4,2)-c(3,2))=24  

คำอธิบาย:

  • (ค (8,2) -c (5,2) -c (2,2))

    เลือก 2 จาก 8 สำหรับ 'x' (a) การรวมกันของคลาสเดียวกันในกลุ่มเดียวกัน (c (5,2) สำหรับคลัสเตอร์ 1 และ c (2,2) สำหรับคลัสเตอร์ 3)

  • (ค (5,2) -c (4,2))

    เลือก 2 จาก 5 'o' (b) ลบการรวมกันของคลาสเดียวกันในกลุ่มเดียวกัน (c (4,2) สำหรับคลัสเตอร์ 2)

  • (ค (4,2) -c (3,2)

    เลือก 2 จาก 4 สำหรับ '◇' (c) ลบการรวมกันของคลาสเดียวกันในกลุ่มเดียวกัน (c (3,2) สำหรับคลัสเตอร์ 3)

ฉันได้มันมาอย่างนี้


1

ฉันมีการใช้งานสิ่งนี้ใน R ซึ่งฉันจะอธิบาย:

TP (a ในรหัส) คือผลรวมของทุกเซลล์เลือก 2. ตามคำถามดั้งเดิม (0 หรือ 1 เลือก 2 เท่ากับ 0)

FN (b) คือผลรวมของแต่ละแถวเลือก 2, รวมทั้งหมด, น้อยกว่า TP ที่ผลรวมของ Row แต่ละอันแสดงถึงจำนวนของเอกสารในแต่ละคลาส True

ผลรวมของสิ่งนี้คือเอกสารทั้งหมดที่คล้ายกันและในคลัสเตอร์เดียวกัน (TP) รวมทั้งเอกสารทั้งหมดที่คล้ายกันและไม่ได้อยู่ในคลัสเตอร์เดียวกัน (FN)

ดังนั้นนี่คือ (TP + FN) - TP = FN

คำนวณ FP (c) ในทำนองเดียวกัน ผลรวมของแต่ละคอลัมน์เลือก 2 ผลรวมทั้งหมดหัก TP น้อยลง ในกรณีนี้ผลรวมแต่ละคอลัมน์แสดงจำนวนเอกสารในแต่ละคลัสเตอร์

ดังนั้นผลรวมของสิ่งนี้คือเอกสารทั้งหมดที่คล้ายกันและในคลัสเตอร์เดียวกัน (TP) รวมทั้งเอกสารทั้งหมดที่ไม่เหมือนกันและอยู่ในคลัสเตอร์เดียวกัน (FP)

นี่คือ (TP + FP) - TP = FP

ด้วยการคำนวณ 3 ตัวนี้การคำนวณที่เหลือของ TN จะถูกส่งต่อ ผลรวมของตารางเลือก 2 น้อยกว่า TP, FP & FN = TN (d)

แบบสอบถามเดียวที่ฉันมีด้วยวิธีนี้คือนิยามของ TP การใช้คำศัพท์ในคำถามนี้ฉันไม่เข้าใจว่าทำไม 2 a ในคลัสเตอร์ 3 จึงถือว่า TP ฉันพบสิ่งนี้ทั้งที่นี่และในตำราเรียนที่เกี่ยวข้อง อย่างไรก็ตามฉันเข้าใจการคำนวณของพวกเขาด้วยการสันนิษฐานว่าการคำนวณ TP นั้นถูกต้อง

หวังว่านี่จะช่วยได้

FMeasure = function (x, y, beta) 
{
  x <- as.vector(x)
  y <- as.vector(y)
  if (length(x) != length(y)) 
    stop("arguments must be vectors of the same length")
  tab <- table(x, y)
  if (all(dim(tab) == c(1, 1))) 
    return(1)
  a <- sum(choose(tab, 2))
  b <- sum(choose(rowSums(tab), 2)) - a
  c <- sum(choose(colSums(tab), 2)) - a
  d <- choose(sum(tab), 2) - a - b - c
  ## Precision
  P = a / (a + c)
  ## Recall
  R = a / (a + b)
  ##F-Measure
  Fm <- (beta^2 + 1) * P * R / (beta^2*P + R)
  return(Fm)
}

นี่คือสิ่งที่คุณหมายถึงอะไรโดย dell, row, column?
Özgür

ฉันไม่แน่ใจว่าทำไมคุณกำลังอธิบายสถิติแรนด์ว่าเป็นสมัยนิยม เซลล์แถวและคอลัมน์หมายถึงแถวและคอลัมน์เซลล์ของเมทริกซ์ความสับสน ตามคำถามของ OP
SamPassmore

เพราะไม่มีเมทริกซ์ความสับสนในคำถามดั้งเดิมใช่ไหม และคุณไม่รู้ว่ามันเป็นเมทริกซ์ที่สับสน มันอยู่ในคำตอบแรกข้างต้นและเมื่อใช้แล้วใช่วิธีการของคุณดูเหมือนจะทำงานได้
Özgür

0

คุณสามารถคำนวณ TN และ FN ได้ในวิธีเดียวกัน

เพียงแค่สลับบทบาทของป้ายและกลุ่ม

a) 1 1 1 1 1 2 3 3
b) 1 2 2 2 2
c) 2 3 3 3 3

... จากนั้นทำการคำนวณเดียวกัน


คุณชัดเจนกว่านี้ได้ไหม นอกจากนี้คุณยังมี 3 พิเศษในรายการของคุณ (c) ฉันเชื่อว่าควรมี 17 รายการ
cjauvin

คำตอบที่ชัดเจนมาก
MonsterMMORPG

0

ฉันคิดว่าฉันได้ทำการออกแบบลบค่าลบ (FN) กลับคืนแล้ว สำหรับแง่บวกที่แท้จริงคุณทำ 4 กลุ่มที่เป็นบวก ในคลัสเตอร์ 1 คุณมีห้าเอ ในคลัสเตอร์ 2 คุณมี 4 b ในคลัสเตอร์ 3 คุณมี 3 c และ 2 a

ดังนั้นสำหรับค่าลบที่เป็นเท็จ

  1. เริ่มต้นด้วย a ในคลัสเตอร์ 1 มี 5 ที่อยู่ในคลัสเตอร์อย่างถูกต้อง 1 คุณมี 1 เท็จในคลัสเตอร์ 2 และเท็จสองตัวในคลัสเตอร์ 3 ที่ให้ (5 1) และ (5 2)
  2. จากนั้นสำหรับข มี 4 อย่างถูกต้องวางของคุณคำนวณก่อนหน้า คุณมีหนึ่ง b เท็จในคลัสเตอร์ 1 และนั่นคือ นั่นให้คุณ (4 1) สำหรับ b's
  3. จากนั้นสำหรับค คุณมีหนึ่ง c เท็จในคลัสเตอร์ 2 โดยมีสามรายการที่ถูกต้องในคลัสเตอร์ 3 ดังนั้นจึงมี (3 1)
  4. หลังจากนั้นเราไม่สามารถลืมคู่ของ a ในคลัสเตอร์ 3 ที่เราเรียกว่าเป็นบวกอย่างแท้จริง ดังนั้นด้วยความเคารพนั้นเรามี 1 เท็จ a ในคลัสเตอร์ 2 แม้ว่าจะมี a อื่น ๆ ในกลุ่ม 1 เราไม่สามารถเรียกมันว่า a เท็จได้เพราะมีจำนวนมาก

ดังนั้นคุณมี (5 1) + (5 2) + (4 1) + (3 1) + (2 1) ซึ่งเท่ากับ 5 + 10 + 4 + 3 + 2 = 24 นั่นคือที่มาจาก 24 แล้ว เพียงแค่ลบออกจาก 136 คุณพบว่าได้รับจริง neg (TN)


0

นี่คือวิธีการคำนวณทุกตัวชี้วัดสำหรับดัชนีแรนด์ โดยไม่ต้องลบออก

หมายเหตุด้านข้างเพื่อความเข้าใจง่ายขึ้น:

1) ดัชนีแรนด์ขึ้นอยู่กับการเปรียบเทียบคู่ขององค์ประกอบ ทฤษฎีแนะนำว่าควรมีการวางองค์ประกอบคู่ที่คล้ายกันในคลัสเตอร์เดียวกันในขณะที่องค์ประกอบที่แตกต่างกันควรอยู่ในกลุ่มแยกต่างหาก

2) RI ไม่สนใจเกี่ยวกับความแตกต่างของจำนวนกลุ่ม มันแค่ใส่ใจเกี่ยวกับองค์ประกอบของคู่แท้ / เท็จ

จากข้อสมมติฐานนี้จะคำนวณดัชนีแรนด์

ป้อนคำอธิบายรูปภาพที่นี่

ตกลงดำน้ำที่นี่เป็นตัวอย่างของเรา:

  | 1 | 2 | 3
--+---+---+---
x | 5 | 1 | 2
--+---+---+---
o | 1 | 4 | 0
--+---+---+---
◊ | 0 | 1 | 3

ในตัวหารเรามีคู่ที่เป็นไปได้ทั้งหมดซึ่งก็คือ (17 2) = 136

ตอนนี้ให้คำนวณทุกตัวชี้วัดเพื่อความเข้าใจที่ดีขึ้น:

A)เริ่มจากง่าย ๆ, a ( บวกจริงหรือถูกต้องที่คล้ายกัน )

หมายความว่าคุณต้องค้นหาองค์ประกอบที่เป็นไปได้ทั้งหมดซึ่งการทำนายและป้ายกำกับที่แท้จริงถูกรวมเข้าด้วยกัน ในตัวอย่างกริดหมายถึงรับผลรวมของคู่ที่เป็นไปได้ภายในแต่ละเซลล์

a = (5 2) + (1 2) + (2 2) + (1 2) + (4 2) + (0 2) + (0 2) + (1 2) + (3 2) = 
  = 10 + 0 + 1 + 0 + 6 + 0 + 0 + 0 + 3 = 20

C)ทีนี้มาทำc ( False Positivesหรือต่างกันไม่ถูกต้อง )

หมายความว่าหาคู่ทั้งหมดที่เราอยู่ด้วยกัน แต่ควรอยู่ในกลุ่มที่แตกต่างกัน ในตัวอย่างตารางหมายถึงค้นหาคู่ที่เป็นไปได้ทั้งหมดระหว่างเซลล์แนวนอน 2 เซลล์ใด ๆ

c = 5*1 + 5*2 + 1*2 + 
  + 1*4 + 1*0 + 4*0 + 
  + 0*1 + 0*3 + 1*3 = 
  = 5 + 10 + 2 + 4 + 0 + 0 + 0 + 0 + 3 = 24

D)การคำนวณd ( เท็จลบหรือคล้ายกันไม่ถูกต้อง ) หมายถึงหาคู่ทั้งหมดที่เราวางไว้ในกลุ่มที่แตกต่างกัน แต่ควรอยู่ด้วยกัน ในตัวอย่างตารางค้นหาคู่ที่เป็นไปได้ทั้งหมดระหว่าง 2 เซลล์แนวตั้ง

d = 5*1 + 5*0 + 1*0 + 
  + 1*4 + 1*1 + 4*1 + 
  + 2*0 + 2*3 + 0*3 = 
  = 5 + 0 + 0 + 4 + 1 + 4 + 0 + 6 + 0 = 20

B)และในที่สุดก็มาทำ ( True Trueหรือที่แตกต่างกันถูกต้อง) )

หมายความว่าหาคู่ทั้งหมดที่เราวางไว้ในกลุ่มที่แตกต่างกันซึ่งควรจะอยู่ในกลุ่มที่แตกต่างกัน บนกริดหมายถึงหาคู่ที่เป็นไปได้ทั้งหมดระหว่างเซลล์ที่ไม่ใช่แนวนอนและแนวนอน 2 เซลล์

นี่คือตัวเลขที่ควรนำมาคูณเพื่อทำความเข้าใจกับสิ่งที่ฉันต้องการ:

d = x1*o2 + x1*o3 + x1*◊2 + x1*◊3 + 
  + x2*o1 + x2*o3 + x2*◊1 + x2*◊3 + 
  + x3*o1 + x3*o2 + x3*◊1 + x3*◊2 + 
  + o1*◊2 + o1*◊3 + 
  + o2*◊1 + o2*◊3 + 
  + o3*◊1 + o3*◊2

ในตัวเลข:

d = 5*4 + 5*0 + 5*1 + 5*3 + 
  + 1*1 + 1*0 + 1*0 + 1*3 + 
  + 2*1 + 2*4 + 2*0 + 2*1 + 
  + 1*1 + 1*3 +
  + 4*0 + 4*3 = 72

และท้ายที่สุดดัชนีแรนด์มีค่าเท่ากัน: (20 + 72) / 136 = 0.676


0

ด้านล่างเป็นภาพที่อธิบายคำถามของคุณ:

แรนด์-ดัชนีคำถาม

ในการแก้ปัญหานี้คุณต้องพิจารณาเมทริกซ์นี้:

+--------------------------------+--------------------------------------+
| TP:                            | FN:                                  |
| Same class + same cluster      | Same class + different clusters      |
+--------------------------------+--------------------------------------+
| FP:                            | TN:                                  |
| different class + same cluster | different class + different clusters |
+--------------------------------+--------------------------------------+

นี่คือวิธีที่เราคำนวณ TP, FN, FP สำหรับดัชนี Rand:

การคำนวณ TP, FN และ FP สำหรับดัชนีแรนด์

หมายเหตุ: ในสมการข้างต้นฉันใช้รูปสามเหลี่ยมเพื่อแสดงเพชรในภาพ

ตัวอย่างเช่นสำหรับ False Negative เราควรเลือกจากคลาส แต่ในกลุ่มที่แตกต่างกัน ดังนั้นเราสามารถเลือก

  • (51)(11)=5
  • 1 X จากคลัสเตอร์ 1 และ 1 X จากคลัสเตอร์ 3 = (51)(21)=10
  • 1 O จากคลัสเตอร์ 1 และ 1 O จากคลัสเตอร์ 2 = (11)(41)=4
  • 1 X จากคลัสเตอร์ 2 และ 1 X จากคลัสเตอร์ 3 = (11)(21)=2
  • 1 จากคลัสเตอร์ 2 และ 1 จากคลัสเตอร์ 3 = (11)(31)=3

ในที่สุดเราก็จะได้ 24 (=5+10+4+2+3) รัฐ

เช่นเดียวกับส่วนที่เหลือของสมการ

ส่วนที่ยากที่สุดคือ TN ซึ่งสามารถทำได้เหมือนภาพด้านล่าง:

TN calculation for Rand Index

มีเส้นทางที่สั้นกว่าในการคำนวณดัชนีแรนด์ แต่เป็นการคำนวณในเชิงลึกและทีละขั้นตอน ในที่สุดตารางฉุกเฉินอาจมีลักษณะดังนี้:

+--------+--------+
| TP: 20 | FN: 24 |
+--------+--------+
| FP: 20 | TN: 72 |
+--------+--------+
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.