ML Atlas

04 · Ocena · 5 min czytania · aktualizacja

Accuracy czy balanced accuracy — kiedy używać zbalansowanej trafności?

W skrócie

Trafność liczy odsetek wszystkich poprawnych odpowiedzi, a zbalansowana trafność uśrednia recall każdej klasy. Przy rzadkiej klasie tylko ta druga widzi kłopot.

Co to jest

Zbalansowanej trafności (balanced accuracy) używaj, gdy klasy są niezbalansowane, a pomyłki w klasie rzadkiej są co najmniej tak ważne jak w licznej; zwykłej trafności (accuracy) — gdy klasy są w miarę równe albo gdy naprawdę liczy się odsetek trafnych decyzji w populacji o danych proporcjach. Trafność to (TP + TN) / wszystkie przypadki, zbalansowana trafność to średnia recall z każdej klasy: (TPR + TNR) / 2 w przypadku binarnym.

Różnicę najlepiej widać na modelu, który zawsze odpowiada „klasa liczniejsza”. Przy 95% negatywów ma trafność 95% i zbalansowaną trafność dokładnie 50%, czyli tyle, ile rzut monetą. Zbalansowana trafność ma stały punkt odniesienia: model bez wiedzy dostaje 1/K przy K klasach, niezależnie od proporcji.

Trafność nie jest metryką „złą” — odpowiada na inne pytanie. Mówi, jaki odsetek decyzji będzie trafny przy obecnych proporcjach klas. Zbalansowana trafność mówi, jak dobrze model rozpoznaje każdą klasę, tak jakby wszystkie były równie liczne.

Mechanizm — dlaczego tak działa

Ukryte wagi. Trafność to średnia recall z klas ważona ich liczebnością: accuracy = π·TPR + (1 − π)·TNR, gdzie π to częstość klasy pozytywnej. Przy π = 5% recall klasy rzadkiej wnosi do wyniku tylko 5%. Model może całkowicie ignorować tę klasę i tracić zaledwie 5 punktów. Zbalansowana trafność ustawia π = 0,5, czyli daje każdej klasie równy głos.

Interpretacja kosztowa. Wybór metryki to założenie o kosztach. Optymalizacja trafności zakłada, że każdy błąd kosztuje tyle samo. Optymalizacja zbalansowanej trafności odpowiada sytuacji, w której błąd w klasie rzadkiej jest tyle razy droższy, ile razy ta klasa jest rzadsza. Przy 5% pozytywów — 19 razy. Jeśli tak nie jest, zbalansowana trafność też wprowadza w błąd.

Związek z progiem. Obie metryki liczy się po zamianie prawdopodobieństw na etykiety. Model o świetnym rankingu może mieć złą zbalansowaną trafność tylko dlatego, że próg 0,5 jest za wysoki dla rzadkiej klasy. Ważenie klas (class_weight="balanced") albo obniżenie progu przesuwa model w stronę wyższej zbalansowanej trafności kosztem zwykłej.

Wieloklasowo. Zbalansowana trafność to średnia recall po klasach (makro-recall). Trafność jest wtedy zdominowana przez największą klasę, a jej poziom odniesienia to częstość tej klasy, nie 1/K.

Na przykładzie

Titanic (klasa pozytywna = przeżył) w trzech wersjach: oryginalnej (38,4% ocalałych) i z losowo usuniętą częścią ocalałych, tak by stanowili 10% albo 5% danych (random_state=0). Powtarzana walidacja krzyżowa 5 × 5. Model trywialny zawsze mówi „nie przeżył”; regresja logistyczna i las losowy (300 drzew) są w wersji zwykłej i z ważeniem klas.

Model38,4%: trafność38,4%: zbal.10%: trafność10%: zbal.5%: trafność5%: zbal.5%: recall
Zawsze „nie”0,6160,5000,9000,5000,9500,5000,000
Regresja logistyczna0,7960,7790,9310,6800,9580,6220,248
Regr. logistyczna, wagi klas0,7870,7810,7900,7620,7660,7240,676
Las losowy0,8290,8060,9260,6870,9550,5710,145
Las losowy, wagi klas0,8190,8060,9160,7610,9400,6610,351

Przy oryginalnych proporcjach obie metryki zgadzają się co do zwycięzcy. Przy 5% ocalałych zwykła trafność wskazuje regresję logistyczną (0,958), która jest lepsza od modelu trywialnego o niecały punkt i wykrywa jednego ocalałego na czterech. Zbalansowana trafność wskazuje wersję z wagami klas: jej trafność spada do 0,766, ale wykrywa dwie trzecie ocalałych. Który model jest lepszy, zależy od kosztów — ale tylko zbalansowana trafność w ogóle pokazuje, że jest o czym rozmawiać.

To samo w wielu klasach: na pingwinach (146 Adelie, 68 maskowych, 119 białobrewych) model zawsze wskazujący pingwina Adeli ma trafność 0,438 i zbalansowaną trafność 0,333. kNN bez skalowania cech: 0,781 i 0,714 — różnica zdradza, że rzadkie pingwiny maskowe są rozpoznawane najgorzej.

Dane: Titanic Palmer Penguins (pingwiny z Antarktydy)

W praktyce

Reguła wyboru:

  • Klasy w miarę równe (np. 40–60%) i równe koszty błędów → trafność: accuracy_score(y, y_pred).
  • Klasa rzadka jest ważna, kosztów nie znasz → zbalansowana trafność: balanced_accuracy_score(y, y_pred); w walidacji krzyżowej scoring="balanced_accuracy".
  • Znasz koszty błędów → nie wybieraj między tymi dwiema; policz oczekiwany koszt z macierzy pomyłek (confusion_matrix) i dobierz próg.
  • Chcesz ocenić ranking niezależnie od progu → ROC AUC lub PR AUC zamiast obu.
  • Zawsze raportuj wynik modelu trywialnego: DummyClassifier(strategy="most_frequent"); trafność 95% bez tego punktu odniesienia nic nie znaczy.
  • balanced_accuracy_score(..., adjusted=True) przeskalowuje wynik tak, że model losowy ma 0, a idealny 1.

Najczęstsze pytania

Czy zbalansowana trafność to to samo co makro-recall?
Tak, w scikit-learn `balanced_accuracy_score` jest równa `recall_score(average="macro")`. W przypadku binarnym to średnia czułości i swoistości.
Czy zamiast zbalansowanej trafności nie lepiej użyć F1?
F1 skupia się na klasie pozytywnej i ignoruje prawdziwe negatywy, więc zmienia się z częstością klasy i zależy od tego, którą klasę nazwiemy pozytywną. Zbalansowana trafność traktuje obie klasy symetrycznie. Gdy interesują Cię głównie alarmy dla rzadkiej klasy, F1 albo precyzja i recall osobno są czytelniejsze.
Dlaczego Kaggle i artykuły naukowe wciąż podają trafność?
Bo wiele zbiorów konkursowych i benchmarków jest zbalansowanych, a wtedy obie metryki prawie się pokrywają. Przy danych niezbalansowanych sama trafność jest najczęstszym źródłem przesadnie optymistycznych wniosków.

Źródła

  • Brodersen K. H., Ong C. S., Stephan K. E., Buhmann J. M. „The Balanced Accuracy and Its Posterior Distribution”, ICPR 2010, s. 3121–3124.
  • Japkowicz N., Shah M. „Evaluating Learning Algorithms: A Classification Perspective”, Cambridge University Press 2011, rozdz. 3.
  • Chicco D., Jurman G. „The advantages of the Matthews correlation coefficient (MCC) over F1 score and accuracy in binary classification evaluation”, BMC Genomics 21, 2020, art. 6.
  • Dokumentacja scikit-learn, „Balanced accuracy score”: https://scikit-learn.org/stable/modules/model_evaluation.html#balanced-accuracy-score

Zobacz też