Makine Öğreniminde F1 Skoru: Kesinlik ve Duyarlılık için Dengeli Bir Ölçüt
F1 skorunun, kesinlik ve duyarlılığı birleştirerek model performansını nasıl değerlendirdiğini anlayın. İkili ve çok sınıflı sınıflandırmada kullanımını, Python örnekleriyle öğrenin.
ML tabanlı modeller oluştururken, bir modelin performansını değerlendirmek en az eğitmek kadar önemlidir. Doğruluk çoğu zaman varsayılan metrik olsa da, özellikle verinin bir sınıf tarafından baskın olduğu dengesiz veri kümelerinde yanıltıcı olabilir.
F1 skoru, kesinlik ve duyarlılığın harmonik ortalamasıdır. Yanlış pozitifler ile yanlış negatifler arasındaki ödünleşimi dengeler ve model performansının daha doğru bir ölçüsünü sunar.
Sahtekarlık tespiti, tıbbi teşhis, spam filtreleme ve hata tespiti gibi uygulamalarda, tek başına doğruluk tüm resmi anlatmaya yetmez. Bir model yüksek doğruluk elde edebilir, ancak nadir ve kritik vakaları tespit edemezse faydadan çok zarar verebilir. F1 skoru bu riski kapsar. Değerlendirme metriklerinde yeniyseniz, devam etmeden önce Python ile Makine Öğreniminin Temelleri içeriğinde temel kavramları keşfetmek isteyebilirsiniz.
F1 Skoru Nedir?
F1 skoru, bir model için kesinlik ve duyarlılık arasındaki dengeyi ölçer. 0 ile 1 arasında değişir; 1 kusursuz kesinlik ve duyarlılığı, 0 ise zayıf performansı ifade eder.
Kesinlik, modelin tüm pozitif tahminleri arasında kaçının doğru olduğunu ölçmeye yardımcı olur.
Duyarlılık, tüm gerçek pozitifler arasında modelin kaçını doğru sınıflandırdığını analiz etmek için kullanışlıdır.
F1 skoru ikisini tek bir değerde birleştirir ve birinde iyi, diğerinde zayıf performans sergileyen modelleri cezalandırır. Örneğin, duyarlılığı yüksek ama kesinliği düşük bir model tüm pozitif örnekleri doğru yakalayabilir ancak çok fazla yanlış pozitif üretebilir. F1 ölçüsü her iki ölçütün birlikte ele alınmasını sağlar.
Büyük farkları cezalandırdığı için harmonik ortalama, aritmetik ortalama yerine kullanılır. Kesinliğin yüksek ama duyarlılığın düşük olduğu (veya tersi) durumlarda, F1 skoru belirgin biçimde düşer ve dengesizliği yansıtır.
F1 Skoru vs. Doğruluk
Doğruluk, toplam tahminler içinde doğru tahminleri belirler:
Sınıfların dengeli olduğu kümelerde iyi olsa da, doğruluk sınıf dengesizliği olan problemler için yanıltıcıdır.
Örnek:
Bir spam filtreleme sisteminde iletilerin %90'ı spam, %10'u spam değilse, tüm e-postaları "spam" olarak sınıflandıran naif bir sınıflandırıcı %90 doğruluk elde eder ancak spam olmayanları asla doğru sınıflandıramaz. Bu pratikte işe yaramaz.
Bu durumda, F1 ölçüsü daha isabetlidir; çünkü doğruluğun aksine yanlış pozitifler ve yanlış negatiflerin maliyetini hesaba katar.
İkili ve Çok Sınıflı Sınıflandırmada F1 Skoru
İkili sınıflandırma
İkili sınıflandırmada F1 skoru, pozitif sınıfa göre hesaplanır. Örneğin, tıbbi testlerde pozitif sınıf “hastalık var”ı temsil edebilir.
Çok sınıflı sınıflandırma
Çok sınıflı problemlerde F1 skorları, ortalama alma yöntemleri kullanılarak genişletilir:
Yöntem
Açıklama
En uygun
Makro
Her sınıf için F1'i bağımsız olarak hesaplar ve ardından ortalamasını alır.
Dengeli veri kümeleri, tüm sınıflara eşit önem verilmesi.
Ağırlıklı
F1 skorlarını sınıf desteğine (sınıf başına örnek sayısı) göre ağırlıklandırarak ortalar.
Dengesiz veri kümeleri.
Mikro
Tüm sınıfların katkılarını birleştirerek genel bir F1 hesaplar.
Genel performansın daha önemli olduğu durumlar.
Bu esneklik, F1 skorunu çok geniş bir sınıflandırma problem yelpazesinde uygulanabilir kılar.
Python'da F1 Skoru Nasıl Hesaplanır
scikit-learn kütüphanesi, F1 skorunu hesaplamak için basit işlevler içerir.
İkili sınıflandırma örneği
Tahminlerin 0 veya 1 olduğu basit bir ikili sınıflandırma problemini değerlendirerek başlayın. f1_score() işlevi, gerçek ve tahmin edilen etiketleri kullanarak F1 skorunu doğrudan hesaplar.
from sklearn.metrics import f1_score
# True labels
y_true =[0,1,1,1,0,1,0,1]# Predicted labels
y_pred =[0,1,0,1,0,1,1,1]# Calculate F1 Scoreprint("F1 Score:",round(f1_score(y_true, y_pred, average='binary'),2))Altyapı:
Ardından, modelin ikiden fazla sınıf tahmin ettiği çok sınıflı problemlere aynı yaklaşımı genişletebilirsiniz. average parametresi, sınıflar arasında F1 skorlarının nasıl birleştirileceğini kontrol eder—yaygın seçenekler 'macro', 'micro' ve 'weighted' içerir.
Çok sınıflı veya çok etiketli sınıflandırmada F1 ya da Fβ hesapladığımızda, skorların farklı sınıflar arasında nasıl ortalanacağına karar vermemiz gerekir. scikit-learn'deki average parametresi birkaç seçenek sunar:
İkili, iki sınıf söz konusu olduğunda kullanılır. Pozitif sınıfa odaklanır ve öncelikle o sınıf için precision, recall ve F1 hesaplarız.
Mikro, tüm sınıfların katkılarını toplayıp ortalamasını alarak ortalama metriği hesaplamayı içerir. Pratikte, sınıflar genelinde toplam gerçek pozitifler, yanlış negatifler ve yanlış pozitifler üzerinden toplar ve ardından bu toplamlar üzerinden kesinlik, duyarlılık ve F1'i hesaplar. Mikro ortalama, sınıf dengesizliğinden bağımsız olarak genel performansı görmeye değer katar.
Makro: Her sınıf için metriği hesaplar ve sonra bunları ağırlıklandırmadan ortalar. Bu, tüm sınıflara eşit muameleyi sağlamaz; bu nedenle, veri kümesi dengesiz olsa bile tüm sınıfların eşit önemde olduğu durumlarda makuldür.
Ağırlıklı, makroya benzer; ancak her sınıfa eşit ağırlık vermez. Skorları sınıf başına gerçek örnek sayısına göre ağırlıklandırır. Bu, büyük sınıfların nihai skorda daha çok söz sahibi olması anlamına gelir. Ağırlıklı ortalama, sınıf dağılımını göz ardı etmeden dengeli bir görünüm aradığımızda kullanışlıdır.
Örnekler (Samples): Bir örneğin birden fazla sınıfa ait olabildiği çok etiketli problemlerde kullanılır. Burada metrik her örnek için hesaplanır ve sonra tüm örnekler üzerinden ortalanır.
Bu ortalama alma seçenekleri, F1 veya Fβ skorunu problem senaryosuna uyarlamamıza olanak tanır. Örneğin, az görülen hastalıkları sınıflandırıyorsak ve azınlık sınıfları çok önemliyse, makro veya β > 1 olan Fβ uygundur. Ancak tüm sınıflarda sınıf bazlı doğruluğu arıyorsak, mikro veya ağırlıklı ortalama daha iyi bir tablo sunar.
Daha gelişmiş ihtiyaçlar için scikit-learn, F1'i genelleyen fbeta_score() işlevini de sağlar. Bu tür araçları daha derinlemesine anlamak, Python ile Makine Öğrenimi Bilimcisi kariyer yolunun bir parçasıdır.
Fβ Skoruyla F1 Skorunun Genelleştirilmesi
Fβ skoru, kesinlik veya duyarlılığın öncelik durumuna bağlı olarak F1 skorunu genelleştirir:
𝛃 > 1 duyarlılığa daha fazla ağırlık verir.
𝛃 < 1 kesinliğe daha fazla vurgu yapar.
Örnekler
F2 Skoru, bir hastalığı atlamanın (yanlış negatif) yanlış alarma göre daha kötü olduğu tıbbi teşhiste uygulanır.
F0.5 Skoru, yanlış pozitiflerin (gerçek e-postaların yanlışlıkla spam sayılması) daha maliyetli olduğu spam filtrelemede tercih edilir.
Kullanım Senaryosu: Diyabet Tespitinde F1 vs. Doğruluk
Yalnızca hastaların %5'inde gerçekten diyabet bulunan bir tıbbi veri kümesini varsayalım. Diyabet tespiti için eğitilmiş bir model %95 doğruluğa sahip olabilir. Ancak bu %95 doğruluk, herkese sürekli olarak "diyabet yok" diyerek kolayca elde edilebilir ve bu da modeli işe yaramaz kılar.
Bunun yerine, modeli ölçmek için F1 skorunu kullanalım.
from sklearn.metrics import f1_score, fbeta_score, confusion_matrix
# Suppose these are results from a diabetes detection model
y_true =[0,0,0,1,0,1,0,1,0,0,1,0,0,0,1,1]# true outcomes
y_pred =[0,0,0,1,0,0,0,1,0,0,1,0,0,0,0,1]# model predictionsprint("Accuracy:",round((sum([yt == yp for yt, yp inzip(y_true, y_pred)])/len(y_true)),2))print("F1 Score:",round(f1_score(y_true, y_pred),2))print("F2 Score (recall-focused):",round(fbeta_score(y_true, y_pred, beta=2),2))Altyapı:
Accuracy:0.88
F1 Score:0.8
F2 Score (recall-focused):0.71Altyapı:
Burada neden F1 veya F2'yi seçelim?
Ağır sınıf dengesizliği nedeniyle doğruluk yanıltıcıdır.
F1 skoru, hem yanlış pozitiflerin (sağlıklı hastaları diyabetik olarak sınıflandırmak) hem de yanlış negatiflerin (diyabeti teşhis edememek) hesaba katılmasını sağlar.
Bu kullanımda, kaçırılan bir teşhis hayatı etkileyici olabileceği için duyarlılık değerlidir. Bu nedenle F2 skoru, duyarlılığa daha yüksek ağırlık verdiğinden daha uygundur.
Bu, F1 ailesi metriklerinin klinik kullanım durumlarında doğruluğa göre daha pratik ve kullanılabilir bir ölçüm sunduğunu gösterir.
Öne Çıkanlar
F1 skoru bize model değerlendirmesinin sadece sayı oyunu olmadığını hatırlatır. Aslında her tahminin ardındaki ödünleşimleri anlamakla ilgilidir. Bu önemlidir; çünkü gerçek yaşam uygulamalarında kritik bir vakayı kaçırmak ciddi sonuçlar doğurabilir.
Modelleri geliştirmeye ve iyileştirmeye devam ederken, F1 gibi metriklere dair sezgi geliştirmeniz performans hakkında bağlama duyarlı seçimler yapmanıza yardımcı olur. Bu kavramları gerçek veri kümelerine uygulama becerilerinizi derinleştirmek için, farklı kullanım örneklerinde modelleri nasıl değerlendirip ayarlayacağınızı ve etkili biçimde dağıtacağınızı öğreneceğiniz Python ile Makine Öğrenimi Bilimcisi kariyer yoluna göz atın.
Veri bilimi, ürün ve mühendisliğin kesişiminde çalışarak ölçeklenebilir makine öğrenimi sistemleri geliştiren bir Yapay Zeka Stratejisti ve Etik Uzmanıyım. Dünyadaki "En İyi 200 İş ve Teknoloji Yenilikçisinden" biri olarak listelenmiş bulunuyorum; makine öğrenimini demokratikleştirmek ve bu dönüşümün parçası olabilmeleri için herkes adına jargonu sadeleştirmek misyonuyla çalışıyorum.
SSS
Makine öğreniminde F1 skorunun önemi nedir?⌄
F1 skoru, kesinliğin (tahmin edilen pozitiflerin kaçı doğru) ve duyarlılığın (gerçek pozitiflerin kaçı tespit edildi) harmonik ortalamasıdır. Her iki hata türünü de yansıtan tek bir metrik sağlar.
Dengesiz veri kümelerinde F1 skoru neden doğruluğa tercih edilir?⌄
Bir sınıf veriye hakim olduğunda doğruluk yanıltıcı olabilir; çünkü bir model çoğunluk sınıfını iyi tahmin ederken azınlık sınıfında başarısız olabilir. F1 skoru hem yanlış pozitifleri hem de yanlış negatifleri hesaba katarak bu gibi durumlarda daha adil bir değerlendirme sunar.
F1 ile Fβ skorları arasındaki fark nedir?⌄
F1 skoru, kesinlik ve duyarlılığa eşit ağırlık verirken, Fβ skoru bu dengeyi ayarlamaya izin verir. Örneğin F2 duyarlılığa daha fazla ağırlık verir (tıbbi teşhiste kullanışlı), F0.5 ise kesinliği önceler (spam tespitinde kullanışlı).
İyi bir F1 skoru değeri nedir?⌄
1'e yakın bir F1 skoru, güçlü kesinlik ve duyarlılığa işaret eder. “İyi”nin tanımı alana bağlıdır. Örneğin, 0.8 sağlık alanında mükemmel olabilirken spam tespitinde düşük sayılabilir.
Python'da F1 skorunu nasıl hesaplayabilirim?⌄
F1 skoru, scikit-learn'ün f1_score() işlevi kullanılarak kolayca hesaplanabilir. İkili, çok sınıflı ve çok etiketli ayarları destekler ve farklı birleştirme stratejileri için bir average parametresi sunar.
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!
ML tabanlı modeller oluştururken, bir modelin performansını değerlendirmek en az eğitmek kadar önemlidir. Doğruluk çoğu zaman varsayılan metrik olsa da, özellikle verinin bir sınıf tarafından baskın olduğu dengesiz veri kümelerinde yanıltıcı olabilir.
F1 skoru, kesinlik ve duyarlılığın harmonik ortalamasıdır. Yanlış pozitifler ile yanlış negatifler arasındaki ödünleşimi dengeler ve model performansının daha doğru bir ölçüsünü sunar.
Sahtekarlık tespiti, tıbbi teşhis, spam filtreleme ve hata tespiti gibi uygulamalarda, tek başına doğruluk tüm resmi anlatmaya yetmez. Bir model yüksek doğruluk elde edebilir, ancak nadir ve kritik vakaları tespit edemezse faydadan çok zarar verebilir. F1 skoru bu riski kapsar. Değerlendirme metriklerinde yeniyseniz, devam etmeden önce Python ile Makine Öğreniminin Temelleri içeriğinde temel kavramları keşfetmek isteyebilirsiniz.
F1 Skoru Nedir?
F1 skoru, bir model için kesinlik ve duyarlılık arasındaki dengeyi ölçer. 0 ile 1 arasında değişir; 1 kusursuz kesinlik ve duyarlılığı, 0 ise zayıf performansı ifade eder.
F1 skoru ikisini tek bir değerde birleştirir ve birinde iyi, diğerinde zayıf performans sergileyen modelleri cezalandırır. Örneğin, duyarlılığı yüksek ama kesinliği düşük bir model tüm pozitif örnekleri doğru yakalayabilir ancak çok fazla yanlış pozitif üretebilir. F1 ölçüsü her iki ölçütün birlikte ele alınmasını sağlar.
F1 Skoru Formülü ve Açıklaması
F1 skoru formülü şöyledir:
Burada kesinlik şu şekilde tanımlanır:
Ve duyarlılığın denklemi şöyledir:
Burada, TP = True Positives (Gerçek Pozitifler), FP = False Positives (Yanlış Pozitifler) ve FN = False Negatives (Yanlış Negatifler).
Büyük farkları cezalandırdığı için harmonik ortalama, aritmetik ortalama yerine kullanılır. Kesinliğin yüksek ama duyarlılığın düşük olduğu (veya tersi) durumlarda, F1 skoru belirgin biçimde düşer ve dengesizliği yansıtır.
F1 Skoru vs. Doğruluk
Doğruluk, toplam tahminler içinde doğru tahminleri belirler:
Sınıfların dengeli olduğu kümelerde iyi olsa da, doğruluk sınıf dengesizliği olan problemler için yanıltıcıdır.
Örnek:
Bir spam filtreleme sisteminde iletilerin %90'ı spam, %10'u spam değilse, tüm e-postaları "spam" olarak sınıflandıran naif bir sınıflandırıcı %90 doğruluk elde eder ancak spam olmayanları asla doğru sınıflandıramaz. Bu pratikte işe yaramaz.
Bu durumda, F1 ölçüsü daha isabetlidir; çünkü doğruluğun aksine yanlış pozitifler ve yanlış negatiflerin maliyetini hesaba katar.
İkili ve Çok Sınıflı Sınıflandırmada F1 Skoru
İkili sınıflandırma
İkili sınıflandırmada F1 skoru, pozitif sınıfa göre hesaplanır. Örneğin, tıbbi testlerde pozitif sınıf “hastalık var”ı temsil edebilir.
Çok sınıflı sınıflandırma
Çok sınıflı problemlerde F1 skorları, ortalama alma yöntemleri kullanılarak genişletilir:
Yöntem
Açıklama
En uygun
Makro
Her sınıf için F1'i bağımsız olarak hesaplar ve ardından ortalamasını alır.
Dengeli veri kümeleri, tüm sınıflara eşit önem verilmesi.
Ağırlıklı
F1 skorlarını sınıf desteğine (sınıf başına örnek sayısı) göre ağırlıklandırarak ortalar.
Dengesiz veri kümeleri.
Mikro
Tüm sınıfların katkılarını birleştirerek genel bir F1 hesaplar.
Genel performansın daha önemli olduğu durumlar.
Bu esneklik, F1 skorunu çok geniş bir sınıflandırma problem yelpazesinde uygulanabilir kılar.
Python'da F1 Skoru Nasıl Hesaplanır
scikit-learnkütüphanesi, F1 skorunu hesaplamak için basit işlevler içerir.İkili sınıflandırma örneği
Tahminlerin 0 veya 1 olduğu basit bir ikili sınıflandırma problemini değerlendirerek başlayın.
f1_score()işlevi, gerçek ve tahmin edilen etiketleri kullanarak F1 skorunu doğrudan hesaplar.Çok sınıflı sınıflandırma örneği
Ardından, modelin ikiden fazla sınıf tahmin ettiği çok sınıflı problemlere aynı yaklaşımı genişletebilirsiniz.
averageparametresi, sınıflar arasında F1 skorlarının nasıl birleştirileceğini kontrol eder—yaygın seçenekler'macro','micro've'weighted'içerir.Çok sınıflı veya çok etiketli sınıflandırmada
F1ya daFβhesapladığımızda, skorların farklı sınıflar arasında nasıl ortalanacağına karar vermemiz gerekir. scikit-learn'deki average parametresi birkaç seçenek sunar:İkili, iki sınıf söz konusu olduğunda kullanılır. Pozitif sınıfa odaklanır ve öncelikle o sınıf için
precision,recallveF1hesaplarız.Mikro, tüm sınıfların katkılarını toplayıp ortalamasını alarak ortalama metriği hesaplamayı içerir. Pratikte, sınıflar genelinde toplam gerçek pozitifler, yanlış negatifler ve yanlış pozitifler üzerinden toplar ve ardından bu toplamlar üzerinden kesinlik, duyarlılık ve F1'i hesaplar. Mikro ortalama, sınıf dengesizliğinden bağımsız olarak genel performansı görmeye değer katar.
Makro: Her sınıf için metriği hesaplar ve sonra bunları ağırlıklandırmadan ortalar. Bu, tüm sınıflara eşit muameleyi sağlamaz; bu nedenle, veri kümesi dengesiz olsa bile tüm sınıfların eşit önemde olduğu durumlarda makuldür.
Ağırlıklı, makroya benzer; ancak her sınıfa eşit ağırlık vermez. Skorları sınıf başına gerçek örnek sayısına göre ağırlıklandırır. Bu, büyük sınıfların nihai skorda daha çok söz sahibi olması anlamına gelir. Ağırlıklı ortalama, sınıf dağılımını göz ardı etmeden dengeli bir görünüm aradığımızda kullanışlıdır.
Örnekler (Samples): Bir örneğin birden fazla sınıfa ait olabildiği çok etiketli problemlerde kullanılır. Burada metrik her örnek için hesaplanır ve sonra tüm örnekler üzerinden ortalanır.
Bu ortalama alma seçenekleri, F1 veya Fβ skorunu problem senaryosuna uyarlamamıza olanak tanır. Örneğin, az görülen hastalıkları sınıflandırıyorsak ve azınlık sınıfları çok önemliyse, makro veya β > 1 olan Fβ uygundur. Ancak tüm sınıflarda sınıf bazlı doğruluğu arıyorsak, mikro veya ağırlıklı ortalama daha iyi bir tablo sunar.
Daha gelişmiş ihtiyaçlar için scikit-learn, F1'i genelleyen
fbeta_score()işlevini de sağlar. Bu tür araçları daha derinlemesine anlamak, Python ile Makine Öğrenimi Bilimcisi kariyer yolunun bir parçasıdır.Fβ Skoruyla F1 Skorunun Genelleştirilmesi
Fβ skoru, kesinlik veya duyarlılığın öncelik durumuna bağlı olarak F1 skorunu genelleştirir:
Örnekler
Kullanım Senaryosu: Diyabet Tespitinde F1 vs. Doğruluk
Yalnızca hastaların %5'inde gerçekten diyabet bulunan bir tıbbi veri kümesini varsayalım. Diyabet tespiti için eğitilmiş bir model %95 doğruluğa sahip olabilir. Ancak bu %95 doğruluk, herkese sürekli olarak "diyabet yok" diyerek kolayca elde edilebilir ve bu da modeli işe yaramaz kılar.
Bunun yerine, modeli ölçmek için F1 skorunu kullanalım.
Burada neden F1 veya F2'yi seçelim?
Bu kullanımda, kaçırılan bir teşhis hayatı etkileyici olabileceği için duyarlılık değerlidir. Bu nedenle F2 skoru, duyarlılığa daha yüksek ağırlık verdiğinden daha uygundur.
Bu, F1 ailesi metriklerinin klinik kullanım durumlarında doğruluğa göre daha pratik ve kullanılabilir bir ölçüm sunduğunu gösterir.
Öne Çıkanlar
F1 skoru bize model değerlendirmesinin sadece sayı oyunu olmadığını hatırlatır. Aslında her tahminin ardındaki ödünleşimleri anlamakla ilgilidir. Bu önemlidir; çünkü gerçek yaşam uygulamalarında kritik bir vakayı kaçırmak ciddi sonuçlar doğurabilir.
Modelleri geliştirmeye ve iyileştirmeye devam ederken, F1 gibi metriklere dair sezgi geliştirmeniz performans hakkında bağlama duyarlı seçimler yapmanıza yardımcı olur. Bu kavramları gerçek veri kümelerine uygulama becerilerinizi derinleştirmek için, farklı kullanım örneklerinde modelleri nasıl değerlendirip ayarlayacağınızı ve etkili biçimde dağıtacağınızı öğreneceğiniz Python ile Makine Öğrenimi Bilimcisi kariyer yoluna göz atın.