CodeBlanks Logo Icon CodeBlanks

Duyarlılık

Duyarlılık (recall), gerçek pozitiflerin yakalama oranıdır.

Duyarlılık (recall)

Duyarlılık, gerçek pozitiflerin ne kadarının yakalandığını ölçer: TP / (TP + FN). Kaçırmanın pahalı olduğu yerlerde önemlidir: hastalık taraması, sahtekârlık tespiti.

from sklearn.metrics import recall_score
y_true = [1, 1, 1, 0, 0]
y_pred = [1, 0, 0, 0, 0]
print(recall_score(y_true, y_pred))   # 1 / 3 = 0.333

Her şeye pozitif diyen bir model duyarlılık 1.0 alır ama kesinliği çok düşer.

Kesinlik-duyarlılık dengesi

Eşik düşünce model daha çok pozitif der: duyarlılık artar, kesinlik düşer. Eşik yükselince tersi olur:

p = m.predict_proba(X_test)[:, 1]
for esik in [0.3, 0.5, 0.7]:
    t = (p >= esik).astype(int)
    print(esik, precision_score(y_test, t), recall_score(y_test, t))

Hangi noktanın seçileceği iş problemine bağlıdır; precision_recall_curve tüm eşikleri tek seferde verir.

Uygulama Eşik etkisi

Olasılık dizisi p için 0.3 ve 0.7 eşiklerinde kararları üret. Her eşik için eşik değeri, kesinlik ve duyarlılığı round(..., 2) ile aynı satırda yazdır.

Başlangıç kodu

model.py
import numpy as np
from sklearn.metrics import precision_score, recall_score

y_true = np.array([1, 1, 1, 1, 0, 0, 0, 0])
p = np.array([0.9, 0.8, 0.45, 0.35, 0.6, 0.4, 0.2, 0.1])

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.metrics import precision_score, recall_score

y_true = np.array([1, 1, 1, 1, 0, 0, 0, 0])
p = np.array([0.9, 0.8, 0.45, 0.35, 0.6, 0.4, 0.2, 0.1])

for esik in [0.3, 0.7]:
    t = (p >= esik).astype(int)
    print(esik, round(precision_score(y_true, t), 2), round(recall_score(y_true, t), 2))

Beklenen çıktı

0.3 0.67 1.0
0.7 1.0 0.5

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Kanser taramasında hangi metrik öncelikle yüksek tutulmalıdır?

  • Kesinlik
  • Doğruluk
  • Hiçbiri
  • Duyarlılık Doğru cevap

Açıklama: Bir hastayı kaçırmak (FN), sağlıklı birini ek teste göndermekten çok daha pahalıdır.

2 Duyarlılığı hesapla.

Soru
r = ____(y_true, y_pred)
Cevap
r = recall_score(y_true, y_pred)

Açıklama: recall_score, TP / (TP + FN) değerini verir.

3 Eşik değişimini sonuçlarla eşleştir.

Kavram Anlamı
Eşik düşer Duyarlılık artar
Eşik yükselir Kesinlik artar
Hepsine pozitif Duyarlılık 1.0
precision_recall_curve Tüm eşikler

Başlangıç bölümündeki tüm dersler