Czułość

Odsetek rzeczywistych przypadków pozytywnych, które model poprawnie wykrył. Mówi, ilu prawdziwych pozytywów model nie przeoczył.

Czułość (ang. recall, zamiennie sensitivity albo true positive rate) to odsetek rzeczywistych przypadków pozytywnych, które model zaklasyfikował poprawnie. Mówiąc po ludzku: spośród wszystkich obiektów, które naprawdę były „na tak”, ile model faktycznie wyłapał. Liczysz ją prosto: recall = TP / (TP + FN), gdzie TP to trafione pozytywy, a FN to fałszywe negatywy, czyli te, które model przeoczył. Wynik 0,9 oznacza, że jeden na dziesięć realnych pozytywów uciekł modelowi bokiem.

Do czego to służy

Czułość pilnuje jednej rzeczy: żeby nie pomijać tego, co ważne. Jest kluczowa wszędzie tam, gdzie przeoczenie pozytywu kosztuje znacznie więcej niż fałszywy alarm — w diagnostyce medycznej, wykrywaniu fraudów, filtrach bezpieczeństwa czy detekcji awarii. Lepiej, żeby system o jeden raz za dużo krzyknął „uwaga”, niż żeby przepuścił prawdziwe zagrożenie.

Sama czułość nie wystarczy do oceny modelu, bo zawsze gra w parze z precyzją (precision). Czułość mówi „ilu prawdziwych pozytywów nie przegapiłem”, a precyzja „ile z moich alarmów było trafionych”. Podnosząc próg decyzyjny w dół, łatwo wykręcić recall bliski 1,0 — wystarczy, żeby model wszystko uznał za pozytyw. Tyle że precyzja wtedy leci na łeb. Dlatego patrzysz na oba naraz, zwykle przez metrykę F1-score.

Przykład z praktyki

Trenujesz klasyfikator wykrywający spam. Masz 100 realnych spamów, model złapał 80, a 20 wpuścił do skrzynki. Czułość to 80 / (80 + 20) = 0,8. W scikit-learn nie liczysz tego ręcznie:

  • from sklearn.metrics import recall_score
  • recall_score(y_true, y_pred) — zwróci wartość dla klasy pozytywnej,
  • classification_report(y_true, y_pred) — pokaże recall, precision i F1 dla każdej klasy naraz.

Przy wielu klasach kontroluj parametr average (macro, micro, weighted) — przy niezbalansowanych danych potrafi mocno zmienić wynik.

Częste błędy

Najpopularniejsza pułapka to ocenianie modelu samą dokładnością (accuracy) przy niezbalansowanych klasach. Jeśli 1% transakcji to fraudy, model mówiący „wszystko czyste” ma 99% accuracy i czułość równą zero — czyli jest bezużyteczny. Druga pułapka: gonienie za recall = 1,0 bez patrzenia na precyzję. Trzecia: mylenie kierunku — czułość karze za FN, a nie za FP. Jak chcesz ograniczyć fałszywe alarmy, to robota dla precyzji, nie czułości.

Pojęcia powiązane: precision (precyzja), F1-score, confusion matrix, true positive rate, krzywa ROC i AUC, próg decyzyjny, accuracy.