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.
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:
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.
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ć ,
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.
źródło
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
źródło
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;
Aby uzyskać następujące dane wyjściowe
źródło
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
źródło