AI Atlas
Başlangıç· ~2 dk okuma#precision#recall#f1

Precision ve Recall

Duyarlılık ve Anma

Sınıflandırma modellerinin başarısını ölçen iki temel metrik: Precision = 'pozitif dediklerinin ne kadarı doğru?', Recall = 'gerçek pozitiflerin ne kadarını yakaladım?'.

PRECISION · RECALLgerçektahminTPPrecision = TP / (TP + FP)'pozitif' dediklerimin kaçı doğruRecall = TP / (TP + FN)gerçek pozitiflerin kaçını yakaladımF1 = 2·P·R / (P+R)ikisinin harmonik ortalamasıYanlış alarm pahalıysa precision; kaçırma pahalıysa recall.
Tanım

Doğruluk (accuracy) tek başına çoğu zaman yanıltıcıdır; özellikle dengesiz sınıflarda. Precision ve recall iki farklı soruya cevap verir.

Precision (kesinlik): model "pozitif" dedi; bunların kaçı gerçekten pozitif? = TP / (TP + FP). Yanlış alarmın maliyeti yüksekse precision önceliklidir. Spam filtresinde önemli e-postanın spam'e düşmesi pahalıdır → yüksek precision lazım.

Recall (anma, duyarlılık): gerçek pozitiflerin kaçını yakaladım? = TP / (TP + FN). Kaçırmanın maliyeti yüksekse recall önceliklidir. Kanser teşhisinde gerçek hastayı kaçırmak çok pahalıdır → yüksek recall lazım.

İkisi arasında doğal bir gerilim vardır. Eşiği yükseltirsen daha emin olduklarını işaretlersin → precision yükselir, recall düşer. Eşiği indirirsen tersi olur. F1 skoru ikisinin harmonik ortalamasıdır; tek bir sayıyla ikisini birden özetlemek için kullanılır. Sınıf dengesizliğinde macro-F1 her sınıfa eşit ağırlık verir.

Benzetme

Bir balıkçının ağ atması gibidir. Precision: ağdan çıkanların yüzde kaçı somondu (asıl istediğim balık)? Ağa eski lastik, çöp, yengeç çekildiyse precision düşüktür. Recall: denizdeki tüm somonların yüzde kaçını yakaladım? Bir sürü somon ağdan kaçtıysa recall düşüktür.

Sıkı bir ağ atarsın → çok az şey çekersin ama hemen hepsi somondur (yüksek precision, düşük recall). Geniş ağ atarsın → her şeyi çekersin ama ortalık karışıktır (düşük precision, yüksek recall). Hangisinin doğru olduğu işine bağlıdır.

Gerçek dünyadan örnek

Bir e-ticaret sitesi yorum bölümünde nefret söylemi tespit modeli kuruyor. Üç farklı eşik denenir:

| Eşik | Precision | Recall | Anlamı | |------|-----------|--------|--------| | 0.3 | %62 | %94 | Çok temiz ama %38 hatalı bayrak | | 0.5 | %81 | %78 | Dengeli | | 0.7 | %93 | %52 | Az hata ama yarısı kaçar |

Ürün ekibi karar verir: "yanlış bayrakla iyi yorum sansürlemek kullanıcı kaybettirir, kaçanları moderatör elle yakalar" → eşik 0.7. Otomatik filtre %52 yakalama yapar, gerisi insan moderasyonuna bırakılır. Hangi metriği önceliklendirdiğin, iş kararını doğrudan değiştirir.

Kod örnekleri
scikit-learn · sınıflandırma raporuPython
from sklearn.metrics import (
    classification_report, precision_recall_curve,
    average_precision_score,
)
import matplotlib.pyplot as plt

# Olasılık tahminleri
probs = model.predict_proba(X_test)[:, 1]

# Tek bir eşik için tüm metrikleri rapora dök
preds = (probs > 0.5).astype(int)
print(classification_report(y_test, preds, target_names=["neg", "pos"]))

# Tüm eşik değerleri için precision-recall eğrisi
prec, rec, thr = precision_recall_curve(y_test, probs)
ap = average_precision_score(y_test, probs)

plt.plot(rec, prec, label=f"AP={ap:.3f}")
plt.xlabel("Recall")
plt.ylabel("Precision")
plt.title("Precision-Recall Eğrisi")
plt.legend()
plt.savefig("pr_curve.png")

# İş hedefine göre eşik seç (örn. recall en az %80 olsun)
target = 0.8
ok = rec >= target
idx = ok.argmax()
print(f"Recall ≥ {target} için en yüksek precision: {prec[idx]:.3f}")
print(f"Bu noktadaki eşik: {thr[idx]:.3f}")
Ne zaman kullan
  • Sınıflar dengesiz olduğunda — accuracy yanıltır
  • Yanlış pozitif ve yanlış negatif maliyetleri farklıysa
  • Bir eşik kararını işle gerekçelendirmek istediğinde
  • Bilgi alma (information retrieval) ve öneri sistemlerinde
Ne zaman kullanma
  • Bu metrikler her sınıflandırma probleminde kullanılır; ne zaman kullanmayacağı yok
Sık yapılan hatalar

Sadece F1'e bakmak

F1 ortalamadır; precision %20 / recall %95 olan model F1 ile dengeli görünür ama gerçekte uçlar dengesizdir. Üç metriği de birlikte rapora dök.

Macro vs micro F1 karıştırmak

Macro her sınıfa eşit ağırlık verir; küçük sınıflar önemliyse onu kullan. Micro örnek başına ağırlık verir; büyük sınıf domine eder.

Eşiği iş bağlamı olmadan seçmek

0.5 varsayılan değildir, kararındır. Yanlış pozitif ve yanlış negatif maliyetlerini hesapla, ROI'ye göre eşiği seç.