ML Atlas

04 · Ocena · 4 min czytania · Interaktywne · aktualizacja

Co to jest F1 score i dlaczego to średnia harmoniczna precyzji i recall?

W skrócie

F1 to średnia harmoniczna precyzji i recall. Jest wysoka tylko wtedy, gdy obie są wysokie, więc karze modele, które poświęcają jedną dla drugiej.

Co to jest

Miara F1 (F1 score, F-measure) to pojedyncza liczba łącząca precyzję P i recall R w średnią harmoniczną: F1 = 2 · P · R / (P + R). Równoważnie F1 = 2·TP / (2·TP + FP + FN). Przyjmuje wartości od 0 do 1 i jest równa 1 tylko wtedy, gdy model nie popełnia ani fałszywych alarmów, ani przeoczeń.

Intuicja: F1 to „ocena za najsłabsze ogniwo, ale nie całkiem”. Średnia harmoniczna leży zawsze bliżej mniejszej z dwóch liczb. Model z precyzją 100% i recall 10% ma średnią arytmetyczną 55%, która brzmi przyzwoicie, ale F1 równe zaledwie 18%, co lepiej oddaje, że wykrywa tylko co dziesiąty przypadek.

F1 jest popularne tam, gdzie klasa pozytywna jest rzadka i trafność nic nie mówi: w wykrywaniu oszustw, wyszukiwaniu informacji, rozpoznawaniu nazw własnych w tekście, klasyfikacji medycznej.

Mechanizm — dlaczego tak działa

Dlaczego średnia harmoniczna? Precyzja i recall mają ten sam licznik (TP), a różne mianowniki: liczbę alarmów i liczbę prawdziwych pozytywów. Średnia harmoniczna to odwrotność średniej z odwrotności: 1/F1 = ½ · (1/P + 1/R). Odwrotność precyzji to „ile alarmów przypada na jedno trafienie”, odwrotność recall — „ile prawdziwych przypadków przypada na jedno wykrycie”. Uśredniamy więc koszty, a nie zyski, i każdy z nich, gdy jest duży, ciągnie wynik w dół. Gdy P lub R dąży do zera, F1 też dąży do zera — średnia arytmetyczna nie miałaby tej własności.

Uogólnieniem jest F-beta: Fβ = (1 + β²) · P · R / (β² · P + R). Parametr β mówi, ile razy bardziej cenimy recall od precyzji: F2 przesuwa wagę ku recall (przydatne w diagnostyce), F0,5 ku precyzji. F1 zakłada, że oba rodzaje błędów są tak samo kosztowne — co rzadko jest prawdą i jest najsłabszym punktem tej miary.

F1, podobnie jak precyzja, ignoruje prawdziwe negatywy (TN nie występuje we wzorze). To zaleta, gdy negatywów jest morze i nie chcemy, by zawyżały wynik. To wada, gdy negatywy też są ważne, i gdy porównujemy zbiory o różnych częstościach klas — F1 zmienia się razem z częstością, nawet jeśli model jest ten sam. Zmienia się też, gdy zamienimy, która klasa jest „pozytywna”. Alternatywy uwzględniające całą macierz to zbalansowana trafność i współczynnik korelacji Matthewsa (MCC).

F1 zależy od progu decyzyjnego. Ten sam model może mieć wyraźnie różne F1 przy domyślnym progu 0,5 i przy progu dobranym do danych — zwłaszcza gdy klasa pozytywna jest rzadka — więc porównując modele po F1, warto dla każdego dobrać próg na walidacji albo użyć miary niezależnej od progu, jak pole pod krzywą precyzja–recall.

Na przykładzie

Regresja logistyczna ze standaryzacją na zbiorze Breast Cancer Wisconsin (pozytyw = guz złośliwy; 143 przykłady testowe, w tym 53 złośliwe; podział warstwowy, random_state=0). Przy progu 0,5: precyzja 1,0, recall 0,962, F1 = 0,981. Przy progu 0,1 recall rośnie do 1,0, ale precyzja spada do 0,828 i F1 maleje do 0,906. F2, które bardziej ceni recall, ocenia próg 0,5 na 0,970, a F0,5 na 0,992 — różne wagi, różne werdykty.

Dla kontrastu „model” oznaczający każdy guz jako złośliwy ma recall 1,0, precyzję 0,371 (tyle wynosi udział złośliwych w teście) i F1 = 0,541. Jego trafność to zaledwie 37,1%, a model mówiący zawsze „łagodny” miałby trafność 62,9% i F1 równe zero. F1 poprawnie zauważa, że żaden z nich nie jest użyteczny, ale pokazuje też swoją słabość: wartość 0,54 dla modelu trywialnego zależy wyłącznie od częstości klasy, więc samo F1 bez punktu odniesienia niewiele mówi.

Ta ilustracja działa w przeglądarce z włączonym JavaScriptem: regresja logistyczna na biopsjach raka piersi: suwak progu zmienia macierz pomyłek, precision, recall i punkt na krzywej ROC.

Dane: Breast Cancer Wisconsin (diagnostyka raka piersi)

W praktyce

  • f1_score(y_true, y_pred), fbeta_score(y_true, y_pred, beta=2); w cross_val_score użyj scoring='f1'.
  • Dla wielu klas wybierz uśrednianie: average='macro' (każda klasa tak samo ważna), 'weighted' (według liczności) lub 'micro' (globalnie; dla zadań jednoetykietowych równe trafności).
  • Próg maksymalizujący F1 znajdziesz z precision_recall_curve na zbiorze walidacyjnym; nie dobieraj go na teście.
  • Zawsze podawaj też F1 modelu trywialnego (wszystko pozytywne): 2p / (1 + p), gdzie p to częstość klasy pozytywnej.
  • Gdy koszty błędów są znane, lepszy od F1 jest bezpośredni koszt oczekiwany: liczba FP × koszt FP + liczba FN × koszt FN.
  • Typowy błąd: liczenie macro-F1 przez uśrednienie F1 z foldów i porównywanie z F1 policzonym na złączonych predykcjach — to różne liczby.

Najczęstsze pytania

Czy F1 jest lepsze od trafności?
Przy niezbalansowanych klasach zwykle bardziej informacyjne, bo nie nagradza modelu za samo nazywanie dominującej klasy. Przy klasach zbalansowanych i równych kosztach błędów trafność jest prostsza i równie dobra.
Jaka wartość F1 jest „dobra”?
Nie ma uniwersalnego progu. F1 trzeba porównać z F1 modelu trywialnego, z prostym modelem bazowym i z wymaganiami zastosowania. F1 = 0,7 może być świetnym wynikiem przy rzadkiej klasie i słabym, gdy pozytywów jest połowa.
Dlaczego F1 nie używa prawdziwych negatywów?
Bo pochodzi z wyszukiwania informacji, gdzie „dokumentów nieistotnych i nie pokazanych” są miliony i ich liczba nic nie mówi o jakości wyszukiwarki. Jeśli negatywy są dla Ciebie ważne, użyj zbalansowanej trafności lub MCC.

Źródła

  • van Rijsbergen C. J. „Information Retrieval”, 2nd ed., Butterworths 1979, rozdz. 7 (Evaluation).
  • Sokolova M., Lapalme G. (2009). A systematic analysis of performance measures for classification tasks. Information Processing & Management, 45(4).
  • Chicco D., Jurman G. (2020). The advantages of the Matthews correlation coefficient (MCC) over F1 score and accuracy in binary classification evaluation. BMC Genomics, 21.
  • Dokumentacja scikit-learn: Precision, recall and F-measures — https://scikit-learn.org/stable/modules/model_evaluation.html#precision-recall-and-f-measures

Zobacz też