Metrik seçimi ve işletim eşiği
Hata maliyetinden metrik türetmeyi, eşikten bağımsız ve eşiğe bağlı ölçümleri ayırmayı ve işletim eşiğini maliyet hesabıyla seçmeyi öğretir.
Önkoşul: Machine Learning
BU DERSİN SONUNDA
- Dengesiz sınıflı bir problemde doğruluk yerine hangi metriğin kullanılacağını gerekçelendirmek
- Eşikten bağımsız sıralama metrikleri ile eşiğe bağlı işletim metriklerini ayırt etmek
- Yanlış pozitif ve yanlış negatif maliyetinden işletim eşiği türetmek
- Seçilen metriği modelin çıktısının tetiklediği karara bağlamak
- 1
Teori
Kavramın çalışma mantığı
- 2
Örnek
Gerçek bir senaryo üzerinde gösterim
- 3
Lab
Uygulamalı alıştırma
- 4
Test
Kısa ölçüm
- 5
Proje
Rotadaki projeye katkı
Kısa cevap
Metrik, modelin değil kararın özelliğidir: modelin çıktısı hangi eylemi tetikliyor ve o eylemin iki farklı hatası kime neye mal oluyor sorusu cevaplanmadan metrik seçilemez. Olasılık üreten bir sınıflandırıcıda birbirinden ayrı iki karar vardır — modelin sıralama gücü (eşikten bağımsız) ve işletim eşiği (hata maliyetlerinden türetilir). İkisini tek bir sayıya sıkıştırmak, çoğu üretim probleminde yanlış modelin seçilmesine yol açar.
Teori: doğruluk neden yanıltır#
Doğruluk, sınıf dağılımını gizler. Pozitif sınıfın seyrek olduğu bir sette her örneğe negatif diyen boş bir model bile yüksek doğruluk üretir, çünkü taban çizgisi zaten yüksektir. Bir metriğin ne söylediğini anlamak için önce onun boş modelde ne verdiğini hesaplayın; taban çizgisini geçmeyen bir sayı bilgi taşımaz.
Karışıklık matrisi bu yüzden başlangıç noktasıdır: doğru pozitif, yanlış pozitif, yanlış negatif ve doğru negatif sayıları. Kesinlik, pozitif dediklerinizin ne kadarının gerçekten pozitif olduğunu; duyarlılık, gerçek pozitiflerin ne kadarını yakaladığınızı söyler. İkisi farklı hatayı cezalandırır ve hatalar simetrik değildir: bir dolandırıcılık vakasını kaçırmak ile temiz bir işlemi incelemeye düşürmek aynı şey değildir.
Eşikten bağımsız ve eşiğe bağlı metrikler#
| Metrik | Neyi ölçer | Ne zaman uygun | Tuzak |
|---|---|---|---|
| Doğruluk | Doğru sınıflandırılan örneklerin oranı | Sınıflar dengeli ve iki hata benzer maliyette | Seyrek pozitifte taban çizgisi görünmez |
| Kesinlik | Pozitif dediklerinin ne kadarı doğru | Yanlış alarmın maliyeti yüksek, inceleme kuyruğu sınırlı | Eşiği yükseltip kapsamı daraltarak şişirilebilir |
| Duyarlılık | Gerçek pozitiflerin ne kadarı yakalandı | Kaçırmanın maliyeti yüksek (arıza, dolandırıcılık, tanı) | Her örneğe pozitif diyerek tavana çekilebilir |
| F1 | Kesinlik ve duyarlılığın harmonik ortalaması | Tek sayı gerektiğinde ve iki hata benzer maliyette | Eşit maliyet varsayar; çoğu işte bu varsayım yanlış |
| ROC AUC | Rastgele bir pozitifin rastgele bir negatiften yüksek puan alma olasılığı | Eşikten bağımsız olarak sıralama gücünü karşılaştırmak | Pozitif sınıf çok seyrekse iyimser görünür |
| PR AUC | Kesinlik-duyarlılık eğrisinin altındaki alan | Pozitif sınıf seyrek ve ilgi pozitif sınıfta | Taban çizgisi pozitif orana bağlıdır; farklı setler arasında kıyaslanamaz |
Maliyet duyarlı eşik#
Eşik, istatistiksel değil ekonomik bir karardır. Bir örneğe pozitif demenin beklenen maliyeti, yanlış pozitif maliyeti ile negatif olma olasılığının çarpımıdır; negatif demenin beklenen maliyeti ise yanlış negatif maliyeti ile pozitif olma olasılığının çarpımı. İkisinin eşitlendiği olasılık, teorik en iyi eşiktir ve yalnızca iki maliyetin oranına bağlıdır — mutlak büyüklüklerine değil. Bu yüzden paydaşlardan tam rakam alamasanız bile "bir kaçırma, kaç yanlış alarma bedeldir" sorusunu cevaplatabilirseniz eşiği türetebilirsiniz.
def en_iyi_esik(olasiliklar, gercek, maliyet_yp, maliyet_yn):
"""Beklenen maliyeti en kucuklestiren esigi aday esikler arasinda arar.
olasiliklar: dogrulama kumesindeki tahmin edilen pozitif olasiliklari
gercek: ayni sirada 0/1 gercek etiketler
maliyet_yp: bir yanlis pozitifin birim maliyeti (kendi is biriminizde)
maliyet_yn: bir yanlis negatifin birim maliyeti (ayni birimde)
Donus: (secilen esik, o esikteki toplam maliyet).
"""
# En buyuk olasiligin ustundeki aday, "hic pozitif deme" secenegini kapsar.
adaylar = sorted(set(olasiliklar)) + [max(olasiliklar) + 1.0]
en_iyi, en_dusuk = 0.5, float("inf")
for esik in adaylar:
yp = sum(1 for p, y in zip(olasiliklar, gercek) if p >= esik and y == 0)
yn = sum(1 for p, y in zip(olasiliklar, gercek) if p < esik and y == 1)
maliyet = yp * maliyet_yp + yn * maliyet_yn
if maliyet < en_dusuk:
en_iyi, en_dusuk = esik, maliyet
return en_iyi, en_dusukBu aramanın koştuğu yer doğrulama kümesidir, test kümesi değil. Eşiği test kümesinde seçerseniz test kümesi ikinci bir eğitim setine dönüşür ve raporladığınız sayı iyimserleşir. Ayrıca eşik sabit bir varlık değildir: girdi dağılımı veya kapasite değişince yeniden seçilmelidir; bu dersin devamı izleme bölümünde bu tetikleyiciyi kuracaksınız.
Karar: metrik nasıl seçilir#
- 1Kararı yaz
Model çıktısı hangi eylemi tetikliyor, o eylemi kim yapıyor ve geri alınabilir mi?
- 2İki hatayı fiyatla
Yanlış pozitif ve yanlış negatifin kime neye mal olduğunu aynı birimde yazın; birim para olmak zorunda değil, inceleme dakikası da olur.
- 3Kapasite sınırını ekle
Günde en çok kaç pozitif işlenebiliyor? Sınır varsa doğru metrik ilk k adaydaki kesinliktir, genel kesinlik değil.
- 4İki metrik seç
Biri model karşılaştırmak için eşikten bağımsız, biri canlı raporlama için eşiğe bağlı olsun.
Sık yapılan hata#
En sık hata her şeyi tek sayıya indirmektir: F1 rapor metriği seçilir, ekip aylarca onu iyileştirir ve kimse F1'in iki hatanın eşit maliyette olduğunu varsaydığını fark etmez. İkinci sık hata, sınıf dengeleme ile metrik düzeltmeyi karıştırmaktır; aşırı örnekleme veya sınıf ağırlığı modelin gördüğü dağılımı değiştirir, kararın ekonomisini değiştirmez. Üçüncüsü, dengeleme sonrası çıkan skorları hâlâ gerçek olasılık gibi okumaktır.
LAB · UYGULAMALI ALIŞTIRMA
Kendi verinizde maliyet duyarlı eşik seçin
- 1Elinizdeki ikili sınıflandırma probleminde veriyi eğitim, doğrulama ve test olarak üçe bölün; veri bir zaman ekseni taşıyorsa zamana, taşımıyorsa müşteri veya oturum gibi bir gruba göre bölün ve bölme kuralını tek cümleyle yazın.
- 2Bir taban çizgisi kurun (çoğunluk sınıfı ve tek değişkenli basit bir kural) ve doğrulama kümesinde kesinlik, duyarlılık ile kesinlik-duyarlılık eğrisini çıkarın.
- 3Bir yanlış pozitifin ve bir yanlış negatifin maliyetini aynı birimde yazın; rakam yoksa oran yazın ve varsayımlarınızı ayrı bir satırda not edin.
- 4Doğrulama kümesinde 0,05 adımlarla eşiği tarayın, her eşikte beklenen maliyeti hesaplayın ve en düşük maliyetli eşiği işaretleyin.
- 5Seçtiğiniz eşiği test kümesine bir kez uygulayın; sonucu kesinlik-duyarlılık cinsinden değil, taban çizgisine göre maliyet farkı cinsinden raporlayın.
- 6Maliyet oranını iki katına ve yarısına çekip eşiğin nereye kaydığını not edin; eşik oynamıyorsa modelin sıralama gücünün o bölgede zayıf olduğunu yazın.
Beklenen çıktı
Yazılı hata maliyeti varsayımları, doğrulama kümesinde seçilmiş bir işletim eşiği ve bu eşiğin taban çizgisine karşı test kümesindeki maliyet farkı.
Sık sorulan sorular
ROC AUC yüksek çıktı ama model sahada işe yaramıyor, nasıl olur?
AUC sıralama gücünü ölçer, işletim noktasını değil. Pozitif sınıf seyrekse model pozitifleri ortalamada negatiflerin üstüne koyabilir ama seçtiğiniz eşiğin üstünde yine de ezici çoğunlukla negatif bulunur. Kesinlik-duyarlılık eğrisine ve kullandığınız eşikteki gerçek sayılara bakın.
Sınıf dengeleme yapmalı mıyım?
Önce maliyet duyarlı eşiği deneyin; çoğu zaman dengelemeye gerek kalmadan aynı sonucu verir ve skorların yorumunu bozmaz. Dengeleme, öğrenme sinyalinin çok zayıf kaldığı aşırı seyrek durumlarda anlamlıdır ve ardından skorların kalibrasyonunu kontrol etmeyi gerektirir.
Çok sınıflı problemde hangi ortalamayı almalıyım?
Makro ortalama her sınıfa eşit ağırlık verir; seyrek ama önemli sınıflar varsa bunu isteyebilirsiniz. Mikro ortalama örnek başına eşit ağırlık verir ve büyük sınıfın davranışına yakınsar. Ağırlıklı ortalama ikisinin arasıdır. Hangisini seçtiğinizi rapor başlığında yazın, yoksa iki ekip aynı isimle farklı sayıları tartışır.
LEARN
Machine Learning Engineer rotasına devam et
Dersler tek başına da okunabilir, ama sıralı ilerlemek önkoşul boşluklarını kapatır.
