Dokładność (ang. accuracy) to odsetek wszystkich poprawnych przewidywań modelu w stosunku do liczby wszystkich predykcji. Mówiąc wprost: bierzesz trafienia, dzielisz przez całość i masz liczbę, którą tak łatwo wkleić do prezentacji. W zadaniu klasyfikacji liczysz ją jako (TP + TN) / (TP + TN + FP + FN), gdzie TP i TN to poprawnie rozpoznane przypadki pozytywne i negatywne, a FP i FN to pomyłki. Wynik mieści się w przedziale od 0 do 1 (albo 0-100%).
Do czego to służy
Dokładność jest pierwszą metryką, po którą sięgasz, bo jest intuicyjna i działa świetnie jako szybki sanity check, gdy klasy są w miarę zrównoważone (np. po 50% spamu i nie-spamu). Daje jednym liczbą ogólny obraz: czy model w ogóle łapie wzorce, czy zgaduje na ślepo.
Problem zaczyna się przy niezrównoważonych klasach. Jeśli 99% maili to nie-spam, model który zawsze odpowiada „nie spam” osiąga 99% accuracy i nie wykrywa ani jednego spamu. Liczba wygląda imponująco, a model jest bezużyteczny. Dlatego przy rzadkich zdarzeniach (fraud, choroby, awarie) dokładność bywa metryką-pułapką.
Przykład z praktyki
W scikit-learn liczysz to jedną linijką:
from sklearn.metrics import accuracy_score
accuracy_score(y_true, y_pred)
Zanim jednak zaufasz wynikowi, wywołaj obok classification_report(y_true, y_pred) albo confusion_matrix(...). Macierz pomyłek od razu pokaże Ci, czy te 95% nie bierze się z faktu, że model ignoruje klasę mniejszościową. To dwie linijki, które ratują przed wstydem na review.
Częste błędy
- Raportowanie samej accuracy przy niezbalansowanych danych — bez baseline (np. dummy classifier, który zawsze typuje klasę większościową) nie wiesz, czy model jest lepszy od zgadywania.
- Mylenie accuracy z precision i recall — to różne pytania: „ile ogółem trafiłem” vs „ile z alarmów było prawdziwych” vs „ile realnych przypadków złapałem”.
- Porównywanie accuracy między zbiorami o różnym rozkładzie klas — wtedy liczby są nieporównywalne.
Pojęcia powiązane: precision, recall, F1-score, confusion matrix, ROC-AUC, balanced accuracy, baseline, klasy niezrównoważone (class imbalance).