ROC-AUC eğrileri, farklı eşik değerlerinde (threshold) sınıflandırma performansını değerlendirmek için kullanılan güçlü bir metriktir. “Performans Metrikleri” yazımızda değindiğimiz kesinlik (precision) ve duyarlılık (recall) kavramları, bu konunun doğru anlaşılması için kritik önemdedir. Bu terimlere hâkim değilseniz, devam etmeden önce ilgili yazıyı okumanızı öneririz.
Eşik Değeri(Threshold)
Öncelikle kısaca eşik değerinin ne olduğundan bahsedelim. Eşik değeri, sınıflandırma problemleri için olasılık değerlerine göre ne şekilde bir sınıflandırma yapılması gerektiğinin bir kriteridir. Örnek olarak eğer eşik değerimiz 0.5 ise 0.5 ve üzerinde yaptığımız tahminler 1 sınıfına, 0.5’ in altında yapılan tahminler 0 sınıfına ait olacaktır. Eğer eşik değerimiz 0.3 ise 0.3 ve üzeri değerler 1 sınıfı, altındaki değerler 0 sınıfı olarak sınıflandırılacaktır. Peki bu eşik değeri bize ne kazandırıyor? Eşik değerleri üzerinde oynamalar yaparak kesinlik ve duyarlılık gibi farklı metrikleri kendi isteklerimiz ve amaçlarımız doğrultusunda değiştirebiliriz.
Kesinlik ve Duyarlılık Arasındaki İlişki
Kesinlik ve duyarlılık ters bir ilişkiye sahiptir. Farklı eşik değerleri için biri artarken diğeri azalır. Hatırlatma olarak aşağıdaki görselde kesinlik ve duyarlılığın formülleri yer almaktadır.

Bu ilişkiyi daha iyi anlamak adına bir örnek inceleyelim. Problemimiz hasta sınıfı pozitif(1) ve sağlıklı sınıfı negatif(0) olmak üzere iki adet sınıftan oluşsun. Örnek olarak verilerimiz aşağıdaki gibi dağılsın ve bir lojistik regresyon modelimiz olsun.

. İlk olarak eşik değerimizin 0.5 olduğu durumu inceleyelim. Modelimizin yaptığı tahminlere göre karmaşıklık matrisimiz ve kesinlik-duyarlılık değerlerimiz aşağıdaki görseldeki gibidir.

Eşik değerimizi 0.75’ e çıkaralım ve nasıl bir değişim ile karşılaşacağımızı gözlemleyelim. Karmaşıklık matrisimizi oluşturduğumuzda alacağımız sonuç aşağıdaki gibidir.

Görüldüğü gibi kesinlik değerimizde artış olduğunu, duyarlılığın ise sabit kaldığını görüyoruz. Bu durumda eşik değerini artırarak hasta olarak sınıflandırma yaparken daha seçici davranıyoruz fakat gözümüzden gerçekten hasta olan insanlar da kaçabiliyor.
Eşik değerimizi 0.20’ e düşürelim ve değişimi inceleyelim. Aşağıda görüldüğü gibi bu sefer de kesinlik değerinde bir azalış ve duyarlılıkta artış gözlemliyoruz. Bu durumda gözümüzden hasta bir insan kaçmıyor fakat gerçekte hasta olmayan insanlara hasta teşhisi koyarak hataya düşüyoruz.

Peki en iyi eşik değerine nasıl karar veririz? Tüm eşik değerlerini tek tek denemek, hesaplanması gereken karmaşıklık (confusion) matrislerini hızla yönetilmesi zor bir seviyeye çıkarır. İşte tam bu noktada ROC eğrisi devreye girer.
ROC
ROC eğrisine geçmeden önce öğrenmemiz gereken ekstra bir metrik vardır o da yanlış pozitif oranıdır(false positive rate). Formülü aşağıdaki gibi yanlış pozitif değerlerin gerçekteki negatif değerlere bölümüdür.

Artık aşağıdaki grafiğimizi çeşitli eşik değerleri için doldurup ROC eğrimizi elde edebiliriz.

İlk olarak eşik değerimizi 0 seçerek başlayalım. Eşik değerin 0 olması demek bütün tahminlerimizi 1 olarak yapıyoruz demektir. Yani bizim örneğimizi için bütün tahminlerimiz hasta sınıfına ait olacaktır.

Eşik değerimizi bir tık artırıp sadece bağımsız değişkenin(x) değerin en az olduğu örneği sağlıklı olarak sınıflandıralım. Aşağıdaki gibi bir sonuç elde ederiz. Yeni noktamızın yanlış pozitif oranı bir öncekine göre daha az olduğu için şu anki eşik değerimiz bir öncekine göre daha iyi bir sonuç veriyor.

Eşik değerimizi bir tık daha artırıp x değerlerinin en az olduğu iki örneği de sağlıklı olarak sınıflandıralım. Aşağıdaki sonuca göre yeni noktamız bir önceki noktamızın solunda kalıyor, bu da yeni eşik değerimizin bir öncekine göre daha iyi olduğunu gösteriyor.

Eşik değerlerimizi yavaş yavaş artırmaya devam edelim. Sırasıyla aşağıdaki görselleri elde ederiz.





En sonundaki eşik değerimizde bütün tahminlerimizi 0 olarak sınıflandırıyoruz. Bunun sonucunda da %0 kesinlik ve %0 yanlış pozitif oranının elde ediyoruz.
Son olarak bütün noktalarımızı birleştirerek ROC eğrimizi elde ediyoruz.

ROC eğrilerini uygun eşik değerini seçebilmek için yorumlarız. Örnek olarak bu eğrimizde en iyi eşik değerlerimiz 3. ve 5. noktalardır. Bu noktalar arasındaki seçimi yapabilmek artık bize kalmış bir durumdur. Problemimize göre daha yüksek duyarlılığı veya daha düşük yanlış pozitif oranını tercih edebiliriz.
AUC
AUC, ROC eğrisinin altında kalan alanı ifade eder. 0 ile 1 arasında değer alır ve 1’ e ne kadar yakınsa model de bir o kadar başarılıdır. Oluşturduğumuz ROC eğrisinin AUC değeri 0.9′ dur.

AUC değeri, aynı veri seti üzerinde eğitilmiş iki modelin başarısının karşılaştırılmasını kolaylaştırır. Aşağıdaki örnekte farklı modellerin aynı veri seti üzerindeki başarısını karşılaştırabiliriz. Kırmızı modelin mavi modele göre çok daha iyi bir performans verdiğini görebilirsiniz.

Tabii ki de bu ROC ve AUC değerlerinin çıkarılmasını her seferinde ellerimizle yapmıyoruz. Aşağıdaki kodu inceleyerek ROC grafiğini nasıl çıkarabileceğimizi ve AUC değerlerini nasıl elde edebileceğimizi inceleyebilirsiniz.
Eşik Seçimi İçin Pratik Notlar
- Yanlış negatif maliyeti yüksekse (ör. hastalık taraması), daha yüksek duyarlılık hedeflenmelidir.
- Yanlış pozitif maliyeti yüksekse, eşik artırılarak kesinlik önceliklenebilir.
- Dengesiz veri setlerinde ROC yanında PR eğrisi (Precision-Recall) de mutlaka incelenmelidir.
- Tek bir eşik yerine kullanım senaryosuna göre operasyonel eşik aralığı belirlemek daha sağlıklıdır.
Bu yazıda ROC eğrilerini çıkarırken yanlış pozitif oranını kullandık. Ancak dengesiz veri setlerinde, yanlış pozitif oranı yerine kesinlik (precision) merkezli değerlendirme yapmak çoğu zaman daha anlamlı sonuçlar verir.
Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.
