Takip et

Doğruluk Neden Aldatıcıdır? Gerçek Metrikler (Bölüm 4)


Makine öğrenimi projelerinde model başarısını ölçmek, çoğu zaman düşündüğümüzden daha karmaşık bir süreçtir. Genellikle ilk akla gelen ve en basit görünen metrik doğruluk (accuracy) olsa da, bu popüler gösterge ne yazık ki sık sık yanıltıcı sonuçlar verebilir. Peki, neden sadece doğruluğa güvenmek tehlikelidir ve modelimizin gerçek performansını anlamak için hangi metrikleri kullanmalıyız? Bu makalede, doğruluk metriklerinin neden yetersiz kaldığını derinlemesine inceleyecek, gerçek dünyadaki zorluklara nasıl çözüm bulabileceğimizi keşfedeceğiz ve modellerimizi daha sağlam bir şekilde değerlendirmek için kullanabileceğimiz alternatif metrikleri adım adım öğreneceğiz. Özellikle dengesiz veri kümeleriyle çalışırken doğru değerlendirme metriklerini seçmek, projenizin başarısı için hayati öneme sahiptir; aksi takdirde, “mükemmel” görünen bir modelin gerçekte hiçbir işe yaramadığını fark edebilirsiniz.

Doğruluk, bir sınıflandırma modelinin doğru tahminlerinin toplam tahminlere oranı olarak tanımlanır. Yani, modelin kaç örneği doğru bir şekilde sınıflandırdığını gösterir. Bu tanım kulağa oldukça mantıklı gelse de, özellikle veri kümenizdeki sınıf dağılımı eşit olmadığında, yani bir sınıf diğerine göre çok daha az sayıda örneğe sahip olduğunda sorunlar baş göstermeye başlar. Örneğin, bir hastalık teşhis modelinde, sağlıklı insan sayısı hasta insan sayısından kat kat fazla olabilir. Bu durumda, modelin her zaman “sağlıklı” tahmininde bulunması, %99’luk bir doğruluk oranına ulaşmasını sağlayabilir. Ancak bu, modelin hastalığı tespit etme yeteneği hakkında bize hiçbir bilgi vermez, hatta bu yeteneğin tamamen yok olduğunu gizleyebilir. İşte bu yüzden, sadece doğruluğa bakmak, buzdağının görünen kısmıyla yetinmek gibidir. Asıl önemli olan, suyun altında yatan ve modelin kritik durumlarda nasıl davrandığını gösteren diğer metriklerdir.

Bu yanıltıcı durumları anlamak için, makine öğreniminde sıkça kullanılan bir kavram olan Karmaşıklık Matrisi (Confusion Matrix)‘ne aşina olmamız gerekir. Bu matris, bir sınıflandırma modelinin tahminlerinin ayrıntılı bir özetini sunar ve doğru veya yanlış olarak sınıflandırılan örnekleri dört ana kategoriye ayırır: Doğru Pozitif (True Positive – TP), Doğru Negatif (True Negative – TN), Yanlış Pozitif (False Positive – FP) ve Yanlış Negatif (False Negative – FN). Bu dört temel taş, doğruluğun ötesine geçerek modelin güçlü ve zayıf yönlerini ortaya koyan diğer tüm metriklerin temelini oluşturur. Örneğin, bir spam filtresi düşünün: Gerçekten spam olan bir e-postayı (pozitif) doğru tahmin ettiğinde TP; spam olmayan bir e-postayı (negatif) doğru tahmin ettiğinde TN; spam olmayan bir e-postayı yanlışlıkla spam olarak işaretlediğinde FP; ve gerçekten spam olan bir e-postayı gözden kaçırdığında FN durumu ortaya çıkar. Bu matrisi anlamak, modelinizin performansını sadece tek bir sayıya indirgemek yerine, çok boyutlu bir perspektiften değerlendirmenizi sağlar.

Dolayısıyla, “doğruluk neden yalan söyler?” sorusunun cevabı oldukça basittir: Çünkü karmaşık gerçekliği tek bir sayıya indirger ve özellikle dengesiz veri kümelerinde modelin kritik hatalarını gizleyebilir. Bu durum, modelin üretim ortamında beklenmedik ve hatta zararlı sonuçlar doğurmasına yol açabilir. Bir bankanın sahtekarlık tespit sisteminde veya bir otonom aracın yaya tanıma algoritmasında yüksek doğruluk oranına sahip olmak, eğer sistem kritik hataları gözden kaçırıyorsa hiçbir anlam ifade etmez. İşte bu noktada, modelin farklı türdeki hatalara karşı ne kadar hassas olduğunu gösteren, daha özel ve bağlama duyarlı metrikler devreye girer. Bu metrikler sayesinde, modelin yalnızca genel doğruluğunu değil, aynı zamanda belirli sınıflandırma görevlerindeki inceliklerini de değerlendirebiliriz. İlerleyen bölümlerde bu kritik metrikleri ve bunların gerçek dünya senaryolarında nasıl kullanıldığını ayrıntılı olarak inceleyeceğiz.

Karmaşıklık Matrisi (Confusion Matrix) Temelli Metrikler: Hassasiyet, Duyarlılık ve F1 Skoru Nasıl Çalışır?

Makine öğrenimi modellerinin performansını doğru bir şekilde anlamak için, sadece doğruluğa güvenmek yetersizdir. Daha önce de belirttiğimiz gibi, dengesiz veri kümeleri gibi durumlarda doğruluk, modelin gerçek başarısını yanlış yansıtabilir. İşte bu noktada, modelimizin ne tür hatalar yaptığını ve hangi tür doğru tahminleri gerçekleştirdiğini ayrıntılı olarak gösteren Karmaşıklık Matrisi (Confusion Matrix) devreye girer. Bu matris, temelde dört temel bileşene sahiptir ve diğer önemli metriklerin hesaplanmasında birincil kaynaktır. Şimdi bu bileşenleri ve bunlardan türeyen kritik metrikleri daha yakından inceleyelim.

  • Doğru Pozitif (True Positive – TP): Modelin pozitif olarak tahmin ettiği ve gerçekte de pozitif olan durumlar. Örneğin, hasta olan bir kişiyi doğru bir şekilde “hasta” olarak teşhis etmek.
  • Doğru Negatif (True Negative – TN): Modelin negatif olarak tahmin ettiği ve gerçekte de negatif olan durumlar. Örneğin, sağlıklı olan bir kişiyi doğru bir şekilde “sağlıklı” olarak teşhis etmek.
  • Yanlış Pozitif (False Positive – FP): Modelin pozitif olarak tahmin ettiği ancak gerçekte negatif olan durumlar (Tip I Hatası). Örneğin, sağlıklı bir kişiyi yanlışlıkla “hasta” olarak teşhis etmek. Buna “Type I Error” da denir ve bir alarmın yalan yere çalması gibi düşünülebilir.
  • Yanlış Negatif (False Negative – FN): Modelin negatif olarak tahmin ettiği ancak gerçekte pozitif olan durumlar (Tip II Hatası). Örneğin, hasta bir kişiyi yanlışlıkla “sağlıklı” olarak teşhis etmek. Bu, genellikle en maliyetli hata türüdür, çünkü önemli bir olayın gözden kaçırılması anlamına gelir (örn: kanser hastasını sağlıklı sanmak).

Bu dört temel bileşen ışığında, model performansını daha anlamlı hale getiren üç ana metrik bulunmaktadır: Hassasiyet (Precision), Duyarlılık (Recall) ve F1 Skoru.

Hassasiyet (Precision): Modelin Pozitif Tahminlerine Ne Kadar Güvenebiliriz?

Hassasiyet (Precision), modelin pozitif olarak tahmin ettiği durumlardan ne kadarının gerçekten pozitif olduğunu ölçer. Diğer bir deyişle, “Modelin pozitif dediği kaç şey gerçekten pozitif çıktı?” sorusunun cevabıdır. Formülü şöyledir:

Precision = TP / (TP + FP)

Hassasiyet, özellikle yanlış pozitiflerin maliyetinin yüksek olduğu durumlarda kritik öneme sahiptir. Örneğin, bir spam filtresinde, meşru bir e-postanın yanlışlıkla spam olarak işaretlenmesi (FP), kullanıcının önemli bir mesajı kaçırmasına neden olabilir. Bu senaryoda yüksek hassasiyet, kullanıcının önemli e-postalarını güvenle almasını sağlar. Benzer şekilde, bir arama motoru sonuçlarında alakasız bir sonucun gösterilmesi de bir FP’dir. Kullanıcı deneyimi için hassasiyetin yüksek olması istenir.

Duyarlılık (Recall) / Geri Çağırma Oranı: Model Kritik Durumları Ne Kadar İyi Yakalıyor?

Duyarlılık (Recall), bazen Geri Çağırma Oranı veya Hassasiyet (Sensitivity) olarak da adlandırılır, gerçekte pozitif olan tüm durumlardan modelin ne kadarını doğru bir şekilde pozitif olarak tespit edebildiğini ölçer. Yani, “Gerçekten pozitif olanların kaç tanesini model yakalayabildi?” sorusunun cevabıdır. Formülü şöyledir:

Recall = TP / (TP + FN)

Duyarlılık, özellikle yanlış negatiflerin (FN) maliyetinin çok yüksek olduğu durumlarda hayati önem taşır. Örneğin, bir kanser teşhis sisteminde, gerçekten kanserli olan bir hastanın “sağlıklı” olarak yanlış teşhis edilmesi (FN), tedaviye geç kalınmasına ve ciddi sonuçlara yol açabilir. Bu gibi durumlarda, modelin mümkün olduğunca çok hastayı tespit etmesi (yüksek duyarlılık) hedeflenir, hatta bu, bazı sağlıklı kişilerin yanlışlıkla kanserli olarak etiketlenmesi (FP) pahasına bile olsa. Bir sahtekarlık tespit sisteminde de, gerçek bir sahtekarlığın gözden kaçırılması (FN) finansal kayıplara yol açacağı için duyarlılık kritiktir.

F1 Skoru: Hassasiyet ve Duyarlılık Arasındaki Dengeyi Bulmak

Çoğu gerçek dünya senaryosunda, yüksek hassasiyet ve yüksek duyarlılık arasında bir denge kurmak gerekir. Çünkü bu iki metrik genellikle birbiriyle çelişir: Birini artırmaya çalıştığınızda diğeri düşme eğiliminde olabilir. İşte bu dengeyi ölçmek için F1 Skoru kullanılır. F1 skoru, hassasiyet ve duyarlılığın harmonik ortalamasıdır ve özellikle dengesiz veri kümelerinde model performansını değerlendirmek için çok daha dengeli bir ölçüt sunar.

F1 Skoru = 2 * (Precision * Recall) / (Precision + Recall)

F1 skoru, hem FP hem de FN’yi dikkate aldığı için, modelin genel performansını tek bir sayı ile özetlemek istediğimizde oldukça faydalıdır. Her iki metriğin de yüksek olduğu durumlarda F1 skoru da yüksek çıkar. Eğer bir metrik (örneğin hassasiyet) çok düşükse, F1 skoru da düşer. Bu nedenle, F1 skoru, özellikle pozitif sınıfın tespit edilmesinin önemli olduğu ve veri kümesinin dengesiz olduğu sınıflandırma görevlerinde tercih edilen bir metriktir.

Uzman İpucu: Hangi metriğin sizin için daha önemli olduğunu belirlemek, projenizin iş hedefleri ve yanlış tahminlerin maliyetine bağlıdır. Yanlış pozitiflerin mi, yoksa yanlış negatiflerin mi daha büyük bir risk taşıdığını iyi analiz etmelisiniz. Bu karar, modelinizi optimize ederken hangi yöne ağırlık vermeniz gerektiğini belirleyecektir.

Şimdi bu metrikleri Python’da basit bir örnekle nasıl hesaplayabileceğimize bakalım. Diyelim ki, elimizde bir modelin tahminleri ve gerçek etiketleri var.


from sklearn.metrics import confusion_matrix, precision_score, recall_score, f1_score

# Gerçek etiketler (true labels)
y_true = [0, 1, 0, 1, 0, 0, 1, 0, 1, 1]
# Modelin tahminleri (predicted labels)
y_pred = [0, 1, 0, 0, 0, 1, 1, 0, 1, 1]

# Karmaşıklık Matrisi oluşturma
cm = confusion_matrix(y_true, y_pred)
print("Karmaşıklık Matrisi:\n", cm)

# Matristen TP, TN, FP, FN değerlerini çıkarma
# cm[0,0] = TN (0'ı 0 tahmin etti)
# cm[0,1] = FP (0'ı 1 tahmin etti)
# cm[1,0] = FN (1'i 0 tahmin etti)
# cm[1,1] = TP (1'i 1 tahmin etti)

TN, FP, FN, TP = cm.ravel()
print(f"TP: {TP}, TN: {TN}, FP: {FP}, FN: {FN}")

# Doğruluk (Accuracy) hesaplama
accuracy = (TP + TN) / (TP + TN + FP + FN)
print(f"Doğruluk (Accuracy): {accuracy:.2f}")

# Hassasiyet (Precision) hesaplama
precision = precision_score(y_true, y_pred)
print(f"Hassasiyet (Precision): {precision:.2f}")

# Duyarlılık (Recall) hesaplama
recall = recall_score(y_true, y_pred)
print(f"Duyarlılık (Recall): {recall:.2f}")

# F1 Skoru hesaplama
f1 = f1_score(y_true, y_pred)
print(f"F1 Skoru: {f1:.2f}")

# Çıktı örneği:
# Karmaşıklık Matrisi:
#  [[4 1]
#  [1 4]]
# TP: 4, TN: 4, FP: 1, FN: 1
# Doğruluk (Accuracy): 0.80
# Hassasiyet (Precision): 0.80
# Duyarlılık (Recall): 0.80
# F1 Skoru: 0.80
        

Yukarıdaki örnekte, modelin tahminlerini ve gerçek değerleri kullanarak Karmaşıklık Matrisi'ni ve diğer metrikleri hesapladık. Gördüğünüz gibi, sklearn.metrics kütüphanesi bu hesaplamaları oldukça basitleştiriyor. Bu metrikleri anlamak ve doğru senaryolarda kullanmak, modelinizin sadece "doğru" olup olmadığını değil, aynı zamanda ne kadar güvenilir ve etkili olduğunu da ortaya koyar. Bir sonraki bölümde, sınıflandırma eşiklerinin ötesine geçerek daha gelişmiş metrikleri ve dengesiz veri kümeleriyle başa çıkma stratejilerini ele alacağız. Bu sayede, modelinizin performansını en ince ayrıntısına kadar değerlendirebilecek donanıma sahip olacaksınız.

Sınıflandırma Eşiklerinin Ötesinde: ROC Eğrisi, AUC ve Dengesiz Veri Kümeleri İçin İleri Metrikler

Sınıflandırma modelleri genellikle bir tahmin olasılığı üretir ve ardından bu olasılığı belirli bir eşik değeriyle (genellikle 0.5) karşılaştırarak nihai bir sınıflandırma kararı verir. Ancak bu eşik değeri sabittir ve çoğu zaman modelin performansının tamamını yansıtmayabilir. Modeli daha derinlemesine anlamak ve farklı eşik değerlerindeki davranışını incelemek için ROC Eğrisi (Receiver Operating Characteristic Curve) ve AUC (Area Under the Curve) gibi daha gelişmiş metrikler kullanırız. Ayrıca, dengesiz veri kümelerinin getirdiği zorlukları aşmak için de özel stratejiler ve metrikler mevcuttur.

ROC Eğrisi ve AUC Değeri: Sınıflandırma Eşiklerinin Ötesine Nasıl Bakarız?

Bir sınıflandırma modelinin çıktısı genellikle bir olasılık değeri olduğundan, bu olasılık değerini hangi eşikte pozitif olarak kabul edeceğimiz önemlidir. Örneğin, 0.5'in üzerindeki bir olasılığı pozitif sınıf olarak kabul edebiliriz. Ancak bu eşik değeri değiştirilirse (örneğin 0.3 veya 0.7), modelin TP, FP, TN ve FN değerleri de değişir. ROC eğrisi, bu eşik değerleri değiştikçe modelin Doğru Pozitif Oranı (True Positive Rate - TPR, yani Recall) ile Yanlış Pozitif Oranı (False Positive Rate - FPR) arasındaki ilişkiyi gösteren bir grafiksel araçtır.

  • Doğru Pozitif Oranı (TPR - Recall / Duyarlılık): Modelin tüm pozitifleri ne kadar iyi yakaladığını gösterir (TP / (TP + FN)). Y ekseninde yer alır.
  • Yanlış Pozitif Oranı (FPR): Modelin tüm negatiflerden ne kadarını yanlışlıkla pozitif olarak işaretlediğini gösterir (FP / (FP + TN)). X ekseninde yer alır.

ROC eğrisi, farklı sınıflandırma eşiklerinde TPR'nin FPR'ye karşı çizilmesiyle oluşur. İdeal bir model, sol üst köşeye (FPR=0, TPR=1) yakın bir eğriye sahip olacaktır, çünkü bu, modelin tüm pozitifleri yakalarken hiçbir yanlış pozitif yapmadığı anlamına gelir. Köşegen üzerindeki düz bir çizgi ise rastgele bir sınıflandırıcıyı temsil eder.

AUC (Area Under the Curve), ROC eğrisinin altında kalan alandır. Bu alanın değeri 0 ile 1 arasında değişir. AUC değeri ne kadar yüksekse (1'e ne kadar yakınsa), modelin pozitif ve negatif sınıfları ayırt etme yeteneği o kadar iyidir. Bir modelin AUC değeri 0.5 ise, modelin rastgele tahmin yapmaktan farkı yoktur. AUC, modelin tüm olası sınıflandırma eşiklerindeki genel performansını özetleyen tek bir sayıdır ve özellikle dengesiz veri kümelerinde doğruluktan çok daha güvenilir bir ölçüttür. Çünkü sınıf dağılımından etkilenmez.

Uzman İpucu: ROC AUC, modelin sınıflandırma eşiğinden bağımsız olarak ne kadar iyi bir ayırıcı olduğunu gösterir. Bu, özellikle klinik teşhis, sahtekarlık tespiti veya reklam tıklama tahmini gibi senaryolarda, farklı eşiklerin farklı iş sonuçları doğurabileceği durumlarda son derece değerlidir.

Dengesiz Veri Kümeleri İçin İleri Metrikler ve Stratejiler

Dengesiz veri kümeleri, makine öğrenimi projelerinde karşılaşılan en büyük zorluklardan biridir. Bir sınıfın diğerinden çok daha az örneğe sahip olması, modelin çoğunluk sınıfına "taraflı" davranmasına ve azınlık sınıfını gözden kaçırmasına neden olabilir. ROC AUC her ne kadar dengesiz veri kümeleri için iyi bir gösterge olsa da, bazen daha spesifik metrikler ve veri dengeleme stratejileri uygulamak gerekebilir.

Ek Değerlendirme Metrikleri:

  • Kappa Skoru (Cohen's Kappa): İki gözlemci (bu durumda gerçek ve tahmin edilen etiketler) arasındaki anlaşmayı, rastgele anlaşmayı da hesaba katarak ölçer. Doğruluktan daha sağlam bir ölçüttür, özellikle dengesiz sınıflarda.
  • Matthews Korelasyon Katsayısı (MCC): Tüm dört karmaşıklık matrisi bileşenini (TP, TN, FP, FN) hesaba katan dengeli bir ölçümdür. -1 ile +1 arasında değişir ve +1 mükemmel tahmini, -1 tamamen yanlış tahmini ve 0 rastgele tahmini gösterir. Dengesiz sınıflarda bile güvenilir sonuçlar verir.
  • Hassasiyet-Duyarlılık Eğrisi (Precision-Recall Curve - PR Curve): Özellikle pozitif sınıfın nadir olduğu (dengesiz) veri kümelerinde ROC eğrisine göre daha bilgilendirici olabilir. Bu eğri, farklı eşiklerde Precision ve Recall arasındaki değişimi gösterir. Yüksek duyarlılık (recall) elde etmek isterken hassasiyetin ne kadar düştüğünü veya tersini görselleştirmeye yardımcı olur.

Dengesiz Veri Kümeleriyle Başa Çıkma Stratejileri:

Modelin sadece metriklerini optimize etmek yerine, veri kümesinin kendisini düzenleyerek de performans artışı sağlayabiliriz.

  1. Yeniden Örnekleme (Resampling):
    • Aşırı Örnekleme (Oversampling): Azınlık sınıfındaki örnekleri çoğaltır. SMOTE (Synthetic Minority Over-sampling Technique) en popüler yöntemlerden biridir; yeni sentetik örnekler oluşturur.
    • Alt Örnekleme (Undersampling): Çoğunluk sınıfındaki örnekleri azaltır. Bu, veri kaybına yol açabilir ancak eğitim süresini hızlandırır.
  2. Sınıf Ağırlıkları (Class Weights): Modelin eğitim sürecinde azınlık sınıfı örneklerine daha fazla ağırlık vermesini sağlar. Bu sayede, model azınlık sınıfını yanlış tahmin ettiğinde daha büyük bir ceza alır ve bu sınıfı öğrenmeye daha fazla odaklanır. Çoğu makine öğrenimi kütüphanesi (Scikit-learn, TensorFlow, PyTorch) bu özelliği sunar.
  3. Özel Algoritmalar: Bazı algoritmalar (örneğin LightGBM, XGBoost) dengesiz veri kümeleriyle daha iyi başa çıkmak için yerleşik mekanizmalara sahiptir.

Yukarıda bahsedilen metrikler ve stratejiler, modelinizin performansını çok daha sağlam ve bağlama duyarlı bir şekilde değerlendirmenizi sağlar. Özellikle kritik kararlar alınan sistemlerde (finans, sağlık, güvenlik), doğru metrikleri seçmek ve dengesiz veri kümelerinin etkilerini yönetmek projenin başarısı için vazgeçilmezdir. İşte bu yüzden, sadece doğruluğa takılıp kalmak yerine, modelin tüm yönlerini kapsayan geniş bir değerlendirme çerçevesi benimsemek gereklidir.


from sklearn.metrics import roc_curve, auc, roc_auc_score, cohen_kappa_score, matthews_corrcoef
import numpy as np
import matplotlib.pyplot as plt # Sadece görselleştirme için, makalede HTML çıktısı isteniyor

# Gerçek etiketler (true labels) ve tahmin olasılıkları (prediction probabilities)
y_true_imbalanced = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1] # 9 negatif, 1 pozitif
y_pred_proba = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 0.95]

# Varsayılan eşik (0.5) ile tahmin edilen etiketler
y_pred_default = [1 if p > 0.5 else 0 for p in y_pred_proba]

# Bu durumda, y_pred_default = [0, 0, 0, 0, 0, 1, 1, 1, 1, 1]
# confusion_matrix(y_true_imbalanced, y_pred_default) -> TN:5, FP:4, FN:0, TP:1
# Accuracy: (5+1)/10 = 0.6 (Yüksek gibi görünse de, 4 yanlış pozitif var!)
# Precision: 1/(1+4) = 0.2
# Recall: 1/(1+0) = 1.0 (Tüm pozitifleri yakalamış!)
# F1-Score: 2 * (0.2 * 1.0) / (0.2 + 1.0) = 0.33

# ROC AUC skoru hesaplama
roc_auc = roc_auc_score(y_true_imbalanced, y_pred_proba)
print(f"ROC AUC Skoru: {roc_auc:.2f}") # Çıktı: Yaklaşık 0.94 - Bu, modelin ayırt etme gücünün yüksek olduğunu gösterir

# Örnek Kappa Skoru ve MCC hesaplama (gerçek etiketler ve ikili tahminler üzerinden)
# y_pred_default = [1 if p > 0.5 else 0 for p in y_pred_proba]
kappa = cohen_kappa_score(y_true_imbalanced, y_pred_default)
mcc = matthews_corrcoef(y_true_imbalanced, y_pred_default)
print(f"Kappa Skoru: {kappa:.2f}") # Düşük çıkacaktır, çünkü dengesizlik var ve varsayılan eşik çok sayıda FP üretiyor
print(f"MCC Skoru: {mcc:.2f}") # Kappa gibi, bu da dengesizliği ve eşiğin olumsuz etkisini yansıtacaktır
        

Yukarıdaki kod bloğu, dengesiz bir veri kümesi üzerinde modelin performansını ROC AUC, Kappa ve MCC skorları ile nasıl değerlendirebileceğimizi göstermektedir. Gördüğünüz gibi, varsayılan bir eşik değeri ile bile ROC AUC değeri oldukça iyi çıkabilirken (modelin potansiyelini gösterir), Kappa ve MCC gibi metrikler mevcut tahmin stratejisinin ne kadar dengeli olduğunu daha net ortaya koyar. Bu, model geliştirme sürecinde sürekli olarak farklı metrikleri göz önünde bulundurmanın ve sınıflandırma eşiği optimizasyonunun ne kadar önemli olduğunu vurgular.

Gerçek Dünya Senaryosu: Kredi Kartı Sahtekarlığı Tespitinde Yanıltıcı Doğruluk ve Doğru Metriklerin Gücü

Şimdiye kadar öğrendiğimiz teorik bilgileri gerçek bir senaryo üzerinden pekiştirelim: Kredi kartı sahtekarlığı tespiti. Bu, makine öğreniminin en yaygın ve zorlu uygulama alanlarından biridir ve doğruluğun neden yanıltıcı olabileceğinin mükemmel bir örneğini sunar. Genellikle, kredi kartı işlemlerinin çok küçük bir yüzdesi (örneğin %0.1 ila %0.5) sahtekarlıktır. Bu, aşırı derecede dengesiz bir veri kümesi anlamına gelir.

Problemin Tanımı: Yüksek Doğruluk, Sıfır Fayda

Diyelim ki bir sahtekarlık tespit modeli geliştirdik. Modelin görevi, yeni bir kredi kartı işleminin sahtekarlık olup olmadığını tahmin etmek. Veri kümemizde 1.000.000 işlem var ve bunlardan sadece 1.000 tanesi (%0.1) sahtekarlık. Eğer bir model her zaman "sahtekarlık değil" tahmini yaparsa, ne olur?

  • Doğru Negatif (TN): 999.000 işlem doğru bir şekilde "sahtekarlık değil" olarak tahmin edilir.
  • Yanlış Negatif (FN): 1.000 sahtekarlık işlemi yanlışlıkla "sahtekarlık değil" olarak tahmin edilir.
  • Doğru Pozitif (TP): 0
  • Yanlış Pozitif (FP): 0

Bu senaryoda, modelin doğruluğu: (999.000 + 0) / 1.000.000 = 0.999 veya %99.9 olacaktır. Harika, değil mi? %99.9 doğruluk! Ancak bu modelin sahtekarlıkları tespit etme yeteneği sıfırdır. Tüm 1.000 sahtekarlık işlemini gözden kaçırmıştır. İşte burada doğruluk bize "yalan söyler". Bu kadar yüksek bir doğruluk oranına rağmen, modelin iş değeri sıfırdır, çünkü ana hedefi olan sahtekarlığı tespit etme görevinde tamamen başarısız olmuştur.

Doğru Metriklerin Gücü: Recall (Duyarlılık) Neden Bu Kadar Önemli?

Sahtekarlık tespitinde, bir sahtekarlık işlemini gözden kaçırmanın (Yanlış Negatif - FN) maliyeti, meşru bir işlemi yanlışlıkla sahtekarlık olarak işaretlemenin (Yanlış Pozitif - FP) maliyetinden çok daha yüksektir. Milyonlarca dolarlık kayıplara yol açabilir. Bu nedenle, sahtekarlık tespitinde birincil hedefimiz, mümkün olduğunca çok sahtekarlık işlemini yakalamak, yani yüksek Duyarlılık (Recall) elde etmektir.

Yüksek duyarlılık, modelin gerçek pozitifleri ne kadar iyi bulduğunu gösterir. Ancak sadece duyarlılığa odaklanmak da yeterli değildir. Aşırı yüksek duyarlılık (örneğin %100) elde etmek için her işlemi "sahtekarlık" olarak işaretleyen bir model, çok sayıda meşru işlemi de sahtekarlık olarak etiketleyebilir (yüksek FP). Bu da müşteri memnuniyetsizliğine, gereksiz güvenlik kontrollerine ve operasyonel maliyetlere yol açar. İşte bu yüzden, duyarlılık ile Hassasiyet (Precision) arasında dengeli bir uzlaşma bulmak kritik öneme sahiptir. Precision, modelin sahtekarlık dediği işlemlerin ne kadarının gerçekten sahtekarlık olduğunu gösterir.

F1 Skoru veya Precision-Recall (PR) Eğrisi, bu dengenin değerlendirilmesi için ideal metriklerdir. Özellikle PR eğrisi, dengesiz veri kümelerinde ROC eğrisinden daha anlamlı olabilir, çünkü sadece pozitif sınıf performansına odaklanır.

Uygulamalı Örnek ve Değerlendirme:

Diyelim ki, geliştirdiğimiz model, 1.000 sahtekarlık işleminden 800'ünü doğru bir şekilde tespit etti (TP=800), ancak bu sırada 2.000 meşru işlemi de yanlışlıkla sahtekarlık olarak işaretledi (FP=2.000). Modelimiz hala 997.000 meşru işlemi doğru olarak belirledi (TN=997.000).

  • TP = 800
  • FN = 1.000 (gerçek sahtekarlık) - 800 (yakalanan sahtekarlık) = 200
  • FP = 2.000
  • TN = 999.000 (gerçek meşru) - 2.000 (yanlış alarm) = 997.000

Bu modelin metrikleri şöyle olacaktır:


# Sahtekarlık Tespit Senaryosu
TP_fraud = 800
FN_fraud = 200
FP_fraud = 2000
TN_fraud = 997000

accuracy_fraud = (TP_fraud + TN_fraud) / (TP_fraud + TN_fraud + FP_fraud + FN_fraud)
precision_fraud = TP_fraud / (TP_fraud + FP_fraud)
recall_fraud = TP_fraud / (TP_fraud + FN_fraud)
f1_fraud = 2 * (precision_fraud * recall_fraud) / (precision_fraud + recall_fraud)

print(f"Sahtekarlık Tespit Modeli Metrikleri:")
print(f"Doğruluk (Accuracy): {accuracy_fraud:.4f}") # 0.9978 (hala yüksek!)
print(f"Hassasiyet (Precision): {precision_fraud:.4f}") # 0.2857 (düşük)
print(f"Duyarlılık (Recall): {recall_fraud:.4f}") # 0.8000 (yüksek)
print(f"F1 Skoru: {f1_fraud:.4f}") # 0.4211
        

Bu modelin doğruluğu %99.78'dir, yine oldukça yüksek görünmektedir. Ancak, hassasiyet sadece %28.57 iken duyarlılık %80'dir. Bu bize ne anlatır? Model, sahtekarlıkların büyük bir kısmını yakalamayı başarırken (yüksek duyarlılık), her 100 sahtekarlık tahmininden sadece yaklaşık 28'i gerçekten sahtekarlıktır (düşük hassasiyet). Kalan 72 tahmin ise yanlış alarmdır. İşletme açısından, %80 duyarlılık (sahtekarlıkların çoğunu yakalamak) çok önemlidir. %28.57'lik hassasiyet ise, her tespit edilen sahtekarlık için 3-4 meşru işlemin incelenmesi gerektiği anlamına gelir ki bu da kabul edilebilir bir operasyonel maliyet olabilir. Bu metrikler bize, modelin gerçek dünyadaki etkileri hakkında doğruluğun asla veremeyeceği kadar değerli bilgiler sunar.

Uzman İpucu: Sahtekarlık tespit sistemlerinde, modelin eşik değerini ayarlamak, hassasiyet ve duyarlılık arasındaki dengeyi yönetmenin güçlü bir yoludur. Daha düşük bir eşik, daha fazla sahtekarlık yakalayabilir (yüksek recall) ancak daha fazla yanlış alarma yol açar (düşük precision). İş gereksinimlerine göre bu eşiği optimize etmek, modelin ticari başarısı için kritik öneme sahiptir.

Web Tabanlı Makine Öğrenimi Uygulamalarında Metrikleri Sunarken Mobil Deneyim Nasıl Önem Kazanır?

Bu tür karmaşık metriklerin ve performans analizlerinin sunulduğu web tabanlı bir gösterge paneli (dashboard) geliştirirken, kullanıcı deneyimini, özellikle de mobil uyumluluğu göz ardı etmemek gerekir. Bir veri bilimci veya iş analisti, modelin performansını her yerden, her cihazdan izleyebilmelidir. Karmaşıklık matrisleri, ROC eğrileri veya metrik tabloları gibi yoğun görsel ve sayısal veriler, küçük mobil ekranlarda okunması ve yorumlanması zor olabilir.

Bu nedenle, metrikleri sunarken duyarlı tasarım ilkelerine uymak esastır. Örneğin, büyük bir tabloyu mobil cihazlarda daha iyi görüntülemek için CSS medya sorguları kullanılarak kolonların gizlenmesi, yığılması veya sadece en kritik bilgilerin gösterilmesi sağlanabilir. Grafikler için etkileşimli kütüphaneler (örneğin Plotly.js, Chart.js) kullanılabilir, böylece kullanıcılar verileri yakınlaştırabilir veya belirli bölümler üzerinde detay görebilir.


/* Genel tablo stilini tanımla */
table {
  width: 100%;
  border-collapse: collapse;
  margin-bottom: 1em;
}

th, td {
  border: 1px solid #ddd;
  padding: 8px;
  text-align: left;
}

/* Küçük ekranlar için medya sorgusu */
@media screen and (max-width: 600px) {
  table, thead, tbody, th, td, tr {
    display: block; /* Tablo elemanlarını blok olarak göster */
  }

  thead tr {
    position: absolute; /* Başlık satırını gizle */
    top: -9999px;
    left: -9999px;
  }

  tr {
    border: 1px solid #ccc; /* Her satıra çerçeve ekle */
    margin-bottom: 10px;
  }

  td {
    border: none; /* Hücre çerçevelerini kaldır */
    border-bottom: 1px solid #eee;
    position: relative;
    padding-left: 50%; /* Etiket için yer aç */
    text-align: right;
  }

  td:before {
    /* Özel veri nitelikleri kullanarak etiketleri göster */
    position: absolute;
    top: 6px;
    left: 6px;
    width: 45%;
    padding-right: 10px;
    white-space: nowrap;
    content: attr(data-label); /* data-label niteliğindeki değeri etiket olarak kullan */
    font-weight: bold;
    text-align: left;
  }
}
        

Yukarıdaki CSS medya sorgusu örneği, bir HTML tablosunun mobil ekranlarda nasıl daha okunabilir hale getirilebileceğini gösterir. Bu tür duyarlı yaklaşımlar, karmaşık makine öğrenimi metriklerinin farklı cihazlarda bile anlamlı ve erişilebilir kalmasını sağlar, böylece iş kararları daha hızlı ve doğru bir şekilde alınabilir. Bu sadece kullanıcı deneyimini artırmakla kalmaz, aynı zamanda modelin iş değerini de yükseltir.

Sonuç: Makine Öğrenimi Projelerinizde Doğru Metrikleri Seçmenin Önemi ve Sıkça Sorulan Sorular

Makine öğrenimi modellerini değerlendirme yolculuğumuzun dördüncü bölümünde, doğruluğun neden tek başına yeterli olmadığını ve gerçek dünyadaki zorlu senaryolarda bizi nasıl yanıltabileceğini ayrıntılı olarak ele aldık. Gördük ki, özellikle dengesiz veri kümeleriyle karşı karşıya kaldığımızda, sadece doğruluğa güvenmek, bir projenin başarısızlıkla sonuçlanmasına neden olabilecek kritik hataları gizleyebilir. Karmaşıklık Matrisi'nin temelini oluşturan TP, TN, FP, FN kavramlarından yola çıkarak Hassasiyet (Precision), Duyarlılık (Recall) ve F1 Skoru gibi metriklerin ne anlama geldiğini, hangi durumlarda hangisinin daha önemli olduğunu ve aralarındaki dengeyi nasıl kuracağımızı öğrendik.

Ayrıca, modelin sınıflandırma eşiğinden bağımsız performansını gösteren ROC Eğrisi ve AUC gibi ileri düzey metrikleri inceledik. Kredi kartı sahtekarlığı tespiti gibi gerçek dünya vaka analizleri, bu metriklerin pratik değerini ve iş hedefleriyle nasıl ilişkilendirileceğini açıkça ortaya koydu. Mobil uyumluluk gibi operasyonel konulara da değinerek, model değerlendirme sonuçlarının farklı platformlarda nasıl etkili bir şekilde sunulabileceğine dair ipuçları verdik. Unutulmamalıdır ki, en iyi metrik, projenizin bağlamına, iş hedeflerine ve yanlış tahminlerin potansiyel maliyetlerine en uygun olan metriktir. Bu nedenle, modelinizi değerlendirirken kapsamlı bir bakış açısı benimsemek ve doğru kararlar almak için birden fazla metriği birlikte yorumlamak hayati önem taşır.

Sıkça Sorulan Sorular

1. Doğruluk her zaman kötü bir metrik midir?
Hayır, doğruluk her zaman kötü bir metrik değildir. Sınıf dağılımının dengeli olduğu ve yanlış pozitif ile yanlış negatif maliyetlerinin benzer olduğu durumlarda doğruluk, modelin genel performansını iyi bir şekilde özetleyebilir. Ancak dengesiz veri kümelerinde veya belirli hata türlerinin (FP/FN) daha maliyetli olduğu durumlarda yetersiz kalır.
2. Hangi metriği seçeceğime nasıl karar vermeliyim?
Metrik seçimi, projenizin spesifik hedeflerine ve yanlış tahminlerin (FP/FN) işinize olan maliyetine bağlıdır. Örneğin, tıbbi teşhislerde (hastalığı kaçırmanın maliyeti yüksek) duyarlılık (recall) daha önemliyken, spam tespitinde (meşru e-postayı yanlış işaretlemenin maliyeti yüksek) hassasiyet (precision) daha kritik olabilir. Dengeli bir görünüm için F1 skoru veya ROC AUC tercih edilebilir.
3. Dengesiz veri kümesini dengelemek için hangi yöntemleri kullanmalıyım?
Dengesiz veri kümelerini dengelemek için aşırı örnekleme (oversampling, örneğin SMOTE), alt örnekleme (undersampling) veya modelin eğitiminde sınıf ağırlıkları (class weights) kullanma gibi yöntemleri düşünebilirsiniz. Her yöntemin avantajları ve dezavantajları vardır, bu yüzden veri kümenize ve modelinize en uygun olanı bulmak için deneme yapmanız önerilir.
4. ROC AUC skoru 0.5 ise ne anlama gelir?
Bir modelin ROC AUC skoru 0.5 ise, bu modelin rastgele tahmin yapmaktan daha iyi performans göstermediği anlamına gelir. Yani, modelin pozitif ve negatif sınıfları ayırt etme yeteneği neredeyse hiç yoktur.
5. Metriklerimi mobil bir uygulamada veya web sitesinde nasıl etkili bir şekilde sunabilirim?
Mobil uyumlu (responsive) tasarım ilkeleri kullanarak metriklerinizi sunmalısınız. Büyük tabloları küçük ekranlar için yeniden düzenlemek (örneğin kolonları gizlemek veya yığmak için CSS medya sorguları kullanmak) ve etkileşimli grafikler (zoom, tooltip gibi özelliklerle) kullanmak, verilerin farklı cihazlarda daha anlamlı ve erişilebilir olmasını sağlar.


Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.