Jak obliczyć precyzję, przypomnienie i F-miara dla niezrównoważonej klasyfikacji

Tweet Udostępnij Udostępnij

Ostatnia aktualizacja 2 sierpnia 2020 r.

dokładność klasyfikacji to całkowita liczba poprawnych prognoz podzielona przez całkowitą liczbę prognoz dokonanych dla zbioru danych.

jako miara wydajności, dokładność jest nieodpowiednia dla niezrównoważonych problemów z klasyfikacją.,

głównym powodem jest to, że przytłaczająca liczba przykładów z klasy większości (lub klas) będzie przytłaczać liczbę przykładów w klasie mniejszości, co oznacza, że nawet niezręczne modele mogą osiągnąć dokładność 90 procent lub 99 procent, w zależności od tego, jak poważna jest nierównowaga klasy.

alternatywą dla stosowania dokładności klasyfikacji jest stosowanie wskaźników precyzji i przywoływania.

w tym samouczku dowiesz się, jak obliczyć i rozwinąć intuicję precyzji i przypomnieć sobie klasyfikację niezrównoważoną.,

Po ukończeniu tego samouczka dowiesz się:

  • precyzja określa liczbę dodatnich prognoz klas, które faktycznie należą do klasy dodatniej.
  • Recall określa liczbę pozytywnych prognoz klas wykonanych ze wszystkich pozytywnych przykładów w zbiorze danych.
  • F-Measure zapewnia pojedynczy wynik, który równoważy zarówno obawy o precyzję, jak i przypomnienie w jednej liczbie.

Rozpocznij swój projekt od mojej nowej książki „klasyfikacja w Pythonie”, zawierającej Poradniki krok po kroku oraz pliki kodu źródłowego Pythona dla wszystkich przykładów.,

zaczynajmy.

  • aktualizacja styczeń/2020: Ulepszony język o celu precyzji i przypominania. Poprawiono literówki o tym, co precyzja i przypomnienie starają się zminimalizować (dzięki za komentarze!).
  • aktualizacja luty / 2020: Poprawiono literówkę w nazwie zmiennej dla przypomnienia i f1.

Jak obliczyć dokładność, przywołanie i F-miara dla niezrównoważonej klasyfikacji
fot. Waldemar Mączka, niektóre prawa zastrzeżone.,

przegląd samouczka

Ten samouczek jest podzielony na pięć części; są to:

  1. macierz zamieszania dla klasyfikacji niezrównoważonej
  2. precyzja dla klasyfikacji niezrównoważonej
  3. Przypomnienie dla klasyfikacji niezrównoważonej
  4. precyzja vs.Przypomnienie dla klasyfikacji niezrównoważonej
  5. F-miara dla klasyfikacji niezrównoważonej

macierz zamieszania dla klasyfikacji niezrównoważonej

zanim zagłębimy się w precyzję i przypomnienie sobie, ważne jest, aby przejrzeć macierz zamieszania.,

w przypadku problemów z niezrównoważoną klasyfikacją, Klasa większości jest zazwyczaj określana jako wynik negatywny( np. „brak zmiany” lub „wynik negatywny”), a klasa mniejszości jest zazwyczaj określana jako wynik pozytywny (np. „zmiana” lub „wynik pozytywny”).

macierz zamieszania zapewnia lepszy wgląd nie tylko w wydajność modelu predykcyjnego, ale także w to, które klasy są prawidłowo przewidywane, które nieprawidłowo i jakiego rodzaju błędy są popełniane.,

najprostsza macierz pomieszania dotyczy problemu klasyfikacji dwóch klas, z klasami ujemnymi (klasa 0) i dodatnimi (klasa 1).

w tego typu macierzy zamieszania każda komórka w tabeli ma określoną i dobrze zrozumiałą nazwę, podsumowaną w następujący sposób:

metryki precyzji i przypomnienia są zdefiniowane w kategoriach komórek w macierzy zamieszania, w szczególności terminów takich jak prawdziwe pozytywy i fałszywe negatywy.

teraz, gdy odświeżyliśmy matrycę zamieszania, przyjrzyjmy się bliżej metryce precyzji.,

Precision for Imbalanced Classification

Precision is a metric that quantifies the number of correct positive predictions made.

precyzja, dlatego oblicza dokładność dla klasy mniejszościowej.

oblicza się go jako stosunek prawidłowo przewidywanych pozytywnych przykładów podzielonych przez całkowitą liczbę przewidywanych pozytywnych przykładów.

precyzja ocenia ułamek poprawnych sklasyfikowanych instancji wśród tych sklasyfikowanych jako pozytywne …

— strona 52, Nauka z niezrównoważonych zestawów danych, 2018.,

precyzja dla klasyfikacji binarnej

w niezrównoważonym problemie klasyfikacji z dwiema klasami, precyzja jest obliczana jako liczba true positives podzielona przez całkowitą liczbę true positives i false positives.

  • Precision = TruePositives/(TruePositives + FalsePositives)

wynikiem jest wartość między 0.0 dla braku precyzji i 1.0 Dla pełnej lub doskonałej precyzji.

zróbmy to obliczenie konkretnymi przykładami.,

rozważmy zbiór danych o stosunku mniejszości do większości 1:100, ze 100 przykładami mniejszości i 10 000 przykładami klas większości.

model przewiduje i przewiduje 120 przykładów należących do klasy mniejszościowej, z których 90 jest poprawnych, a 30 niepoprawnych.

precyzja dla tego modelu jest obliczana jako:

  • Precision = TruePositives/(TruePositives + FalsePositives)
  • Precision = 90 / (90 + 30)
  • precyzja = 90/120
  • precyzja = 0.75

wynikiem jest dokładność 0.75, co jest rozsądną wartością, ale nie wybitną.,

widać, że precyzja to po prostu stosunek poprawnych prognoz dodatnich do wszystkich prognoz dodatnich, lub dokładność prognoz klasy mniejszościowej.

rozważmy ten sam zbiór danych, w którym model przewiduje 50 przykładów należących do klasy mniejszości, z których 45 to prawdziwe pozytywy, a pięć z nich to fałszywe pozytywy. Możemy obliczyć dokładność dla tego modelu w następujący sposób:

  • Precision = TruePositives / (TruePositives + FalsePositives)
  • Precision = 45 / (45 + 5)
  • precyzja = 45 / 50
  • precyzja = 0.,90

w tym przypadku, chociaż model przewidywał znacznie mniej przykładów jako należących do klasy mniejszościowej, stosunek poprawnych przykładów pozytywnych jest znacznie lepszy.

podkreśla to, że chociaż precyzja jest przydatna, nie opowiada całej historii. Nie komentuje, ile rzeczywistych pozytywnych przykładów klas przewidywano jako należących do klasy negatywnej, tzw. fałszywych negatywów.

chcesz zacząć od klasyfikacji nierównowagi?

weź mój darmowy 7-dniowy kurs e-mail crash course już teraz (z przykładowym kodem).,

Kliknij, aby się zapisać, a także otrzymać darmową wersję kursu w formacie PDF.

Pobierz swój darmowy Mini-kurs

precyzja do klasyfikacji Wieloklasowej

precyzja nie ogranicza się do problemów z klasyfikacją binarną.

w niezrównoważonym problemie klasyfikacji z więcej niż dwoma klasami, precyzja jest obliczana jako suma prawdziwych pozytywów we wszystkich klasach podzielona przez sumę prawdziwych pozytywów i fałszywych pozytywów we wszystkich klasach.,

  • Precision = Sum c in C TruePositives_c/Sum c in C (TruePositives_c + FalsePositives_c)

na przykład, możemy mieć niezrównoważony problem klasyfikacji wieloklasowej, gdzie Klasa większości jest klasą ujemną, ale istnieją dwie dodatnie klasy mniejszości: klasa 1 i klasa 2. Precyzja może kwantyfikować stosunek poprawnych prognoz w obu klasach dodatnich.,

rozważmy zbiór danych o stosunku mniejszości do większości 1:1: 100, czyli stosunku 1: 1 dla każdej klasy dodatniej i stosunku 1:100 dla klas mniejszości do klasy większości, a mamy 100 przykładów w każdej klasie mniejszości i 10 000 przykładów w klasie większości.

model przewiduje i przewiduje 70 przykładów dla pierwszej klasy mniejszościowej, gdzie 50 jest poprawnych, a 20 niepoprawnych. Przewiduje 150 dla drugiej klasy z 99 poprawnych i 51 błędnych., Precyzja może być obliczona dla tego modelu w następujący sposób:

widzimy, że obliczenia metryki precyzyjnej skalują się, gdy zwiększamy liczbę klas mniejszościowych.

Oblicz precyzję za pomocą Scikit-Learn

wynik precyzji można obliczyć za pomocą funkcji scikit-learn ().

na przykład, możemy użyć tej funkcji do obliczenia precyzji dla scenariuszy w poprzedniej sekcji.

Po pierwsze, przypadek, w którym istnieje od 100 pozytywnych do 10 000 negatywnych przykładów, a model przewiduje 90 prawdziwych pozytywów i 30 fałszywych pozytywów. Pełny przykład znajduje się poniżej.,

Running the example calculates the precision, matching our manual calculation.

1
Precision: 0.,750

następnie możemy użyć tej samej funkcji do obliczenia dokładności dla problemu multiclass z 1:1:100, z 100 przykładami w każdej klasie mniejszości i 10 000 w klasie większości. Model przewiduje 50 fałszywych alarmów i 20 fałszywych alarmów dla klasy 1 oraz 99 fałszywych alarmów i 51 fałszywych alarmów dla klasy 2.,

podczas używania funkcji precision_score () do klasyfikacji multiclass, ważne jest, aby określić klasy mniejszościowe za pomocą argumentu „labels” i wykonać Ustaw argument „average” na „micro”, aby upewnić się, że obliczenia są wykonywane zgodnie z oczekiwaniami.

Pełny przykład znajduje się poniżej.

ponownie, uruchomienie przykładu oblicza precyzję dla przykładu wieloklasowego pasującego do naszych obliczeń ręcznych.,

div>

1
dokładność: 0.,677

Recall for Imbalanced Classification

Recall is a metric that quantifs the number of correct positive predictions made out of all positive predictions that could have been made.

W przeciwieństwie do precyzji, która komentuje tylko poprawne prognozy pozytywne ze wszystkich prognoz pozytywnych, przypomnienie zapewnia wskazanie pominiętych prognoz pozytywnych.

w ten sposób recall dostarcza pewnego pojęcia o zasięgu klasy dodatniej.,

— Strona 27, Imbalanced Learning: Foundations, Algorithms, and Applications, 2013.

Recall dla klasyfikacji binarnej

w niezrównoważonym problemie klasyfikacji z dwiema klasami, recall jest obliczany jako liczba prawdziwych pozytywów podzielona przez całkowitą liczbę prawdziwych pozytywów i fałszywych negatywów.

  • Recall = TruePositives/(TruePositives + FalseNegatives)

wynik jest wartością z zakresu od 0.,0 dla braku przywołania i 1.0 Dla pełnego lub doskonałego przywołania.

zróbmy to obliczenie konkretnymi przykładami.

podobnie jak w poprzedniej sekcji, rozważmy zbiór danych o stosunku mniejszości do większości 1:100, ze 100 przykładami mniejszości i 10 000 przykładami klas większości.

model tworzy prognozy i przewiduje 90 pozytywnych prognoz klas poprawnie i 10 nieprawidłowo. Możemy obliczyć przypomnienie dla tego modelu w następujący sposób:

  • Recall = TruePositives / (TruePositives + FalseNegatives)
  • Recall = 90 / (90 + 10)
  • Recall = 90 / 100
  • Recall = 0.,9

Ten model ma dobrą pamięć.

Przypomnienie dla klasyfikacji Wieloklasowej

Przypomnienie nie ogranicza się do problemów z klasyfikacją binarną.

w niezrównoważonym problemie klasyfikacji z więcej niż dwoma klasami, Przypomnienie jest obliczane jako suma prawdziwych pozytywów we wszystkich klasach podzielona przez sumę prawdziwych pozytywów i fałszywych negatywów we wszystkich klasach.,

  • Recall = Sum c in C TruePositives_c / Sum c in C (TruePositives_c + FalseNegatives_c)

tak jak w poprzedniej sekcji, rozważmy zbiór danych o stosunku mniejszości do większości 1:1:100, który jest stosunkiem 1:1 dla każdej klasy dodatniej i stosunku 1:100 dla klas mniejszości do klasy większości, i mamy 100 przykładów w każdej klasie mniejszości, a 10 000 przykładów w klasie większościowej.

model przewiduje 77 przykładów poprawnie i 23 niepoprawnie dla klasy 1 oraz 95 poprawnie i 5 niepoprawnie dla klasy 2., Możemy obliczyć przypomnienie dla tego modelu w następujący sposób:

obliczyć Przypomnienie za pomocą Scikit-Learn

wynik przypomnienia można obliczyć za pomocą funkcji recall_score() scikit-learn.

na przykład, możemy użyć tej funkcji do obliczenia przypomnienia dla powyższych scenariuszy.

Po pierwsze, możemy rozważyć przypadek nierównowagi 1:100 z przykładami odpowiednio 100 i 10 000, a model przewiduje 90 prawdziwych pozytywów i 10 fałszywych negatywów.

Pełny przykład znajduje się poniżej.

uruchamiając przykład, możemy zobaczyć, że wynik pasuje do obliczeń ręcznych powyżej.,

div>

1
przypomnieć: 0.,900

możemy również użyć funkcji recall_score() w przypadku niezrównoważonych problemów z klasyfikacją wieloklasową.

w tym przypadku zbiór danych ma nierównowagę 1:1:100, z 100 w każdej klasie mniejszości i 10,000 w klasie większości. Model przewiduje 77 prawdziwych pozytywów i 23 fałszywych negatywów dla klasy 1 I 95 prawdziwych pozytywów i 5 fałszywych negatywów dla klasy 2.

Pełny przykład znajduje się poniżej.

ponownie, uruchomienie przykładu oblicza przypomnienie dla przykładu multiclass pasującego do naszych obliczeń ręcznych.,

1
Przypomnijmy: 0.860

na dokładności i, Recall for Imbalanced Classification

możesz zdecydować się na użycie precision lub recall na problem z klasyfikacją imbalanced.

maksymalizacja precyzji zminimalizuje liczbę fałszywych alarmów, podczas gdy maksymalizacja wycofywania zminimalizuje liczbę fałszywych alarmów.

  • precyzja: odpowiednia przy minimalizowaniu fałszywych alarmów jest ostrość.
  • Przypomnienie: właściwe przy minimalizowaniu fałszywych negatywów jest skupienie.

czasami chcemy doskonałych prognoz klasy dodatniej. Chcemy wysokiej precyzji i wysokiej pamięci.,

może to być trudne, ponieważ często wzrost pamięci często odbywa się kosztem zmniejszenia precyzji.

w niezrównoważonych zestawach danych celem jest poprawa pamięci bez szkody dla precyzji. Cele te są jednak często sprzeczne, ponieważ w celu zwiększenia TP dla klasy mniejszościowej często zwiększa się również liczba FP, co skutkuje zmniejszoną precyzją.

— strona 55, Imbalanced Learning: Foundations, Algorithms, and Applications, 2013.,

jednak zamiast wybierać jedną miarę lub drugą, możemy wybrać nową metrykę, która łączy zarówno precyzję, jak i przypomnienie w jeden wynik.

F-miara dla niezrównoważonej klasyfikacji

dokładność klasyfikacji jest szeroko stosowana, ponieważ jest to jedna miara używana do podsumowania wydajności modelu.

f-Measure umożliwia połączenie precyzji i przywołania w jedną miarę, która przechwytuje obie właściwości.

sam, ani precyzja, ani przypomnienie nie opowiadają całej historii., Możemy mieć doskonałą precyzję z okropnym przypomnieniem, lub na przemian straszną precyzję z doskonałym przypomnieniem. F-measure umożliwia wyrażenie obu obaw za pomocą jednego wyniku.

po obliczeniu dokładności i przypomnienia dla problemu klasyfikacji binarnej lub wieloklasowej, oba wyniki można połączyć w obliczenie F-miary.

tradycyjna miara F jest obliczana w następujący sposób:

  • F-Measure = (2 * Precision * Recall)/(Precision + Recall)

jest to średnia harmoniczna obu ułamków., Jest to czasami nazywane F-Score lub F1-Score i może być najczęstszą metryką używaną w niezrównoważonych problemach klasyfikacji.

… miara F1, która jednakowo obciąża precyzję i pamięć, jest wariantem najczęściej używanym podczas uczenia się na podstawie niezrównoważonych danych.

— Strona 27, Imbalanced Learning: Foundations, Algorithms, and Applications, 2013.

podobnie jak precyzja i przypomnienie, słaby wynik F-Measure wynosi 0.0, a najlepszy lub doskonały wynik F-Measure to 1.,0

na przykład, doskonały wynik precyzji i przypomnienia skutkowałby doskonałym wynikiem F-Measure:

  • F-Measure = (2 * Precision * Recall) / (Precision + Recall)
  • F-Measure = (2 * 1.0 * 1.0) / (1.0 + 1.0)
  • F-miara = (2 * 1.0) / 2.0
  • F-Measure = 1.0

zróbmy to obliczenie na przykładzie.

rozważmy binarny zbiór danych klasyfikacyjnych o stosunku mniejszości do większości 1:100, ze 100 przykładami mniejszości i 10 000 przykładami klas większości.,

rozważmy model przewidujący 150 przykładów dla klasy dodatniej, 95 jest poprawnych( true positives), co oznacza, że pięć zostało pominiętych (false negatives), a 55 jest niepoprawnych (false positives).

możemy obliczyć dokładność w następujący sposób:

  • Precision = TruePositives / (TruePositives + FalsePositives)
  • Precision = 95 / (95 + 55)
  • Precision = 0.633

możemy obliczyć przypomnienie w następujący sposób:

  • Recall = TruePositives / (TruePositives + FalseNegatives)
  • Recall = 95 / (95 + 5)
  • Recall = 0.,95

To pokazuje, że model ma słabą precyzję, ale doskonałą pamięć.

wreszcie możemy obliczyć F-miara w następujący sposób:

widzimy, że dobry poziom przywoływania zmniejsza słabą precyzję, dając dobry lub rozsądny wynik f-miary.

Oblicz F-Measure za pomocą Scikit-Learn

wynik f-measure można obliczyć za pomocą funkcji f1_score() scikit-learn.

na przykład używamy tej funkcji do obliczania miary F dla powyższego scenariusza.,

jest to przypadek nierównowagi 1:100 z przykładami odpowiednio 100 i 10 000, a model przewiduje 95 prawdziwych pozytywów, pięć fałszywych negatywów i 55 fałszywych pozytywów.

Pełny przykład znajduje się poniżej.

uruchomienie przykładu oblicza miarę F, dopasowując nasze obliczenia ręczne, w ramach drobnych błędów zaokrąglania.,

div>

1
f-środki: 0.,760

dalsze czytanie

Ta sekcja zawiera więcej zasobów na ten temat, jeśli chcesz zajrzeć głębiej.

tutoriale

  • Jak obliczyć precyzję, Przypomnienie, F1 i więcej dla modeli głębokiego uczenia
  • Jak używać krzywych ROC i krzywych Precision-Recall do klasyfikacji w Pythonie

referaty

  • systematyczna analiza miar wydajności dla zadań klasyfikacyjnych, 2009.

Książki

  • Imbalanced Learning: Foundations, Algorithms, and Applications, 2013.,

API

  • sklep.metryki.precision_score API.
  • sklep.metryki.recall_score API.
  • sklep.metryki.f1_score API.

Artykuły

  • macierz zamieszania, Wikipedia.
  • precyzja i przypomnienie, Wikipedia.
  • wynik F1, Wikipedia.

podsumowanie

w tym samouczku odkryłeś, jak obliczyć i rozwinąć intuicję precyzji i przypomnienia dla niezrównoważonej klasyfikacji.,

w szczególności nauczyłeś się:

  • precyzja określa liczbę dodatnich prognoz klas, które faktycznie należą do klasy dodatniej.
  • Recall określa liczbę pozytywnych prognoz klas wykonanych ze wszystkich pozytywnych przykładów w zbiorze danych.
  • F-Measure zapewnia pojedynczy wynik, który równoważy zarówno obawy o precyzję, jak i przypomnienie w jednej liczbie.

masz jakieś pytania?
Zadaj swoje pytania w komentarzach poniżej, a ja Dołożę wszelkich starań, aby odpowiedzieć.,

Pobierz instrukcję obsługi!

rozwijaj niezrównoważone modele uczenia się w kilka minut

…dzięki kilku linijkom kodu Pythona

Dowiedz się, jak w moim nowym ebooku:
Imbalanced Classification with Python

zapewnia samouczki i kompleksowe projekty na temat:
metryki wydajności, metody Podsamplingu, SMOTE, przesuwanie progu, Kalibracja prawdopodobieństwa, algorytmy wrażliwe na koszty
i wiele więcej…,

wprowadź niezrównoważone metody klasyfikacji do swoich projektów uczenia maszynowego

Zobacz, co jest w środku

Tweet Share Share

Share

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *