Duyarlılık
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 68/112
- 5 dk
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.333Her ş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
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
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.
r = ____(y_true, y_pred)
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 |