Jak obliczyć precyzję i przywołać w macierzy pomieszania 3 x 3

12
                  Predicted
                    class
               Cat  Dog Rabbit
  Actual class
           Cat   5    3      0
           Dog   2    3      1
        Rabbit   0    2     11

Jak obliczyć precyzję i przywołać, aby łatwo było obliczyć wynik F1. Normalna macierz pomieszania ma wymiar 2 x 2. Kiedy jednak staje się 3 x 3, nie wiem, jak obliczyć precyzję i przypomnieć sobie.

użytkownik22149
źródło

Odpowiedzi:

19

Jeśli przeliterujesz definicje precyzji (aka dodatnia wartość predykcyjna PPV) i przywołasz (aka wrażliwość), zobaczysz, że dotyczą one jednej klasy niezależnej od innych klas:

Przypomnienie lub wrażliwość to odsetek przypadków poprawnie zidentyfikowanych jako należących do klasy c wśród wszystkich przypadków, które naprawdę należą do klasy c .
(Biorąc pod uwagę, że mamy przypadek należący do „ c ”, jakie jest prawdopodobieństwo prawidłowego przewidzenia tego?)

Precyzja lub dodatnia wartość predykcyjna PPV to odsetek przypadków poprawnie zidentyfikowanych jako należących do klasy c, spośród wszystkich przypadków, w których klasyfikator twierdzi, że należą do klasy c .
Innymi słowy, z tych przypadków, które według przewidywań należą do klasy c , która część naprawdę należy do klasy c ? (Biorąc pod uwagę predykcję „ c ”, jakie jest prawdopodobieństwo, że będzie poprawna?)

ujemna wartość predykcyjna NPV tych przypadków, które według przewidywań nie będą należeć do klasy c , która frakcja naprawdę nie należy do klasy c ? (Biorąc pod uwagę predykcję „nie c ”, jakie jest prawdopodobieństwo, że będzie poprawny?)

Możesz więc obliczyć precyzję i przywołanie dla każdej ze swoich klas. W przypadku tablic pomyłek o wielu klasach są to ukośne elementy podzielone odpowiednio przez ich sumy wierszy i kolumn:

schemat obliczeniowy

Źródło: Beleites, C .; Salzer, R. & Sergo, V. Sprawdzanie poprawności miękkich modeli klasyfikacji przy użyciu częściowych przynależności do klas: Rozszerzona koncepcja wrażliwości i współpracy. stosowane do klasyfikacji tkanek gwiaździaków, Chemom Intell Lab Syst, 122, 12 - 22 (2013). DOI: 10.1016 / j.chemolab.2012.12.003

cbeleites niezadowoleni z SX
źródło
Dzięki wielkie. Rozumiem już analogię opisaną w twoim rozwiązaniu. Przeczytam artykuł. Zaakceptuję to jako odpowiedź. Nie rozumiem PPV i NPV. Proszę wyjaśnić tę koncepcję jako grafikę, ponieważ wyjaśniono Sens i Spec i zaakceptuję twoją odpowiedź.
user22149,
3

Ograniczając dane do wymuszonych wyborów (klasyfikacji) i nie rejestrując, czy były to „bliskie połączenia”, uzyskujesz szacunkowe dane statystyczne o minimalnej precyzji i minimalnej dokładności, oprócz potajemnego zakładania dziwnej funkcji użyteczności / straty / kosztu i stosowania arbitralnych progów . O wiele lepiej byłoby wykorzystać maksymalną informację, która obejmowałaby prawdopodobieństwo członkostwa w klasie i nie wymuszone wybory.

Frank Harrell
źródło
1

Najłatwiej jest w ogóle nie używać confusion_matrix, użyj klasyfikacji_report (), da ci wszystko, czego kiedykolwiek potrzebujesz, na zdrowie ...

Edycja:
jest to format confusion_matrix ():
[[TP, FN]
[FP, TN]]
I raport klasyfikacyjny daje to wszystko

Omkaar.K
źródło
Że jeśli używasz Pythona ///
Omkaar.K
0

Jeśli chcesz po prostu uzyskać wynik, radzę nie myśleć za dużo i korzystać z narzędzi, którymi dysponujesz. Oto jak możesz to zrobić w Pythonie;

import pandas as pd
from sklearn.metrics import classification_report

results = pd.DataFrame(
    [[1, 1],
     [1, 2],
     [1, 3],
     [2, 1],
     [2, 2],
     [2, 3],
     [3, 1],
     [3, 2],
     [3, 3]], columns=['Expected', 'Predicted'])

print(results)
print()
print(classification_report(results['Expected'], results['Predicted']))

Aby uzyskać następujące dane wyjściowe

   Expected  Predicted
0         1          1
1         1          2
2         1          3
3         2          1
4         2          2
5         2          3
6         3          1
7         3          2
8         3          3

             precision    recall  f1-score   support

          1       0.33      0.33      0.33         3
          2       0.33      0.33      0.33         3
          3       0.33      0.33      0.33         3

avg / total       0.33      0.33      0.33         9
Steztric
źródło
0

Poniżej znajduje się przykład wieloklasowej macierzy pomieszania, zakładającej, że nasze etykiety klas to A, B i C.

A / P A B C Suma
A 10 3 4 17
B 2 12 6 20
C 6 3 9 18

Suma 18 18 19 55

Teraz obliczamy trzy wartości Precyzji i Przywołaj każdą z nich i nazywamy je Pa, Pb i Pc; i podobnie Ra, Rb, Rc.

Wiemy, że Precyzja = TP / (TP + FP), więc dla Pa prawdziwie dodatnia będzie Rzeczywista A przewidywana jako A, tj. 10, pozostałe dwie komórki w tej kolumnie, niezależnie od tego, czy jest to B, czy C, czynią False Positive. Więc

Pa = 10/18 = 0,55 Ra = 10/17 = 0,59

Teraz precyzja i przywołanie dla klasy B to Pb i Rb. W przypadku klasy B prawdziwie dodatni to faktyczny B przewidziany jako B, czyli komórka zawierająca wartość 12, a reszta dwóch komórek w tej kolumnie daje wynik fałszywie dodatni, więc

Pb = 12/18 = 0,67 Rb = 12/20 = 0,6

Podobnie Pc = 9/19 = 0,47 Rc = 9/18 = 0,5

Ogólna wydajność klasyfikatora zostanie określona na podstawie średniej precyzji i średniego przywołania. W tym celu mnożymy wartość precyzji dla każdej klasy przez rzeczywistą liczbę instancji dla tej klasy, a następnie dodajemy je i dzielimy przez całkowitą liczbę instancji. Lubić ,

Śr. Precyzja = (0,55 * 17 + 0,67 * 20 + 0,47 * 18) / 55 = 31,21 / 55 = 0,57 Śr. Wycofanie = (0,59 * 17 + 0,6 * 20 + 0,5 * 18) / 55 = 31,03 / 55 = 0,56

Mam nadzieję, że to pomoże

Nayyer Masood
źródło