Jakie są prawidłowe wartości precyzji i przywołania, gdy mianownik równa się 0?

16

Precyzja jest zdefiniowana jako:

p = prawdziwe pozytywy / (prawdziwe pozytywy + fałszywe pozytywy)

Jaka jest wartość precyzji, jeśli (pozytywne pozytywy + fałszywe pozytywy) = 0? Czy to po prostu niezdefiniowane?

To samo pytanie do przypomnienia:

r = prawdziwe pozytywy / (prawdziwe pozytywy + fałszywe negatywy)

W takim przypadku jaka jest wartość odwołania, jeśli (prawdziwie pozytywne + fałszywe negatywne) = 0?

PS To pytanie jest bardzo podobne do pytania Jakie są prawidłowe wartości precyzji i przywołania w przypadkach skrajnych? .

Raffi Khatchadourian
źródło
1
Heh, jest nawet odpowiedź w duplikacie; ale nazwijmy to dobrym duplikatem.

Odpowiedzi:

9

Tutaj również obowiązują odpowiedzi na połączone wcześniej pytanie.

Jeśli (prawdziwie pozytywne + fałszywe negatywne) = 0, to nie ma pozytywnych przypadków w danych wejściowych, więc każda analiza tego przypadku nie zawiera żadnych informacji, a więc nie ma wniosków na temat tego, jak obsługiwane są przypadki pozytywne. Chcesz N / A lub coś podobnego jako wynik stosunku, unikając dzielenia przez błąd zero

Jeśli (true dodatnie + false dodatnie) = 0, wówczas wszystkie przypadki zostały uznane za ujemne: jest to jeden koniec krzywej ROC. Ponownie, chcesz rozpoznać i zgłosić tę możliwość, unikając podziału przez błąd zerowy .

Henz
źródło
Dzięki Henry za odpowiedź. Jeśli dobrze rozumiem, w pierwszym przypadku nie chcesz rozpoznać i zgłosić wyniku, podczas gdy w drugim przypadku tak . Czy to jest poprawne?
Raffi Khatchadourian
Tak: W przypadku braku pozytywnych danych wejściowych precyzja nie ma znaczenia; w przypadku nieprzewidzianym pozytywnie chcesz zgłosić, że test został ustawiony jako bardzo negatywny.
Henry
5

Ciekawa odpowiedź jest dostępna tutaj: https://github.com/dice-group/gerbil/wiki/Precision,-Recall-and-F1-measure

Autorzy wyjściowych moduł różnymi wynikami dla precyzji i przywołanie w zależności od tego, czy prawdziwie dodatnich, fałszywie dodatnich i fałszywie ujemne są wszystkie 0. Jeśli są, wynik jest pozornie jeden dobry.

W niektórych rzadkich przypadkach obliczenie Precyzji lub Przywołania może spowodować dzielenie przez 0. Jeśli chodzi o precyzję, może się to zdarzyć, jeśli w odpowiedzi adnotatora nie ma wyników, a zatem zarówno prawdziwe, jak i fałszywe pozytywy wynoszą 0 Dla tych szczególnych przypadków ustaliliśmy, że jeśli wszystkie wartości prawdziwie dodatnie, fałszywie dodatnie i fałszywie ujemne są równe 0, precyzja, przywołanie i miara F1 wynoszą 1. Może się to zdarzyć w przypadkach, w których złoty standard zawiera dokument bez żadnych adnotacje, a adnotator (poprawnie) nie zwraca adnotacji. Jeśli prawdziwe pozytywy są równe 0, a jeden z dwóch innych liczników jest większy niż 0, precyzja, przywołanie i miara F1 wynoszą 0.

Nie jestem pewien, czy ten typ punktacji byłby przydatny w innych sytuacjach poza ich specjalnym przypadkiem, ale warto się nad tym zastanowić.

shiri
źródło
1

Podczas oceny klasyfikatora przy wysokich progach precyzja może (często faktycznie) nie wynosić 1, gdy przywołanie wynosi 0. Zwykle nie dotyczy! Myślę, że coś jest nie tak z tym, jak ludzie kreślą krzywą P / R. Unikanie próbek N / A jest stronnicze w tym sensie, że unikasz próbek osobliwości. Obliczyłem średnią precyzję wrt do średniego przywołania ignorując próbki N / A i nigdy nie dostałem klasyfikatora rozpoczynającego się od 1 dla przywołania 0 dla płytkiej sieci neuronowej w wykrywaniu obiektów. Dotyczyło to również krzywych obliczonych za pomocą liczb tp, fp, fn. Łatwo jest to zweryfikować za pomocą papieru i ołówka za pomocą jednego obrazu. Na przykład: Mam klasyfikator, który wyprowadza pojedynczy obraz: preds = [.7 .6 .5 .1 .05] true = [nynny] Obliczając macierze zamieszania z różnymi progami, mamy: tp = [2 1 1 1 0 0], fn = [0 1 1 1 2 2], fp = [3 3 2 1 1 0]. recall rec = [1,5. 0,5. 0 0], a precyzja = [. 4,25 1/3 .5 0 NaN]. Nie rozumiem, jak sensowne byłoby zastąpienie NaN lub precyzji (@ recall == 0) wartością 1. 1 powinna być górną granicą, a nie wartością, którą zastępujemy precyzję (@ recall == 0).

Jonathan Blanchette
źródło