%98 doğruluğa sahip bir makine öğrenimi modeli etkileyici görünüyor–peki gerçekten öyle mi? Dolandırıcılık veya hastalık gibi nadir olaylarla uğraşırken doğruluk çoğu zaman sahte bir güven hissi yaratır.
İşte bu noktada precision ve recall devreye girer. Bu yazıda, bu iki metriğin basit doğruluğun ötesine geçerek yalnızca ne sıklıkla doğru olduğunuzu değil, tam olarak nasıl yanıldığınızı da nasıl ölçtüğüne bakacağız.
Teorinin ötesine geçip sınıflandırmada ustalaşmak istiyorsanız, Python ile Dolandırıcılık Tespiti kursu mükemmel bir sonraki adımdır.
Neden Doğruluk Yeterli Değil
Çoğu durumda, belirli bir etiketin tahmin başarısını ölçmek için doğal metrik doğruluktur. Doğru tahmin edilen örneklerin sayısı toplam gözlem sayısına bölünerek hesaplanır.
Genel olarak, bir model doğru etiketi yüksek doğrulukla tutarlı biçimde belirliyorsa iyi çalışıyor demektir. Ancak, bir sınıfın diğerine göre çok daha fazla örnek içerdiği dengesiz veri kümeleri doğruluğu çarpıtır. Bu tür veri kümeleri dolandırıcılık tespiti veya hastalık teşhisinde yaygındır.
Diyelim ki bir model, dolandırıcılığı %98 doğrulukla sınıflandırıyor. İlk bakışta harika görünüyor. Peki ya dolandırıcılık veri kümesindeki işlemlerin sadece %2’sini oluşturuyorsa? Bu durumda, bir model her seferinde "dolandırıcılık değil" dese yine de %98 doğruluğa ulaşır ama tek bir dolandırıcılığı bile yakalayamaz; bu da istediğimiz şey değildir.
Açıkça görülüyor ki bu tür durumlar daha incelikli metrikler gerektirir. Yaygın olarak kullanılan iki metrik precision ve recall’dır.
Precision ve Recall Nedir?
Kısa versiyonu şu şekilde:
Precision (Kalite): Pozitif tahminlerinizin ne kadar güvenilir olduğunu ölçer. Model "dolandırıcılık" diyorsa, gerçekten dolandırıcılık mı?
Recall (Miktar): Gerçek pozitif vakaları ne kadar iyi yakaladığınızı ölçer. Model tüm dolandırıcılıkları yakaladı mı, yoksa bazıları gözden kaçtı mı?
Bu metriklerin nasıl hesaplandığını anlamak için önce karmaşıklık matrisi (confusion matrix) terminolojisini tanımlamamız gerekiyor.
Gerçek pozitif, yanlış pozitif ve negatifler
Dolandırıcı kredi kartı işlemlerini tespit etmek için bir makine öğrenimi modeli kullanan bir kredi kartı şirketini düşünün. 10.000 işlemden oluşan bir örneklemde 9.800 meşru işlem ve 200 dolandırıcılık vakası olduğunu varsayalım.
Modelin etkinliğini ölçmek için "dolandırıcılık" veya "dolandırıcılık değil" etiketlerinden birini pozitif, diğerini negatif vaka olarak belirleyin. İlgi odağı dolandırıcılık olduğundan, bunları "pozitif" vakalar olarak etiketleyin. (Bu elbette dolandırıcılığın etik açıdan olumlu olduğu anlamına gelmez; “pozitif” etiketi sadece hangi vakayla ilgilendiğimizi belirtir.)
Model çalıştırıldığında, örneğin %70 olasılık eşiğinin üzerindeki risk skoruna sahip işlemler dolandırıcılık olarak kabul edilir. Dolandırıcılık olduğu tahmin edilen vakalar, gerçekte dolandırıcılık olanlarla karşılaştırılır.
Bu verileri netleştirmek için aşağıdaki adlandırmayı kullanırız.
Gerçek pozitifler (TP): 160 dolandırıcılık vakası doğru şekilde dolandırıcılık olarak tahmin edildi.
Gerçek negatifler (TN): 9500 vaka doğru şekilde dolandırıcılık değil olarak tanımlandı.
Yanlış pozitifler (FP): 300 vaka yanlışlıkla dolandırıcılık olarak işaretlendi.
Yanlış negatifler (FN): 40 vaka yanlışlıkla dolandırıcılık değil olarak işaretlendi.
İkinci harf (P veya N) tahminin pozitif mi negatif mi olduğunu, ilk harf ise bu tahminin doğru (T) mu yanlış (F) mı olduğunu gösterir.
"Yanlış pozitif", sistemin vakayı pozitif olarak tahmin ettiği ancak gerçekte negatif olduğu anlamına gelir. Örneğin, yanlış negatif, negatif olarak tahmin edilen ancak gerçekte pozitif olan bir vakadır.
Karmaşıklık matrisi
Tüm bu bilgiler genellikle, modelin yanlış tahminleri gerçek sonuçlarla (FN, FP) ne sıklıkla karıştırdığını izleyen karmaşıklık matrisi adı verilen tabloda gösterilir. Karmaşıklık matrisi, modelin neyi tahmin ettiğini ve gerçekte ne olduğunu ayırt etmemize yardımcı olur. Örneğimizin karmaşıklık matrisi şu şekildedir:
Gerçek dolandırıcılık (gerçek pozitif)
Gerçek meşru (gerçek negatif)
Tahmin edilen dolandırıcılık (tahmin edilen pozitif)
160 (TP)
300 (FP)
Tahmin edilen meşru (tahmin edilen negatif)
40 (FN)
9500 (TN)
Şimdi satır ve sütun toplamlarına bakalım. Satır toplamları toplam tahmin edilen vakaları, sütun toplamları ise toplam gerçekleri gösterir.
Gerçek dolandırıcılık (gerçek pozitif)
Gerçek meşru (gerçek negatif)
Tahmin edilen dolandırıcılık (tahmin edilen pozitif)
160 (TP)
300 (FP)
460 (TP + FP) Toplam tahmin edilen pozitif
Tahmin edilen meşru (tahmin edilen negatif)
40 (FN)
9500 (TN)
9540 (FN + TN) Toplam tahmin edilen negatif
200 (TP + FN) Toplam gerçek pozitif
9800 (FP + TN) Toplam gerçek negatif
10.000
Bu toplamlar neyi ifade ediyor?
İlk satır toplamı (460), toplam tahmin edilen dolandırıcılık vakalarını (TP + FP) gösterir.
İkinci satır toplamı (9.540), toplam tahmin edilen meşru vakaları (FN + TN) gösterir.
İlk sütun toplamı (200), toplam gerçek dolandırıcılık vakalarını (TP + FN) gösterir.
İkinci sütun toplamı (9.800), toplam gerçek meşru vakaları (FP + TN) gösterir.
Genel toplam (10.000), örneklemimizin toplam büyüklüğüne eşittir.
Precision nedir?
Precision pozitif tahminlerinizin kalitesini ölçer. Pozitif olduğu tahmin edilen vakaların kaçının gerçekte pozitif olduğunu gösterir.
Keskin bir model, çok az sayıda yalancı alarm verir. Model bir şeyin doğru olduğunu söylüyorsa, büyük olasılıkla doğrudur. Örneğin, bir çevrim içi oyun birini hile nedeniyle yasaklıyorsa, bunun doğru olması gerekir. Çok fazla haksız yasak, meşru kullanıcıları uzaklaştırır ve olumsuz yorumlara yol açar.
Yukarıda incelediğimiz terminolojide precision, gerçek pozitiflerin tahmin edilen pozitiflere oranına eşittir.
Yukarıdaki örnekte precision 160/460, yani yaklaşık %34,8’dir.
Recall nedir?
Recall kapsama alanını ölçer. Gerçek pozitiflerin kaçının bu şekilde tahmin edildiğini gösterir. Gerçek pozitiflerin toplamına göre gerçek pozitiflerin oranı olarak tanımlanır.
İlk takip için kanser teşhislerini düşünün. Aşırı teşhis etmek mi, yoksa eksik teşhis etmek mi daha iyidir? Çoğu kişi ilkine katılacaktır.
Erken taramada yalancı alarm almak sarsıcı olabilir. Ancak gerçekte kanser varken yok denmesi felaket olabilir; özellikle de hayat kurtarıcı bir tedaviyi kaçırabileceğiniz düşünüldüğünde.
Yukarıdaki örnekte recall 160/200, yani %80’dir.
Precision ve Recall Arasındaki Ödünleşme
Precision ile recall arasında çekişmeli bir ilişki vardır. Genellikle precision arttıkça recall düşer ve tersi de geçerlidir.
Nedenini görmek için dolandırıcılık örneğine geri dönelim.
Dolandırıcılıkların çoğu yakalandı, ancak çok sayıda yanlış pozitif vardı. Diyelim ki müşteri şikâyetleri nedeniyle yönetim karar eşiğini 0,7’den 0,8’e çıkardı. Bir işlemin dolandırıcılık olarak işaretlenmesi için artık 0,7 yerine en az 0,8 puan alması gerekiyor.
Bu, modeli daha muhafazakâr yaptı. Daha az sıklıkla dolandırıcılık tahmini yaptı. Yanlışlıkla dolandırıcılık olarak işaretlenen işlem sayısı azaldı ancak bunun bedeli, bazı gerçek dolandırıcılık vakalarının kaçması oldu. Eşik değiştikten sonra yanlış pozitifler 300’den 60’a düştü, ancak yanlış negatifler 40’tan 80’e çıktı.
Yeni modelin karmaşıklık matrisi şu şekildedir:
Gerçek dolandırıcılık (gerçek pozitif)
Gerçek meşru (gerçek negatif)
Tahmin edilen dolandırıcılık (tahmin edilen pozitif)
120 (TP)
60 (FP)
180 (TP + FP) Toplam tahmin edilen pozitif
Tahmin edilen meşru (tahmin edilen negatif)
80 (FN)
9740 (TN)
9820 (FN + TN) Toplam tahmin edilen negatif
200 (TP + FN) Toplam gerçek pozitif
9800 (FP + TN) Toplam gerçek negatif
10.000
Görüldüğü gibi, tahmin edilen 180 dolandırıcılık vakasının 120’si gerçekten dolandırıcılık, dolayısıyla precision %34,8’den %66,7’ye yükseldi.
Bu artan precision’ın bedeli ise düşen recall oldu: 200 dolandırıcılık vakasının 120’si bu şekilde tahmin edildi; bu da recall’ın %80’den %60’a düştüğü anlamına gelir.
Model artık genel olarak daha az dolandırıcılık yakalıyor, ancak dolandırıcılığı işaretlediğinde çok daha emin oluyor. Bu da her iki metriği dengelemenin önemini gösteriyor; buna birazdan değineceğiz.
Precision-recall eğrisi
Precision ve recall arasındaki ödünleşmeyi görselleştirmek için veri bilimciler Precision-Recall (PR) eğrisini kullanır.
Bu grafik, her olası karar eşiği (0’dan 1’e) için y ekseninde precision’ı ve x ekseninde recall’ı çizer. Eşiği düşürerek daha fazla pozitif vakayı yakaladıkça (recall artar), kaçınılmaz olarak daha fazla yalancı alarm verir (precision düşer).
“Mükemmel” model sağ üst köşeye (precision ve recall %100) ulaşır, ancak gerçekte, bu eğri üzerinde iş gereksinimlerinize uyan bir nokta seçmelisiniz.
Dolandırıcılık örneğimizde, model her işlem için bir dolandırıcılık skoru üretir. Bir işlemin skoru eşik değerine en az eşitse dolandırıcılık olarak işaretlenir. Eşiği düşürdükçe daha fazla tahmin edilen pozitif elde ederiz; bu genellikle daha fazla gerçek pozitifi yakalar (recall artar) ancak daha fazla yalancı alarma da yol açar (precision düşer).
Tüm bunlar pratikte nasıl görünebilir bakalım. Şirketinizin günde 10.000 işlem işlediğini varsayalım. Dolandırıcılık oranı %2 tahmin edildiğine göre, günde 200 dolandırıcılık işlemi bekliyorsunuz. Ayrıca, dolandırıcılık operasyon ekibinin günde 200 işaretli işlemi (tahmin edilen pozitif) inceleyebildiğini varsayalım.
Birkaç eşiği değerlendiriyor ve şu sonuçları buluyorsunuz:
0,9 eşiğinde 100 tahmin edilen pozitif vardır; precision 0,8’dir (80 gerçek dolandırıcılık, 20 yalancı alarm) ve recall 0,4’tür (200 dolandırıcılık vakasının 80’ini yakalarsınız). Günlük 200 inceleme kapasiteniz varken yalnızca 100 vaka işaretlediğiniz için kapasiteyi eksik kullanıyorsunuz.
0,5 eşiğinde 500 tahmin edilen pozitif vardır; precision 0,35’tir (175 gerçek dolandırıcılık, 325 yalancı alarm) ve recall 0,875’tir (200 vakadan 175’ini yakalarsınız). Bu eşikte kapasitenin üzerindesiniz; çünkü işaretlenen 500 vakayı inceleyemezsiniz.
0,7 eşiğinde 200 tahmin edilen pozitif vardır; precision 0,6’dır (120 gerçek dolandırıcılık, 80 yalancı alarm) ve recall 0,6’dır (200 vakadan 120’sini yakalarsınız). Muhtemelen bu eşiği kullanacaksınız; çünkü tam kapasiteyi kullanırken makul bir recall olan 0,6’yı da elde ediyorsunuz.
Eğri, belirli bir recall oranında hangi precision’ı “satın alabileceğinizi” (veya tersini) gösterir.
Precision ve Recall Ne Zaman Kullanılır
Precision ve recall arasındaki ödünleşme nedeniyle doğru metrik, özel kullanım durumunuza bağlıdır.
Precision ne zaman kullanılmalı
Precision ile yanlış pozitifler arasında ters bir ilişki vardır. Bu nedenle, keskin bir model gerçek pozitiflerle yanlış pozitifleri doğru biçimde ayırt eder. Güvenilirdir.
Yanlış pozitifin maliyeti yüksek olduğunda precision’ı optimize edin. Örnekler:
Geri döndürülemez işlemler: Otomatik adalet veya hesap yasaklama sistemleri. Masum birini suçlamak ya da bir kullanıcının hesabını model hatası (Yanlış Pozitif) nedeniyle kalıcı olarak silmek telafisi mümkün olmayan zarar verir.
Yüksek maliyetli müdahaleler: Petrol sondajı veya bir fabrika montaj hattını durdurmak. Pozitif bir tahmine göre harekete geçmenin milyonlarca dolara mal olduğu durumlarda, ilerlemeden önce tahminin doğru olduğundan emin olmanız gerekir.
Spam filtreleme: E-posta gelen kutuları. Bir spam e-postayı görmek (Yanlış Negatif) can sıkıcıdır, ancak önemli bir iş teklifinin gereksiz klasöre gitmesi (Yanlış Pozitif) kabul edilemez.
Recall ne zaman kullanılmalı
Benzer şekilde, recall ile yanlış negatifler arasında da ters bir ilişki vardır. Çok sayıda yanlış negatif düşük recall’a yol açar. Buna göre, recall’ı yüksek bir model gerçek pozitiflerle yanlış negatifleri doğru biçimde ayırt eder. Güvenlidir.
Gerçek bir vakayı kaçırmamak, yalancı alarmları kabullenmekten daha önemliyse, precision yerine recall’ı önceliklendirmelisiniz. Örnek kullanım durumları:
Tıbbi güvenlik: Hastalık taraması (ör. kanser veya sepsis). Hasta birini kaçırmak ölümcül olabilir; yalancı alarm ise ek testlere yol açar ve katlanılabilir bir maliyettir.
Siber güvenlik: Kötü amaçlı yazılım tespiti veya ağ ihlali. Birkaç masum oturum açmanın şüpheli olarak işaretlenmesi, tek bir korsanın sistemde fark edilmeden ilerlemesinden daha iyidir.
Üretim kalitesi: Hata tespiti. Arızalı bir ürünü göndermek (Yanlış Negatif) güvenlik sorumlulukları ve itibar kaybı yaratır; bu yüzden birkaç sınırdaki ürünü elemek, kötü birinin geçmesine izin vermekten daha iyidir.
Precision ve Recall’ı Dengelemek için F1 Skoru
Bir modeli precision’a mı recall’a mı göre optimize edeceğinizden emin değilseniz ya da her ikisini de dikkate almak istiyorsanız F1 skoruna bakabilirsiniz.
F1 Skoru precision ve recall’ın harmonik ortalaması olarak tanımlanır; iki metrik arasında denge hedeflediğinizde kullanılır.
Precision ve recall eşitse, F1 skoru da bu değere eşittir. Ancak ikisinden biri sıfıra yaklaşırsa, F1 de çok düşük olur.
Yukarıdaki örnekte precision %66,7 ve recall %60’tır. Yukarıda belirtilen formülü kullanarak yaklaşık %63,2’lik bir F1 skoru elde ederiz:
Aşağıdaki tablo F1 skorunu doğruluk, precision ve recall ile karşılaştırır.
Metrik
Cevapladığı soru
Bu metrik ne zaman optimize edilir
Örnekler
Doğruluk
"Genel olarak ne sıklıkla doğruyuz?"
Sınıflar dengeli ve FP ile FN maliyetleri benzer.
Rakam sınıflandırma.
Precision
"Tahmin edilen pozitiflerin ne kadarında doğruyuz?"
Yanlış pozitifler pahalı, cezalandırıcı ya da müşteri acısı yaratıyor.
Python’da precision, recall ve F1 skorunu hesaplamanın birçok yolu vardır. Aşağıda iki yaklaşım sunacağım: formülleri doğrudan uygulamak ve scikit-learn paketindeki hazır fonksiyonları kullanmak.
Formülleri kullanarak precision ve recall hesaplama
Karmaşıklık matrisinin sayılarını biliyorsanız, yukarıda sunulan formülleri kullanarak metrikleri kolayca hesaplayabilirsiniz.
Bu kodun çıktısı, önceki hesaplamalarımızla tutarlıdır.
scikit-learn kullanarak precision ve recall hesaplama
Metri̇kleri verinin kendisinden hesaplamak için scikit-learn kütüphanesini de kullanabilirsiniz. Aşağıdaki örnekte y_true ve y_predicted’ı simüle ediyoruz. Ardından precision_score(y_true, y_false) yöntemiyle precision’ı hesaplıyoruz. Recall ve F1 skorunu da benzer şekilde hesaplıyoruz. Son olarak sonuçları yazdırıyoruz.
import numpy as np
from sklearn.metrics import precision_score, recall_score, f1_score
# Simulate Data (y_true and y_pred)
TP, FP, FN, TN =120,60,80,9740
y_true = np.array(TP *[1]+ FP *[0]+ FN *[1]+ TN *[0])
y_pred = np.array(TP *[1]+ FP *[1]+ FN *[0]+ TN *[0])# Compute metrics with scikit-learn
precision = precision_score(y_true, y_pred, zero_division=0)
recall = recall_score(y_true, y_pred, zero_division=0)
f1 = f1_score(y_true, y_pred, zero_division=0)# Print aligned output using f-strings (no manual spaces, no colon)print(f"{'Precision':<10}{precision:.1%}")print(f"{'Recall':<10}{recall:.1%}")print(f"{'F1':<10}{f1:.1%}")Altyapı:
Beklendiği gibi, bu sayılar önceki hesaplamalarımızla örtüşüyor.
Sonuç
Doğruluk iyi bir başlangıç noktası olsa da çoğu zaman bir modelin neden başarısız olduğunu anlamak için gereken ayrıntıları gizler. Precision ve recall, yalancı alarmlar ile kaçırılan tespitler arasındaki ödünleşmeye bakmanızı sağlayarak daha net bir resim sunar.
Sonuçta doğru metriği seçmek sadece bir matematik problemi değildir; sisteminizin hangi tür hatayı göze alabileceğine dair pratik bir karardır.
Precision, pozitif tahminlerinizin kalitesini ölçer. Pozitif olduğu tahmin edilen vakaların kaçının gerçekte pozitif olduğunu söyler ve gerçek pozitiflerin tahmin edilen pozitiflere oranı olarak tanımlanır.
Recall kapsama alanını ölçer. Gerçek pozitiflerin kaçının bu şekilde tahmin edildiğini gösterir. Gerçek pozitiflerin toplamına göre gerçek pozitiflerin oranı olarak tanımlanır.
Yanlış pozitifleri azaltmak için hangi metriği optimize etmeliyim?⌄
Precision. Düşük precision, modelin pozitif olmayan çok fazla öğeyi pozitif olarak işaretlediğini gösterir.
Yanlış negatifleri azaltmak için hangi metriği optimize etmeliyim?⌄
Recall. Düşük recall, gerçek pozitiflerin gözden kaçtığını gösterir.
Tıbbi bir teşhiste hangi metrik daha önemlidir?⌄
Recall. Daha az kaçırılan teşhis uğruna bazı yalancı alarmlar tolere edilebilir.
Bir spam filtresinde hangi metrik daha önemlidir?⌄
Precision. Bir spam e-postanın yanlış sınıflandırılması can sıkıcıdır, ancak önemli bir e-postanın kaybolması kabul edilemez.
Mark Pedigo, PhD, sağlık verisi bilimi, programlama ve eğitim alanlarında uzmanlığa sahip seçkin bir veri bilimcisidir. Matematikte doktora, Bilgisayar Biliminde lisans ve Yapay Zekâ alanında Profesyonel Sertifika sahibi olan Mark, teknik bilgisini pratik problem çözme becerileriyle birleştirir. Kariyeri, dolandırıcılık tespiti, bebek ölümü tahmini ve finansal öngörü gibi rollerin yanı sıra NASA’nın maliyet tahmin yazılımına katkıları içerir. Bir eğitimci olarak DataCamp ve St. Louis’teki Washington University’de ders vermiş ve kıdemsiz programcılara mentorluk yapmıştır. Boş zamanlarında Mark, eşi Mandy ve köpeği Harley ile Minnesota’nın doğasında vakit geçirmeyi ve caz piyano çalmayı sever.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
%98 doğruluğa sahip bir makine öğrenimi modeli etkileyici görünüyor–peki gerçekten öyle mi? Dolandırıcılık veya hastalık gibi nadir olaylarla uğraşırken doğruluk çoğu zaman sahte bir güven hissi yaratır.
İşte bu noktada precision ve recall devreye girer. Bu yazıda, bu iki metriğin basit doğruluğun ötesine geçerek yalnızca ne sıklıkla doğru olduğunuzu değil, tam olarak nasıl yanıldığınızı da nasıl ölçtüğüne bakacağız.
Teorinin ötesine geçip sınıflandırmada ustalaşmak istiyorsanız, Python ile Dolandırıcılık Tespiti kursu mükemmel bir sonraki adımdır.
Neden Doğruluk Yeterli Değil
Çoğu durumda, belirli bir etiketin tahmin başarısını ölçmek için doğal metrik doğruluktur. Doğru tahmin edilen örneklerin sayısı toplam gözlem sayısına bölünerek hesaplanır.
Genel olarak, bir model doğru etiketi yüksek doğrulukla tutarlı biçimde belirliyorsa iyi çalışıyor demektir. Ancak, bir sınıfın diğerine göre çok daha fazla örnek içerdiği dengesiz veri kümeleri doğruluğu çarpıtır. Bu tür veri kümeleri dolandırıcılık tespiti veya hastalık teşhisinde yaygındır.
Diyelim ki bir model, dolandırıcılığı %98 doğrulukla sınıflandırıyor. İlk bakışta harika görünüyor. Peki ya dolandırıcılık veri kümesindeki işlemlerin sadece %2’sini oluşturuyorsa? Bu durumda, bir model her seferinde "dolandırıcılık değil" dese yine de %98 doğruluğa ulaşır ama tek bir dolandırıcılığı bile yakalayamaz; bu da istediğimiz şey değildir.
Açıkça görülüyor ki bu tür durumlar daha incelikli metrikler gerektirir. Yaygın olarak kullanılan iki metrik precision ve recall’dır.
Precision ve Recall Nedir?
Kısa versiyonu şu şekilde:
Bu metriklerin nasıl hesaplandığını anlamak için önce karmaşıklık matrisi (confusion matrix) terminolojisini tanımlamamız gerekiyor.
Gerçek pozitif, yanlış pozitif ve negatifler
Dolandırıcı kredi kartı işlemlerini tespit etmek için bir makine öğrenimi modeli kullanan bir kredi kartı şirketini düşünün. 10.000 işlemden oluşan bir örneklemde 9.800 meşru işlem ve 200 dolandırıcılık vakası olduğunu varsayalım.
Modelin etkinliğini ölçmek için "dolandırıcılık" veya "dolandırıcılık değil" etiketlerinden birini pozitif, diğerini negatif vaka olarak belirleyin. İlgi odağı dolandırıcılık olduğundan, bunları "pozitif" vakalar olarak etiketleyin. (Bu elbette dolandırıcılığın etik açıdan olumlu olduğu anlamına gelmez; “pozitif” etiketi sadece hangi vakayla ilgilendiğimizi belirtir.)
Model çalıştırıldığında, örneğin %70 olasılık eşiğinin üzerindeki risk skoruna sahip işlemler dolandırıcılık olarak kabul edilir. Dolandırıcılık olduğu tahmin edilen vakalar, gerçekte dolandırıcılık olanlarla karşılaştırılır.
Bu verileri netleştirmek için aşağıdaki adlandırmayı kullanırız.
İkinci harf (P veya N) tahminin pozitif mi negatif mi olduğunu, ilk harf ise bu tahminin doğru (T) mu yanlış (F) mı olduğunu gösterir.
"Yanlış pozitif", sistemin vakayı pozitif olarak tahmin ettiği ancak gerçekte negatif olduğu anlamına gelir. Örneğin, yanlış negatif, negatif olarak tahmin edilen ancak gerçekte pozitif olan bir vakadır.
Karmaşıklık matrisi
Tüm bu bilgiler genellikle, modelin yanlış tahminleri gerçek sonuçlarla (FN, FP) ne sıklıkla karıştırdığını izleyen karmaşıklık matrisi adı verilen tabloda gösterilir. Karmaşıklık matrisi, modelin neyi tahmin ettiğini ve gerçekte ne olduğunu ayırt etmemize yardımcı olur. Örneğimizin karmaşıklık matrisi şu şekildedir:
Gerçek dolandırıcılık (gerçek pozitif)
Gerçek meşru (gerçek negatif)
Tahmin edilen dolandırıcılık (tahmin edilen pozitif)
160 (TP)
300 (FP)
Tahmin edilen meşru (tahmin edilen negatif)
40 (FN)
9500 (TN)
Şimdi satır ve sütun toplamlarına bakalım. Satır toplamları toplam tahmin edilen vakaları, sütun toplamları ise toplam gerçekleri gösterir.
Gerçek dolandırıcılık (gerçek pozitif)
Gerçek meşru (gerçek negatif)
Tahmin edilen dolandırıcılık (tahmin edilen pozitif)
160 (TP)
300 (FP)
460 (TP + FP) Toplam tahmin edilen pozitif
Tahmin edilen meşru (tahmin edilen negatif)
40 (FN)
9500 (TN)
9540 (FN + TN) Toplam tahmin edilen negatif
200 (TP + FN) Toplam gerçek pozitif
9800 (FP + TN) Toplam gerçek negatif
10.000
Bu toplamlar neyi ifade ediyor?
Precision nedir?
Precision pozitif tahminlerinizin kalitesini ölçer. Pozitif olduğu tahmin edilen vakaların kaçının gerçekte pozitif olduğunu gösterir.
Keskin bir model, çok az sayıda yalancı alarm verir. Model bir şeyin doğru olduğunu söylüyorsa, büyük olasılıkla doğrudur. Örneğin, bir çevrim içi oyun birini hile nedeniyle yasaklıyorsa, bunun doğru olması gerekir. Çok fazla haksız yasak, meşru kullanıcıları uzaklaştırır ve olumsuz yorumlara yol açar.
Yukarıda incelediğimiz terminolojide precision, gerçek pozitiflerin tahmin edilen pozitiflere oranına eşittir.
Yukarıdaki örnekte precision 160/460, yani yaklaşık %34,8’dir.
Recall nedir?
Recall kapsama alanını ölçer. Gerçek pozitiflerin kaçının bu şekilde tahmin edildiğini gösterir. Gerçek pozitiflerin toplamına göre gerçek pozitiflerin oranı olarak tanımlanır.
İlk takip için kanser teşhislerini düşünün. Aşırı teşhis etmek mi, yoksa eksik teşhis etmek mi daha iyidir? Çoğu kişi ilkine katılacaktır.
Erken taramada yalancı alarm almak sarsıcı olabilir. Ancak gerçekte kanser varken yok denmesi felaket olabilir; özellikle de hayat kurtarıcı bir tedaviyi kaçırabileceğiniz düşünüldüğünde.
Yukarıdaki örnekte recall 160/200, yani %80’dir.
Precision ve Recall Arasındaki Ödünleşme
Precision ile recall arasında çekişmeli bir ilişki vardır. Genellikle precision arttıkça recall düşer ve tersi de geçerlidir.
Nedenini görmek için dolandırıcılık örneğine geri dönelim.
Dolandırıcılıkların çoğu yakalandı, ancak çok sayıda yanlış pozitif vardı. Diyelim ki müşteri şikâyetleri nedeniyle yönetim karar eşiğini 0,7’den 0,8’e çıkardı. Bir işlemin dolandırıcılık olarak işaretlenmesi için artık 0,7 yerine en az 0,8 puan alması gerekiyor.
Bu, modeli daha muhafazakâr yaptı. Daha az sıklıkla dolandırıcılık tahmini yaptı. Yanlışlıkla dolandırıcılık olarak işaretlenen işlem sayısı azaldı ancak bunun bedeli, bazı gerçek dolandırıcılık vakalarının kaçması oldu. Eşik değiştikten sonra yanlış pozitifler 300’den 60’a düştü, ancak yanlış negatifler 40’tan 80’e çıktı.
Yeni modelin karmaşıklık matrisi şu şekildedir:
Gerçek dolandırıcılık (gerçek pozitif)
Gerçek meşru (gerçek negatif)
Tahmin edilen dolandırıcılık (tahmin edilen pozitif)
120 (TP)
60 (FP)
180 (TP + FP) Toplam tahmin edilen pozitif
Tahmin edilen meşru (tahmin edilen negatif)
80 (FN)
9740 (TN)
9820 (FN + TN) Toplam tahmin edilen negatif
200 (TP + FN) Toplam gerçek pozitif
9800 (FP + TN) Toplam gerçek negatif
10.000
Görüldüğü gibi, tahmin edilen 180 dolandırıcılık vakasının 120’si gerçekten dolandırıcılık, dolayısıyla precision %34,8’den %66,7’ye yükseldi.
Bu artan precision’ın bedeli ise düşen recall oldu: 200 dolandırıcılık vakasının 120’si bu şekilde tahmin edildi; bu da recall’ın %80’den %60’a düştüğü anlamına gelir.
Model artık genel olarak daha az dolandırıcılık yakalıyor, ancak dolandırıcılığı işaretlediğinde çok daha emin oluyor. Bu da her iki metriği dengelemenin önemini gösteriyor; buna birazdan değineceğiz.
Precision-recall eğrisi
Precision ve recall arasındaki ödünleşmeyi görselleştirmek için veri bilimciler Precision-Recall (PR) eğrisini kullanır.
Bu grafik, her olası karar eşiği (0’dan 1’e) için y ekseninde precision’ı ve x ekseninde recall’ı çizer. Eşiği düşürerek daha fazla pozitif vakayı yakaladıkça (recall artar), kaçınılmaz olarak daha fazla yalancı alarm verir (precision düşer).
“Mükemmel” model sağ üst köşeye (precision ve recall %100) ulaşır, ancak gerçekte, bu eğri üzerinde iş gereksinimlerinize uyan bir nokta seçmelisiniz.
Dolandırıcılık örneğimizde, model her işlem için bir dolandırıcılık skoru üretir. Bir işlemin skoru eşik değerine en az eşitse dolandırıcılık olarak işaretlenir. Eşiği düşürdükçe daha fazla tahmin edilen pozitif elde ederiz; bu genellikle daha fazla gerçek pozitifi yakalar (recall artar) ancak daha fazla yalancı alarma da yol açar (precision düşer).
Tüm bunlar pratikte nasıl görünebilir bakalım. Şirketinizin günde 10.000 işlem işlediğini varsayalım. Dolandırıcılık oranı %2 tahmin edildiğine göre, günde 200 dolandırıcılık işlemi bekliyorsunuz. Ayrıca, dolandırıcılık operasyon ekibinin günde 200 işaretli işlemi (tahmin edilen pozitif) inceleyebildiğini varsayalım.
Birkaç eşiği değerlendiriyor ve şu sonuçları buluyorsunuz:
Eğri, belirli bir recall oranında hangi precision’ı “satın alabileceğinizi” (veya tersini) gösterir.
Precision ve Recall Ne Zaman Kullanılır
Precision ve recall arasındaki ödünleşme nedeniyle doğru metrik, özel kullanım durumunuza bağlıdır.
Precision ne zaman kullanılmalı
Precision ile yanlış pozitifler arasında ters bir ilişki vardır. Bu nedenle, keskin bir model gerçek pozitiflerle yanlış pozitifleri doğru biçimde ayırt eder. Güvenilirdir.
Yanlış pozitifin maliyeti yüksek olduğunda precision’ı optimize edin. Örnekler:
Recall ne zaman kullanılmalı
Benzer şekilde, recall ile yanlış negatifler arasında da ters bir ilişki vardır. Çok sayıda yanlış negatif düşük recall’a yol açar. Buna göre, recall’ı yüksek bir model gerçek pozitiflerle yanlış negatifleri doğru biçimde ayırt eder. Güvenlidir.
Gerçek bir vakayı kaçırmamak, yalancı alarmları kabullenmekten daha önemliyse, precision yerine recall’ı önceliklendirmelisiniz. Örnek kullanım durumları:
Precision ve Recall’ı Dengelemek için F1 Skoru
Bir modeli precision’a mı recall’a mı göre optimize edeceğinizden emin değilseniz ya da her ikisini de dikkate almak istiyorsanız F1 skoruna bakabilirsiniz.
F1 Skoru precision ve recall’ın harmonik ortalaması olarak tanımlanır; iki metrik arasında denge hedeflediğinizde kullanılır.
Precision ve recall eşitse, F1 skoru da bu değere eşittir. Ancak ikisinden biri sıfıra yaklaşırsa, F1 de çok düşük olur.
Yukarıdaki örnekte precision %66,7 ve recall %60’tır. Yukarıda belirtilen formülü kullanarak yaklaşık %63,2’lik bir F1 skoru elde ederiz:
Aşağıdaki tablo F1 skorunu doğruluk, precision ve recall ile karşılaştırır.
Metrik
Cevapladığı soru
Bu metrik ne zaman optimize edilir
Örnekler
Doğruluk
"Genel olarak ne sıklıkla doğruyuz?"
Sınıflar dengeli ve FP ile FN maliyetleri benzer.
Rakam sınıflandırma.
Precision
"Tahmin edilen pozitiflerin ne kadarında doğruyuz?"
Yanlış pozitifler pahalı, cezalandırıcı ya da müşteri acısı yaratıyor.
Dolandırıcılık blokları, kullanıcı yasaklama, invaziv tıbbi işlemler.
Recall
"Tüm gerçek pozitiflerin kaçını işaretledik?"
Yanlış negatifler kabul edilemez.
Tıbbi tarama, ihlal tespiti.
F1
"Precision ve recall dengesi nedir?"
Hem pozitifler hem de yalancı alarmlar önemlidir.
Dengesizlik problemlerinde erken model seçimi.
Python’da Precision ve Recall Hesaplama
Python’da precision, recall ve F1 skorunu hesaplamanın birçok yolu vardır. Aşağıda iki yaklaşım sunacağım: formülleri doğrudan uygulamak ve
scikit-learnpaketindeki hazır fonksiyonları kullanmak.Formülleri kullanarak precision ve recall hesaplama
Karmaşıklık matrisinin sayılarını biliyorsanız, yukarıda sunulan formülleri kullanarak metrikleri kolayca hesaplayabilirsiniz.
Bu kodun çıktısı, önceki hesaplamalarımızla tutarlıdır.
scikit-learn kullanarak precision ve recall hesaplama
Metri̇kleri verinin kendisinden hesaplamak için scikit-learn kütüphanesini de kullanabilirsiniz. Aşağıdaki örnekte
y_truevey_predicted’ı simüle ediyoruz. Ardındanprecision_score(y_true, y_false)yöntemiyle precision’ı hesaplıyoruz. Recall ve F1 skorunu da benzer şekilde hesaplıyoruz. Son olarak sonuçları yazdırıyoruz.Beklendiği gibi, bu sayılar önceki hesaplamalarımızla örtüşüyor.
Sonuç
Doğruluk iyi bir başlangıç noktası olsa da çoğu zaman bir modelin neden başarısız olduğunu anlamak için gereken ayrıntıları gizler. Precision ve recall, yalancı alarmlar ile kaçırılan tespitler arasındaki ödünleşmeye bakmanızı sağlayarak daha net bir resim sunar.
Sonuçta doğru metriği seçmek sadece bir matematik problemi değildir; sisteminizin hangi tür hatayı göze alabileceğine dair pratik bir karardır.
Kendi makine öğrenimi modellerinizi oluşturmaya hazır mısınız? Python ile Makine Öğreniminin Temelleri yetkinlik yoluna bugün başlayın!