Saya mencoba mencari cara untuk menghitung Rand Index dari algoritma cluster, tapi saya terjebak pada titik bagaimana menghitung negatif benar dan salah.
Saat ini saya menggunakan contoh dari buku An Introduction to Information Retrieval (Manning, Raghavan & Schütze, 2009). Di halaman 359 mereka berbicara tentang bagaimana cara menghitung indeks Rand. Untuk contoh ini mereka menggunakan tiga cluster dan cluster berisi objek-objek berikut.
- aaaaab
- abbbbc
- aaccc
Saya mengganti objek (tanda-tanda asli ke huruf, tetapi gagasan dan jumlah tetap sama). Saya akan memberikan kata-kata persis dari buku untuk melihat apa yang mereka bicarakan:
Kami pertama-tama menghitung TP + FP. Tiga cluster berisi 6, 6, dan 5 poin, masing-masing, sehingga jumlah total "positif" atau pasangan dokumen yang berada di cluster yang sama adalah:
TP + FP = + + = 15 + 15+ 10 = 40
Dari jumlah tersebut, pasangan a dalam kluster 1, pasangan b di kluster 2, pasangan c di kluster 3, dan pasangan di kluster 3 adalah positif sebenarnya:
TP = + + + = 10 + 6 + 3 + 1 = 20
Jadi, FP = 40 - 20 = 20.
Sampai di sini ada perhitungan yang jelas, dan jika saya mengambil contoh lain saya mendapatkan hasil yang sama, tetapi ketika saya ingin menghitung Manning et al negatif dan negatif palsu. nyatakan sebagai berikut:
FN dan TN dihitung dengan cara yang sama, menghasilkan tabel kontingensi berikut:
Tabel kontingensi terlihat sebagai berikut:
+--------+--------+
| TP: 20 | FN: 24 |
+--------+--------+
| FP: 20 | TN: 72 |
+--------+--------+
Kalimat: "FN dan TN dihitung dengan cara yang sama" tidak jelas untuk saya dan saya tidak mengerti angka mana yang saya butuhkan untuk menghitung TN dan FN. Saya dapat menghitung sisi kanan tabel dengan melakukan hal berikut:
TP + FP + FN + TN = = = 136
Sumber: http://en.wikipedia.org/wiki/Rand_index
Dengan demikian, FN + TN = 136 - TP + FP = 136 - 40 = 96, tetapi ini tidak benar-benar membantu saya dalam mencari tahu bagaimana menghitung variabel secara terpisah. Terutama ketika penulis mengatakan: "FN dan TN dihitung sama". Saya tidak mengerti caranya. Juga ketika saya melihat contoh lain mereka menghitung setiap sel dari tabel kontingensi dengan melihat masing-masing pasangan.
Contohnya: http://www.otlet-institute.org/wikics/Clustering_Problems.html#toc-Subsection-4.1
Pertanyaan pertama saya, berdasarkan contoh Manning et al (2009), apakah mungkin menghitung TN dan FN jika Anda hanya mengetahui TP & NP? Dan jika demikian, bagaimana perhitungan yang serupa terlihat dari contoh yang diberikan?
sumber
Setelah mempelajari jawaban lain di utas ini, inilah implementasi Python saya, yang menggunakan array sebagai input,
sklearn
-style:sumber
Saya sendiri tidak begitu yakin, tetapi ini adalah bagaimana saya melakukan nilai TN:
TN = (7 2) (10 2) (4 2)
(7 2) - Cluster 1 - test mengatakan 'x', jadi hitung yang TIDAK x (dan dikelompokkan dengan benar dalam cluster 2 & 3)
yaitu 4 'o's + 3' d's (berlian) = (7 2)
(10 2) - Cluster 2, hitung yang TIDAK 'o's dan dikelompokkan dengan benar dalam cluster 1 dan 3,
yaitu 5 'x' + (2'x '+ 3'd') = (10 2)
(4 2) - Cluster 3, hitung yang BUKAN 'x' dan BUKAN 'd' (elemen berbentuk berlian) yang dikelompokkan dengan benar dalam klaster 1 & 2.
yaitu 4 'o dalam cluster 2. = (4 2)
TN = (7 2) + (10 2) + (4 2) = 72.
Maka FN adalah:
FN = (17 2) - (TP + FP) - TN = 136 - 40 -72 = 24. ---> (17 = jumlah total dokumen)
sumber
Ambil contoh pertanyaan lain:
Jawaban yang masuk akal untuk FN:
Penjelasan:
(c (8,2) -c (5,2) -c (2,2))
pilih 2 dari 8 untuk 'x' (a) kombinasi kelas yang sama dalam kluster yang sama (c (5,2) untuk klaster 1 dan c (2,2) untuk klaster 3),
(c (5,2) -c (4,2))
pilih 2 dari 5 'o' (b) minus kombinasi kelas yang sama dalam kelompok yang sama (c (4,2) untuk klaster 2)
(c (4,2) -c (3,2)
pilih 2 dari 4 untuk '◇' (c) minus kombinasi kelas yang sama dalam kelompok yang sama (c (3,2) untuk klaster 3)
Saya mendapatkannya seperti ini.
sumber
Saya memiliki implementasi ini dalam R yang akan saya jelaskan:
TP (a dalam kode) adalah jumlah dari setiap sel pilih 2. Sesuai pertanyaan awal (0 atau 1 pilih 2 sama dengan 0)
FN (b) adalah jumlah setiap baris pilih 2, semua dijumlahkan, kurang TP. Di mana setiap jumlah Row mewakili jumlah dokumen di setiap kelas True.
Jumlahnya adalah semua dokumen yang serupa dan di cluster yang sama (TP) ditambah semua dokumen yang serupa dan tidak berada di cluster yang sama (FN).
Jadi ini (TP + FN) - TP = FN
FP (c) dihitung dengan cara yang sama. Jumlah setiap kolom pilih 2, semuanya dijumlahkan, kurang TP. Dalam hal ini setiap jumlah kolom mewakili jumlah dokumen di setiap cluster.
Jadi jumlah dari semua ini adalah semua dokumen yang sama dan berada di cluster yang sama (TP) ditambah semua dokumen yang tidak sama dan berada di cluster yang sama (FP).
Jadi ini (TP + FP) - TP = FP
Dengan 3 perhitungan ini, sisa perhitungan TN lurus ke depan. Jumlah tabel pilih 2, lebih sedikit TP, FP & FN = TN (d)
Satu-satunya pertanyaan yang saya miliki dengan metode ini adalah definisi TP. Menggunakan terminologi dalam pertanyaan ini, saya tidak mengerti mengapa 2 a di cluster 3 dianggap TP. Saya telah menemukan ini di sini dan di buku teks terkait. Namun saya mengerti perhitungan mereka dengan asumsi bahwa perhitungan TP mereka benar.
Semoga ini membantu
sumber
Anda dapat menghitung TN dan FN dengan cara yang sama.
Alihkan peran label dan kluster .
... lalu lakukan perhitungan yang sama.
sumber
SAYA BERPIKIR Saya telah merekayasa balik false negative (FN) darinya. Untuk positif sejati, Anda membuat 4 grup yang positif. Di cluster 1, Anda memiliki lima a; di kluster 2, Anda memiliki 4 b; dalam klaster 3 Anda memiliki 3 c dan 2 a.
Jadi untuk negatif palsu.
Oleh karena itu, Anda memiliki (5 1) + (5 2) + (4 1) + (3 1) + (2 1) yang sama dengan 5 + 10 + 4 + 3 + 2 = 24. Dari situlah 24 berasal, kemudian kurangi saja dari 136 yang sudah Anda temukan untuk mendapatkan neg sebenarnya (TN).
sumber
Berikut ini cara menghitung setiap metrik untuk Rand Index tanpa mengurangi
Catatan tambahan untuk memudahkan pemahaman:
1) Rand Index didasarkan pada membandingkan pasangan elemen. Teori menunjukkan, bahwa pasangan elemen yang sama harus ditempatkan di cluster yang sama, sedangkan pasangan elemen yang berbeda harus ditempatkan dalam kelompok yang terpisah.
2) RI tidak peduli dengan perbedaan jumlah cluster. Itu hanya peduli tentang pasangan elemen Benar / Salah.
Berdasarkan asumsi ini, Rand Index, dihitung
Ok, mari selami contohnya di sini:
Dalam penyebut, kami memiliki total pasangan yang memungkinkan, yaitu
(17 2) = 136
Sekarang mari kita hitung setiap metrik untuk pemahaman yang lebih baik:
A) Mari kita mulai dengan a mudah , ( Benar Positif atau benar serupa )
Artinya, Anda harus menemukan semua pasangan elemen yang memungkinkan, di mana prediksi dan label sebenarnya ditempatkan bersama. Pada contoh grid, ini berarti mendapatkan jumlah pasangan yang memungkinkan dalam setiap sel.
C) Sekarang, mari kita lakukan c ( Positif Salah atau tidak sama berbeda )
Artinya, temukan semua pasangan, yang kita tempatkan bersama, tetapi yang seharusnya berada dalam kelompok berbeda. Pada contoh grid artinya, temukan semua pasangan yang memungkinkan antara 2 sel horizontal
D) Menghitung d ( False Negative atau salah serupa ) Artinya, temukan semua pasangan yang kami tempatkan di cluster yang berbeda, tetapi yang harus bersama. Pada contoh grid, temukan semua pasangan yang memungkinkan antara 2 sel vertikal
B) Dan, akhirnya mari kita lakukan b ( Benar Negatif atau benar berbeda )
Artinya, temukan semua pasangan yang kami tempatkan di kelompok berbeda, yang juga harus ada di kelompok berbeda. Pada grid, itu berarti menemukan semua pasangan yang memungkinkan antara 2 sel non-vertikal dan non-horizontal
Inilah angka yang harus dikalikan, untuk mendapatkan pemahaman yang lebih baik tentang apa yang saya maksud:
Dalam angka:
Dan pada akhirnya Rand Index sama:
(20 + 72) / 136 = 0.676
sumber
Di bawah ini adalah gambar yang menjelaskan pertanyaan Anda:
Untuk mengatasi masalah ini, Anda perlu mempertimbangkan matriks ini:
Inilah cara kami menghitung TP, FN, FP untuk Rand Index:
CATATAN: Dalam persamaan di atas, saya menggunakan segitiga untuk menunjukkan berlian pada gambar.
Misalnya, untuk False Negative, kita harus memilih dari kelas tetapi dalam kelompok yang berbeda. Jadi, kita bisa memilih
Akhirnya, kita akan memilikinya24 (= 5 + 10 + 4 + 2 + 3 ) menyatakan.
Hal yang sama untuk sisa persamaan.
Bagian tersulit adalah TN yang dapat dilakukan seperti gambar di bawah ini:
Ada beberapa jalur yang lebih pendek untuk menghitung Indeks Rand, tetapi ini adalah perhitungan secara mendalam dan langkah demi langkah. Akhirnya, Tabel kontingensi terlihat sebagai berikut:
sumber