AI Atlas
Orta· ~2 dk okuma#roc#auc#classification-metrics

ROC ve AUC

ROC Eğrisi ve Eğri Altı Alan

Sınıflandırıcının tüm olası eşik değerlerinde nasıl davrandığını özetleyen eğri (ROC) ve onun altındaki alanı tek sayıyla ifade eden metrik (AUC). Modeli eşikten bağımsız değerlendirir.

ROC EĞRİSİ · AUCTPRFPRAUC = 0.91rastgeleEşikten bağımsız, sıralama yeteneğinin ölçüsü.
Tanım

ROC eğrisi, True Positive Rate (TPR = recall) ile False Positive Rate (FPR) arasındaki ilişkiyi tüm eşik değerlerinde çizer. Sol üst köşeye yaklaşan eğri "iyi", köşegen üstündeki eğri "rastgele tahmin" demektir. Eğrinin altında kalan alana AUC (Area Under the Curve) denir; 0.5 rastgele, 1.0 mükemmel sınıflandırıcıdır.

AUC'nin kıymeti şudur: tek bir eşik seçmek zorunda kalmadan modelin sıralama yeteneğini değerlendirir. "Rastgele bir pozitif örneğin skoru, rastgele bir negatif örneğin skorundan yüksek olma olasılığı" anlamına gelir. Bu yüzden farklı modeller arasında objektif bir karşılaştırma metriğidir.

Sınıf dengesizliği çok yüksekse ROC-AUC iyimser görünebilir. Bu durumda Precision-Recall AUC (Average Precision) daha bilgilendiricidir; pozitif sınıfa odaklanır. Yani 0.5/0.5 civarı dengeli problemde ROC-AUC, %1 pozitif sınıflı problemde PR-AUC tercih edilir.

Benzetme

Bir öğretmenin "bu çocuk sınıf birincisi olabilir mi?" sıralamasını yapmasını düşün. Öğretmen 100 öğrenciye sıralama veriyor; sıralamasının ne kadar doğru olduğunu sınamak için gerçekten birinci olanları rastgele seçip "öğretmen bunu en üstlerde mi sıralamış?" diye bakıyorsun. AUC tam olarak bu soruyu sayısallaştırır: rastgele bir pozitif örnek, rastgele bir negatif örnekten daha yüksek skor alıyor mu? %100 alıyorsa AUC=1.0; %50 alıyorsa AUC=0.5 (rastgele).

Gerçek dünyadan örnek

Bir sigorta şirketi üç farklı modeli kıyaslamak istiyor: lojistik regresyon, random forest, LightGBM. Sınıf dengesizliği yok ama eşik kararı henüz verilmedi. Bunları doğruluk veya F1 ile karşılaştırırsan eşiğe takılırsın; ROC-AUC tam burada işe yarar.

| Model | ROC-AUC | PR-AUC | |-------|---------|--------| | Lojistik | 0.79 | 0.34 | | Random Forest | 0.86 | 0.48 | | LightGBM | 0.91 | 0.56 |

LightGBM hem genel sıralama (ROC-AUC) hem pozitif sınıf odaklı sıralama (PR-AUC) açısından üstün. Eşik kararı sonra verilir; AUC kazananı şimdiden açık.

Kod örnekleri
scikit-learn · ROC eğrisi ve AUCPython
from sklearn.metrics import roc_curve, auc, roc_auc_score, average_precision_score
import matplotlib.pyplot as plt

probs = model.predict_proba(X_test)[:, 1]

# ROC noktaları
fpr, tpr, thr = roc_curve(y_test, probs)
roc_auc = auc(fpr, tpr)

# Aynısı tek satırla
roc_auc_score_v = roc_auc_score(y_test, probs)
ap = average_precision_score(y_test, probs)
print(f"ROC-AUC: {roc_auc_score_v:.4f}")
print(f"PR-AUC (Average Precision): {ap:.4f}")

# Görselleştirme
plt.figure(figsize=(6, 6))
plt.plot(fpr, tpr, label=f"AUC = {roc_auc:.3f}")
plt.plot([0, 1], [0, 1], "k--", alpha=0.5, label="rastgele")
plt.xlabel("False Positive Rate")
plt.ylabel("True Positive Rate")
plt.title("ROC Eğrisi")
plt.legend()
plt.savefig("roc.png", dpi=150, bbox_inches="tight")

# Modeli karşılaştırırken AUC tek skor olarak işine yarar
Ne zaman kullan
  • Modelin eşikten bağımsız genel performansını değerlendirmek
  • Birden fazla modeli objektif karşılaştırmak
  • Eşik henüz seçilmediği aşamada model seçimi yapmak
  • Sıralama probleminin başarısını ölçmek (öneri, arama)
Ne zaman kullanma
  • Sınıf çok dengesizse ROC-AUC iyimser olur — PR-AUC daha iyidir
  • Tek ve sabit bir eşikte iş kararı veriliyorsa — direkt precision/recall'a bak
  • Çok sınıflı problemlerde ROC-AUC'yi yanlış agregasyonla raporlamak — macro-AUC veya OvR/OvO kullan
Sık yapılan hatalar

AUC'yi kalibre olasılık sanmak

AUC bir sıralama metriğidir, olasılık değildir. Yüksek AUC modelin olasılık çıktılarının doğru kalibre olduğu anlamına gelmez; gerekirse Platt scaling veya isotonic regression uygula.

Dengesiz veride sadece ROC-AUC'ye bakmak

%1 pozitif sınıflı bir problemde 0.95 ROC-AUC parlak görünür ama PR-AUC 0.3 olabilir. İkisini birden raporla.

Model karşılaştırmasında istatistiksel anlamlılığı atlamak

0.86 ile 0.87 fark gerçek mi yoksa rastlantı mı? DeLong testi gibi yöntemlerle iki AUC'nin farkının anlamlılığını test et.