Próbuję wymyślić, jak obliczyć Indeks Rand algorytmu klastra, ale utknąłem w punkcie, w jaki sposób obliczyć prawdziwe i fałszywe negatywy.
W tej chwili korzystam z przykładu z książki An Introduction to Information Retrieval (Manning, Raghavan & Schütze, 2009). Na stronie 359 mówią o tym, jak obliczyć indeks Rand. W tym przykładzie używają trzech klastrów, a klastry zawierają następujące obiekty.
- aaaaab
- abbbbc
- aaccc
Zamieniam przedmiot (oryginalne znaki na litery, ale idea i liczba pozostają takie same). Podam dokładne słowa z książki, aby zobaczyć, o czym mówią:
Najpierw obliczamy TP + FP. Trzy klastry zawierają odpowiednio 6, 6 i 5 punktów, więc łączna liczba „pozytywów” lub par dokumentów znajdujących się w tym samym klastrze wynosi:
TP + FP = + + = 15 + 15+ 10 = 40
Spośród nich pary w grupie 1, pary b w grupie 2, pary c w grupie 3 i para w grupie 3 są prawdziwie pozytywne:
TP = + + + = 10 + 6 + 3 + 1 = 20
Zatem FP = 40-20 = 20.
Do tego czasu obliczenia są jasne, a jeśli wezmę inne przykłady, otrzymam te same wyniki, ale kiedy chcę obliczyć fałszywie ujemny i prawdziwie negatywny Manning i in. podać następujące informacje:
FN i TN są obliczane podobnie, co daje następującą tabelę zdarzeń:
Tabela awaryjna wygląda następująco:
+--------+--------+
| TP: 20 | FN: 24 |
+--------+--------+
| FP: 20 | TN: 72 |
+--------+--------+
Zdanie: „FN i TN są obliczane podobnie” nie jest dla mnie jasne i nie rozumiem, które liczby potrzebuję do obliczenia TN i FN. Mogę obliczyć prawą stronę tabeli, wykonując następujące czynności:
TP + FP + FN + TN = = = 136
Źródło: http://en.wikipedia.org/wiki/Rand_index
Zatem FN + TN = 136 - TP + FP = 136 - 40 = 96, ale tak naprawdę nie pomaga mi to w samodzielnym obliczeniu sposobu obliczania zmiennych. Zwłaszcza gdy autorzy mówią: „FN i TN są obliczane podobnie”. Nie rozumiem jak. Również gdy patrzę na inne przykłady, obliczają każdą komórkę tabeli awaryjnej, patrząc na każdą parę.
Na przykład: http://www.otlet-institute.org/wikics/Clustering_Problems.html#toc-Subsection-4.1
Moje pierwsze pytanie, oparte na przykładzie Manninga i in. (2009), czy można obliczyć TN i FN, jeśli znasz tylko TP i NP? A jeśli tak, to jak wygląda podobne obliczenie na podstawie podanego przykładu?
źródło
Po przestudiowaniu innych odpowiedzi w tym wątku, oto moja implementacja Python, która przyjmuje tablice jako dane wejściowe,
sklearn
-style:źródło
Sam nie jestem do końca pewien, ale tak zrobiłem wartość
TN : TN = (7 2) (10 2) (4 2)
(7 2) - Klaster 1 - test mówi „x”, więc policz te, które NIE są x (i są poprawnie połączone w klastry 2 i 3)
tj. 4 'o + 3' d (diamenty) = (7 2)
(10 2) - Klastra 2, policz te, które NIE są „o” i poprawnie zgrupowane w klastrach 1 i 3,
tj. 5 'x' + (2'x '+ 3'd') = (10 2)
(4 2) - Klaster 3, policz te, które NIE są „x” i NIE „d” (element w kształcie rombu), które są poprawnie zgrupowane w klastrze 1 i 2.
tj. 4 'o w klastrze 2. = (4 2)
TN = (7 2) + (10 2) + (4 2) = 72.
Zatem FN to:
FN = (17 2) - (TP + FP) - TN = 136 - 40-72 = 24. ---> (17 = całkowita liczba dokumentów)
źródło
Biorąc przykład z innego pytania:
Rozsądna odpowiedź dla FN:
Wyjaśnienie:
(c (8,2) -c (5,2) -c (2,2))
wybierz 2 z 8 dla „x” (a) kombinację tej samej klasy w tych samych klastrach (c (5,2) dla klastra 1 i c (2,2) dla klastra 3),
(c (5,2) -c (4,2))
wybierz 2 z 5 'o' (b) minus kombinacja tej samej klasy w tych samych klastrach (c (4,2) dla klastra 2)
(c (4,2) -c (3,2)
wybierz 2 z 4 dla „◇” (c) minus kombinacja tej samej klasy w tych samych klastrach (c (3,2) dla klastra 3)
Wyprowadziłem to w ten sposób.
źródło
Mam implementację tego w języku R, który wyjaśnię:
TP (a w kodzie) to suma każdej wybranej komórki 2. 2. Zgodnie z pierwotnym pytaniem (0 lub 1 wybierz 2 równe 0)
FN (b) to suma każdego wiersza, wybierz 2, wszystkie zsumowane, pomniejszone o TP. Gdzie każda suma wiersza reprezentuje liczbę dokumentów w każdej klasie True.
Suma tego to wszystkie dokumenty, które są podobne i znajdują się w tym samym klastrze (TP) oraz wszystkie dokumenty, które są podobne i nie znajdują się w tym samym klastrze (FN).
To jest (TP + FN) - TP = FN
FP (c) oblicza się podobnie. Suma każdej kolumny wybiera 2, wszystkie zsumowane, minus TP. W tym przypadku każda suma kolumn reprezentuje liczbę dokumentów w każdym klastrze.
Tak więc sumą tego są wszystkie dokumenty, które są podobne i znajdują się w tym samym klastrze (TP) plus wszystkie dokumenty, które nie są podobne i znajdują się w tym samym klastrze (FP).
To jest (TP + FP) - TP = FP
Po obliczeniu tych 3 pozostałych obliczeń TN jest proste. Suma tabeli wybiera 2, mniej TP, FP i FN = TN (d)
Jedyne zapytanie, jakie mam przy użyciu tej metody, to definicja TP. Używając terminologii w tym pytaniu, nie rozumiem, dlaczego 2a w klastrze 3 są uważane za TP. Znalazłem to zarówno tutaj, jak i w powiązanym podręczniku. Jednak rozumiem ich obliczenia przy założeniu, że ich obliczenia TP są prawidłowe.
Mam nadzieję że to pomoże
źródło
Możesz obliczyć TN i FN w ten sam sposób.
Po prostu zmień role etykiet i klastrów .
... następnie wykonaj te same obliczenia.
źródło
MYŚLĘ, że stworzyłem z niego fałszywie negatywny (FN). Dla prawdziwych pozytywów stworzyłeś 4 grupy, które były pozytywne. W grupie 1 miałeś pięć a; w grupie 2 miałeś 4 b; w grupie 3 miałeś 3 c ORAZ 2 a.
Tak dla fałszywie negatywnego.
Dlatego masz (5 1) + (5 2) + (4 1) + (3 1) + (2 1), co równa się 5 + 10 + 4 + 3 + 2 = 24. Stąd pochodzi 24, a następnie po prostu odejmij to od 136, które już znalazłeś, aby uzyskać prawdziwy neg (TN).
źródło
Oto jak obliczyć każdą metrykę dla indeksu Rand bez odejmowania
Dodatkowe informacje dla łatwiejszego zrozumienia:
1) Indeks Rand opiera się na porównaniu par elementów. Teoria sugeruje, że podobne pary elementów powinny być umieszczone w tym samym klastrze, natomiast różne pary elementów powinny być umieszczone w osobnych klastrach.
2) RI nie dba o różnicę w liczbie klastrów. Troszczy się tylko o prawdziwe / fałszywe pary elementów.
Na podstawie tego założenia obliczany jest Indeks Rand
Ok, zanurzmy się tutaj jest nasz przykład:
W mianowniku mamy całkowitą liczbę możliwych par, czyli
(17 2) = 136
Teraz obliczmy każdą metrykę dla lepszego zrozumienia:
A) Zacznijmy od łatwego a ( Prawdziwe pozytywne lub popraw podobne )
Oznacza to, że musisz znaleźć wszystkie możliwe pary elementów, w których predykcja i prawdziwa etykieta zostały umieszczone razem. Na przykładzie siatki oznacza uzyskanie sumy możliwych par w każdej komórce.
C) Teraz zróbmy c ( Fałszywe pozytywy lub niepoprawne odmienne )
Oznacza to, znajdź wszystkie pary, które umieściliśmy razem, ale które powinny znajdować się w różnych grupach. Na przykładzie siatki oznacza to znalezienie wszystkich możliwych par między dowolnymi 2 poziomymi komórkami
D) Obliczanie d ( False Negative lub niepoprawne podobne ) Oznacza to, znajdź wszystkie pary, które umieściliśmy w różnych grupach, ale które powinny być razem. Na przykładzie siatki znajdź wszystkie możliwe pary między dowolnymi 2 komórkami pionowymi
B) I wreszcie zróbmy b ( True Negative lub popraw niepodobne )
Oznacza to, znajdź wszystkie pary, które umieściliśmy w różnych klastrach, które również powinny znajdować się w różnych klastrach. Na siatce oznacza to znalezienie wszystkich możliwych par między dowolnymi 2 niepionowymi i nie poziomymi komórkami
Oto, które liczby należy pomnożyć, aby lepiej zrozumieć, co miałem na myśli:
W liczbach:
I na koniec Rand Index jest równy:
(20 + 72) / 136 = 0.676
źródło
Poniżej znajduje się zdjęcie, które opisuje twoje pytanie:
Aby rozwiązać ten problem, musisz wziąć pod uwagę tę macierz:
W ten sposób obliczamy TP, FN, FP dla indeksu Rand:
UWAGA: W powyższych równaniach użyłem trójkąta, aby pokazać diament na zdjęciu.
Na przykład dla False Negative powinniśmy wybierać z klasy, ale w różnych klastrach. Więc możemy wybrać
To samo dotyczy pozostałych równań.
Najtrudniejszą częścią jest TN, którą można wykonać jak na poniższym obrazku:
Istnieje kilka krótszych ścieżek do obliczania Indeksu Rand, ale jest to obliczenie głębokie i krok po kroku. Wreszcie tabela kontyngentów wygląda następująco:
źródło