ROC AUC ve Precision-Recall eğrileri, sınıflandırma modellerinizin başarımını güvenilir şekilde ölçmek için en yaygın kullanılan görsel metriklerdir. Doğruluk (accuracy) gibi tek bir sayıya güvenmek yerine, bu eğriler modelin farklı eşik değerlerindeki performansını gösterir. Özellikle dengesiz veri setlerinde, doğruluk yanıltıcı olabilir; işte bu noktada ROC AUC ve Precision-Recall (PR) eğrileri devreye girer. Bu yazıda, her iki metriğin ne zaman kullanılması gerektiğini, nasıl hesaplandığını ve pratik bir kontrol listesi ile uygulama adımlarını öğreneceksiniz.
ROC AUC Nedir ve Ne Zaman Kullanılmalı?
ROC (Receiver Operating Characteristic) eğrisi, gerçek pozitif oranını (TPR) yanlış pozitif oranına (FPR) karşı çizer. AUC (Area Under Curve) ise bu eğrinin altında kalan alanı ifade eder ve 0 ile 1 arasında değer alır. AUC değeri 1'e yaklaştıkça model mükemmel sınıflandırma yapıyor demektir. ROC AUC, özellikle sınıflar arasında dengeli veri setlerinde etkilidir. Ancak dengesiz veri setlerinde, PR eğrisi daha bilgilendirici olabilir.
ROC AUC'nin Avantajları ve Dezavantajları
- Avantaj: Sınıf dağılımından bağımsızdır; yani test setindeki pozitif-negatif oranı değişse bile AUC aynı kalır.
- Dezavantaj: Dengesiz veri setlerinde, yanlış pozitif oranı düşük olduğu için iyimser sonuçlar verebilir. Örneğin, %1 pozitif sınıf içeren bir veri setinde model tüm örnekleri negatif olarak tahmin etse bile AUC yine de 0.5 olur.
Precision-Recall (PR) Eğrisi Nedir?
PR eğrisi, kesinlik (precision) ve duyarlılık (recall) arasındaki trade-off'u gösterir. Kesinlik, doğru pozitif tahminlerin tüm pozitif tahminlere oranıdır; duyarlılık ise doğru pozitiflerin gerçek pozitiflere oranıdır. PR eğrisinin altında kalan alan (AUC-PR) da model performansını özetler. PR eğrisi, dengesiz veri setlerinde ROC AUC'den daha hassastır çünkü yanlış pozitifleri doğrudan hesaba katar.
Hangi Metrik Ne Zaman Kullanılmalı?
Genel bir kural olarak:
- Veri setiniz dengeli ise ROC AUC tercih edilebilir.
- Veri setiniz dengesiz ise (örneğin pozitif sınıf %10'un altında) PR eğrisi daha güvenilir sonuçlar verir.
- Her iki metriği de hesaplayıp karşılaştırmak, modelinizi daha iyi anlamanızı sağlar.
Pratik Kontrol Listesi: ROC ve PR Eğrileri İçin Adım Adım Kılavuz
Aşağıdaki adımları izleyerek modellerinizi sistematik şekilde değerlendirebilirsiniz. Bu kontrol listesini projelerinizde kullanabilirsiniz.
- Veri setini eğitim ve test olarak ayırın. K-fold cross-validation ile daha sağlam bir değerlendirme yapabilirsiniz.
- Modeli eğitin ve olasılık tahminleri alın. Çoğu sınıflandırıcı
predict_proba()yöntemi ile sınıf olasılıkları döndürür. - ROC eğrisini çizin ve AUC hesaplayın. Python'da
sklearn.metrics.roc_curveveaucfonksiyonlarını kullanın. - PR eğrisini çizin ve AUC-PR hesaplayın.
sklearn.metrics.precision_recall_curveveaucile yapabilirsiniz. - Eşik değeri seçimi yapın. İş ihtiyacınıza göre kesinlik veya duyarlılığı optimize edecek eşiği belirleyin. Örneğin, hasta taramasında yanlış negatifi en aza indirmek için düşük eşik tercih edilir.
- Dengesiz veri setlerinde PR eğrisine odaklanın. Eğer veri setiniz dengesizse, SMOTE gibi yöntemlerle dengelemeyi düşünün.
- Sonuçları raporlayın. ROC AUC ve AUC-PR değerlerini birlikte verin; ayrıca seçtiğiniz eşikteki kesinlik, duyarlılık, F1 skoru gibi metrikleri de ekleyin.
- Modeli karşılaştırın. Farklı modelleri aynı grafikte çizerek hangisinin daha iyi olduğunu görün.
Sık Yapılan Hatalar ve Dikkat Edilmesi Gerekenler
- Hata 1: ROC AUC'yi dengesiz veri setinde tek başına kullanmak. Bunun yerine PR eğrisini de inceleyin.
- Hata 2: Eğrileri yalnızca test setinde çizmek. K-fold cross-validation ile daha güvenilir sonuçlar elde edin.
- Hata 3: Eşik değerini varsayılan 0.5'te bırakmak. İş probleminize göre eşiği optimize edin.
- Hata 4: Feature scaling yapmadan modelleri eğitmek. Özellikle mesafe tabanlı algoritmalarda feature scaling performansı etkiler.
Uygulamalı Örnek: Python ile ROC ve PR Eğrileri
Aşağıda, bir lojistik regresyon modeli için ROC ve PR eğrilerinin nasıl çizileceğine dair örnek kod parçacıkları verilmiştir.
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, auc, precision_recall_curve, average_precision_score
import matplotlib.pyplot as plt
# Veri seti oluştur
X, y = make_classification(n_samples=1000, n_features=20, weights=[0.9, 0.1], random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# Model eğit
model = LogisticRegression()
model.fit(X_train, y_train)
y_scores = model.predict_proba(X_test)[:, 1]
# ROC eğrisi
fpr, tpr, _ = roc_curve(y_test, y_scores)
roc_auc = auc(fpr, tpr)
plt.figure()
plt.plot(fpr, tpr, label='ROC AUC = %0.2f' % roc_auc)
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.legend()
plt.show()
# PR eğrisi
precision, recall, _ = precision_recall_curve(y_test, y_scores)
pr_auc = average_precision_score(y_test, y_scores)
plt.figure()
plt.plot(recall, precision, label='PR AUC = %0.2f' % pr_auc)
plt.xlabel('Recall')
plt.ylabel('Precision')
plt.legend()
plt.show()
Sonuç: Hangi Metrik Daha Önemli?
ROC AUC ve PR eğrileri birbirini tamamlayan araçlardır. Dengeli veri setlerinde ROC AUC yeterli olabilir; ancak gerçek dünya problemlerinin çoğu dengesiz olduğu için PR eğrisine ağırlık vermek daha doğrudur. Unutmayın: Hiçbir metrik tek başına modelinizi anlatmaz. Her zaman birden fazla metriği değerlendirin ve iş bağlamını göz önünde bulundurun.
Sık Sorulan Sorular
ROC AUC ve Precision-Recall eğrileri arasındaki temel fark nedir?
ROC AUC, gerçek pozitif oranını yanlış pozitif oranına karşı çizerken; Precision-Recall eğrisi kesinlik ve duyarlılık arasındaki ilişkiyi gösterir. ROC AUC sınıf dengesinden bağımsızdır, PR eğrisi ise dengesiz veri setlerinde daha hassastır.
Dengesiz veri setlerinde neden ROC AUC yerine PR eğrisi tercih edilmelidir?
Dengesiz veri setlerinde negatif sınıf sayısı çok fazla olduğu için yanlış pozitif oranı düşük kalır ve ROC AUC yanıltıcı derecede yüksek çıkabilir. PR eğrisi ise doğrudan pozitif sınıfa odaklandığı için modelin gerçek başarımını daha iyi yansıtır.
PR eğrisinde AUC değeri nasıl yorumlanır?
PR AUC (Average Precision), 0 ile 1 arasında değer alır. 1'e yaklaştıkça model hem yüksek kesinlik hem de yüksek duyarlılık sağlar. Rastgele bir modelin PR AUC değeri pozitif sınıfın oranına eşittir; örneğin %10 pozitif sınıf varsa rastgele model yaklaşık 0.10 değerini alır.
ROC eğrisinde eğrinin altında kalan alan (AUC) 0.5 ise ne anlama gelir?
AUC değerinin 0.5 olması, modelin rastgele tahminden farksız olduğu anlamına gelir. İdeal bir model için AUC 1'e yakın olmalıdır.
Python'da ROC ve PR eğrilerini çizmek için hangi kütüphaneler kullanılır?
scikit-learn kütüphanesindeki `roc_curve`, `precision_recall_curve` ve `auc` fonksiyonları kullanılır. Görselleştirme için matplotlib tercih edilir.






