Jak obliczasz precyzję i przywołujesz klasyfikację wieloklasową za pomocą macierzy pomyłek?


92

Zastanawiam się, jak obliczyć precyzję i przywołać za pomocą macierzy nieporozumień dla problemu klasyfikacji wielu klas. W szczególności obserwację można przypisać tylko do najbardziej prawdopodobnej klasy / etykiety. Chciałbym obliczyć:

  • Precyzja = TP / (TP + FP)
  • Recall = TP / (TP + FN)

dla każdej klasy, a następnie obliczyć mikro-uśrednioną miarę F.


Ten docx , Ocena modelu klasyfikacji - Co mówi mi precyzja i przywołanie? , z Compumine zapewnia proste wprowadzenie do macierzy zamieszania i wynikających z niej miar. Pomaga stworzyć macierz nieporozumień, precyzję, przywołanie, specyficzność i dokładność.
Jayran Choopan

4
znajdź odpowiedź tutaj. Bardzo dobre wyjaśnienie youtube.com/watch?v=FAr2GmWNbT0

Łącze Compumine nie działa.
Trenton,

W przypadku przypadku wieloklasowego rozumiem, że wzdłuż wierszy (oś = 0) znajduje się odwołanie, a wzdłuż kolumn (oś = 1) dokładność. rxnlp.com/…
MD ZIA ULLAH

Odpowiedzi:


69

W przypadku 2 hipotez macierz dezorientacji jest zwykle:

       | Declare H1  |  Declare H0 |
|Is H1 |    TP       |   FN        |
|Is H0 |    FP       |   TN        |

gdzie użyłem czegoś podobnego do twojej notacji:

  • TP = prawdziwie dodatni (zadeklaruj H1, gdy tak naprawdę H1),
  • FN = fałszywie ujemny (zadeklaruj H0, gdy tak naprawdę H1),
  • FP = fałszywie dodatni
  • TN = prawdziwie ujemny

Na podstawie nieprzetworzonych danych, wartości w tabeli będą zazwyczaj liczbami dla każdego wystąpienia w stosunku do danych testowych. Na tej podstawie powinieneś być w stanie obliczyć potrzebne ilości.

Edytować

Uogólnieniem na problemy wielu klas jest sumowanie ponad wierszami / kolumnami macierzy pomieszania. Biorąc pod uwagę, że macierz jest zorientowana jak powyżej, tj. Że dany wiersz macierzy odpowiada określonej wartości „prawdy”, mamy:

Precision i=MiijMji

Recall i=MiijMij

iiii


1
W moim przypadku jest ponad 10 klas, więc myślę, że FN będzie oznaczać całkowitą liczbę deklarowanych klas H (i), i! = 1; i to samo jest FP?
daiyue

Cześć, zastanawiam się, jakie będą wartości dla Precyzji i Wywołania, jeśli TP + FP = 0, a TP + FN = 0 dla niektórych rzeczywistych klas w macierzy pomieszania.
daiyue

Precyzja dla klasy ijest niezdefiniowana, jeśli nie ma instancji, w których algorytm deklaruje i. Przywołanie dla klasy ijest niezdefiniowane, jeśli zestaw testowy nie zawiera klasy i.
Dave

Moim ostatecznym celem jest obliczenie miary F makro, więc potrzebuję precyzji i przywołania wartości dla każdej klasy i; więc jak mogę obliczyć miarę Makro-F, jeśli powyższe dwa przypadki występują w niektórych klasach i? W szczególności, jaka jest wartość Fi i czy klasa i liczy się jako jedna z klas M, że liczba elementów w M będzie liczona jako mianownik wzoru do obliczania miary Makro F.
daiyue

1
sry, czy mógłbyś wyjaśnić swój pomysł jaśniej?
daiyue

31

Dobry dokument podsumowujący, patrząc na te wskaźniki problemów wielu klas:

  • Sokolova, M., i Lapalme, G. (2009). Systematyczna analiza miar wydajności dla zadań klasyfikacyjnych. Przetwarzanie i zarządzanie informacjami, 45 , s. 1 427–437. ( pdf )

Streszczenie brzmi:

W tym artykule przedstawiono systematyczną analizę dwudziestu czterech miar wydajności wykorzystywanych w pełnym spektrum zadań klasyfikacyjnych uczenia maszynowego, tj. Binarnych, wielu klasowych, wieloznakowych i hierarchicznych. Dla każdego zadania klasyfikacyjnego badanie wiąże zestaw zmian w macierzy pomieszania z konkretnymi cechami danych. Następnie analiza koncentruje się na rodzaju zmian w macierzy pomieszania, które nie zmieniają miary, dlatego zachowaj ocenę klasyfikatora (niezmienność miary). Wynikiem jest taksonomia niezmienności miary w odniesieniu do wszystkich istotnych zmian rozkładu etykiet w problemach z klasyfikacją. Ta formalna analiza jest poparta przykładami zastosowań, w których właściwości niezmienniczości miar prowadzą do bardziej wiarygodnej oceny klasyfikatorów.


2
Witamy na stronie @JamesTaylor. Czy mógłbyś podać podsumowanie informacji w powiązanym dokumencie, aby pomóc czytelnikom zdecydować, czy jest to, czego potrzebują i na wypadek, gdyby link zniknął?
gung

8

Używanie sklearn i numpy:

from sklearn.metrics import confusion_matrix
import numpy as np

labels = ...
predictions = ...

cm = confusion_matrix(labels, predictions)
recall = np.diag(cm) / np.sum(cm, axis = 1)
precision = np.diag(cm) / np.sum(cm, axis = 0)

Aby uzyskać ogólne miary precyzji i wycofania, użyj

np.mean(recall)
np.mean(precision)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.