İçeriğe atla
SinaptikLabAI KNOWLEDGE PLATFORM
Dersİleri40 dakikaMachine Learning Engineer · 6. ders

Doğrulamayı üretimin kopyası olarak tasarlamak

Rastgele katlamanın, grup katlamasının ve zaman ayrımının hangi veri yapısında geçerli olduğunu; model seçiminin doğrulama skorunu neden iyimserleştirdiğini ve kırık bir ayrımın nasıl teşhis edileceğini öğretir.

Önkoşul: Machine Learning, MLOps

BU DERSİN SONUNDA

  • Veri yapısına uygun doğrulama şemasını seçmek
  • Grup ve zaman kaynaklı ayrım sızıntısını önlemek
  • Model seçiminin ürettiği iyimserliği ayrı bir kümeyle sınırlamak
  • Kırık bir ayrımı skor örüntüsünden teşhis etmek
  1. 1

    Teori

    Kavramın çalışma mantığı

  2. 2

    Örnek

    Gerçek bir senaryo üzerinde gösterim

  3. 3

    Lab

    Uygulamalı alıştırma

  4. 4

    Test

    Kısa ölçüm

  5. 5

    Proje

    Rotadaki projeye katkı

Kısa cevap

Doğrulama tasarımı, üretimdeki tahmin durumunun küçük bir kopyasını kurmaktır. Üretimde model geçmişe bakıp geleceği tahmin ediyorsa doğrulama da öyle olmalıdır; üretimde daha önce hiç görülmemiş müşterileri puanlıyorsa aynı müşterinin kayıtları doğrulamada iki tarafa dağılmamalıdır. Ayrım yanlışsa ölçülen her sayı yanlıştır ve model seçimi de hiperparametre araması da o yanlış sayının üzerine kurulur.

Teori: ayrım bir varsayımdır#

Rastgele k-katlamalı doğrulama, satırların birbirinden bağımsız ve aynı dağılımdan geldiğini varsayar. Gerçek veri bu varsayımı çoğu zaman karşılamaz: aynı müşteriye ait onlarca kayıt vardır, kayıtlar zamana göre sıralıdır, aynı cihazdan ya da aynı şubeden gelen satırlar birbirine benzer. Bu bağımlılıklar rastgele bölmede eğitim ile doğrulama arasında köprü kurar; model ezberlediğini genelleme sanır.

Zaman boyutu iki ayrı sorun üretir. Birincisi bilgi yönü: geleceğe ait satırlarla eğitip geçmişi tahmin etmek üretimde asla olmayacak bir durumdur. İkincisi kayma: hedefin dağılımı ve değişkenlerin anlamı zamanla değişir. Zaman ayrımı ikisini birden ölçer; rastgele ayrım ikisini de gizler ve gerçekte olmayan bir kararlılık raporlar.

Üçüncü katman doğrulama kümesinin kendisinin aşınmasıdır. Aynı küme üzerinde çok sayıda ayar denendiğinde en iyi görünen ayar bir miktar gürültüye uymuş olur; raporlanan skor iyimserdir. Bu yüzden seçim yapılan küme ile son skorun okunduğu küme ayrılır: seçim doğrulama katlamalarında yapılır, tek seferlik okuma hiç dokunulmamış bir test diliminde yapılır.

Örnek: yapıya göre şema#

Veri yapısıDoğru şemaRastgele ayrım yapılırsa
Bağımsız kayıtlar, zaman etkisi yokKatmanlı k-katlamaGenellikle sorun çıkmaz
Aynı varlığa ait çok sayıda kayıtGruba göre katlamaModel varlığı ezberler, skor şişer
Zamana bağlı, ileriye tahminKayan başlangıçlı zaman ayrımıGelecekten geçmişe bilgi sızar
Hem zamana bağlı hem grupluZaman ayrımı içinde grup bütünlüğüİki sızıntı birden oluşur
Nadir sınıf, az sayıda pozitifKatmanlı ve tekrarlı katlamaKatlamalar arası skor sıçrar, karar güvenilmez olur
Şube ya da coğrafya bazlı yayılımŞubeye göre katlamaAynı şubenin kayıtları iki tarafta kalır, genelleme ölçülemez
Şema üretimdeki tahmin durumundan türetilir: modelin üretimde ilk kez göreceği yenilik neyse, doğrulamada da o olmalıdır.

Zaman ayrımı ve boşluk#

Zaman ayrımında iki ayar belirleyicidir. Birincisi kayan başlangıç: eğitim penceresi ileri doğru kaydırılarak birden çok kat üretilir, çünkü tek bir kesme noktası o noktanın tesadüfi özelliklerine bağımlı bir sonuç verir. İkincisi boşluk: eğitim sonu ile doğrulama başlangıcı arasında, etiketin olgunlaşma süresi kadar bir aralık bırakılır. Etiket iki ay sonra kesinleşiyorsa eğitim penceresinin son iki ayı henüz güvenilir etiket taşımaz.

python
from datetime import timedelta


def kayan_baslangic_katlari(tarihler, kat_sayisi, dogrulama_gun, bosluk_gun):
    """Zaman sıralı veride eğitim/doğrulama indeks çiftleri üretir.

    tarihler: her satırın tahmin anı
    kat_sayisi: üretilecek katlama sayısı
    dogrulama_gun: her katın doğrulama penceresi uzunluğu
    bosluk_gun: etiketin olgunlaşma süresi kadar bırakılan aralık
    """
    # Üst sınır dışlayıcı olduğu için bir gün eklenir; aksi halde en son
    # tarihli kayıtlar hiçbir doğrulama penceresine düşmez.
    son = max(tarihler) + timedelta(days=1)
    pencere = timedelta(days=dogrulama_gun)
    bosluk = timedelta(days=bosluk_gun)

    for i in range(kat_sayisi, 0, -1):
        bitis = son - (i - 1) * pencere
        baslangic = bitis - pencere
        egitim_bitis = baslangic - bosluk
        egitim = [j for j, t in enumerate(tarihler) if t < egitim_bitis]
        dogrulama = [
            j for j, t in enumerate(tarihler) if baslangic <= t < bitis
        ]
        if egitim and dogrulama:
            yield egitim, dogrulama

Karar: şema nasıl kurulur#

  1. 1Üretim durumunu yaz

    Model üretimde neyi ilk kez görüyor: yeni bir zaman dilimini mi, yeni bir müşteriyi mi, yeni bir şubeyi mi?

  2. 2Ayrım eksenini seç

    Yeniliğin geldiği eksen ayrım eksenidir: zaman, grup ya da ikisi birden.

  3. 3Boşluğu ve pencereyi belirle

    Etiketin olgunlaşma süresi kadar boşluk; iş döngüsünün en az bir turunu kapsayan uzunlukta doğrulama penceresi.

  4. 4Seçim ve ölçüm kümelerini ayır

    Hiperparametre ve özellik seçimi katlamaların içinde kalsın; son okuma hiç dokunulmamış dilimde yapılsın.

  5. 5Şemayı dondur

    Ayrımı bir kez yazıp sabitleyin; skor beklenenden düşük çıktığında ayrımı değil hipotezi değiştirin.

Sık yapılan hata#

En sık hata, doğrulama şemasını sonuca göre seçmektir. Zaman ayrımında skor düşük çıkınca rastgele katlamaya dönmek ölçümü değil yalnızca raporu düzeltir. İkinci hata, iç içe seçimi atlamaktır: hiperparametre araması doğrulama katlamalarında yapılıp aynı katlamaların en iyi skoru nihai sonuç olarak raporlandığında, raporlanan sayı seçim sürecinin iyimserliğini taşır. Üçüncüsü, ön işlemeyi ayrımdan önce çalıştırmaktır; doldurma ve ölçekleme istatistikleri her katlamada yeniden hesaplanmalıdır.

  • Katlamalar arası skor farkı, modeller arası skor farkından büyük.
  • Gruba göre katlamaya geçildiğinde skor belirgin biçimde düşüyor; rastgele bölme aynı varlığı iki tarafa dağıtıyordu.
  • Yeni bir zaman dilimi eklendiğinde skor sistematik olarak düşüyor.
  • Test dilimindeki skor, seçimin yapıldığı katlamaların ortalamasından sistematik olarak düşük.
  • Ön işleme hattı ayrımdan önce tek seferde çalıştırılmış.

LAB · UYGULAMALI ALIŞTIRMA

Üç şemayı yan yana koyun

  1. 1Verinizde tahmin anı ve varlık kimliği kolonlarını belirleyip her satırın hangi gruba ve hangi zaman dilimine düştüğünü işaretleyin.
  2. 2Aynı model ve aynı hat ile iki doğrulama koşusu yapın: rastgele k-katlama ve kayan başlangıçlı zaman ayrımı.
  3. 3İki şemanın metrik ortalamasını ve katlamalar arası yayılımını karşılaştırıp farkı not edin.
  4. 4Gruba göre katlama ekleyip aynı varlığın kayıtlarının iki tarafa düşmesini engelleyin ve skorun nasıl değiştiğini kaydedin.
  5. 5Zaman ayrımına etiketin olgunlaşma süresi kadar boşluk koyup koşuyu tekrarlayın.
  6. 6Üç şemadan hangisinin üretim durumunu temsil ettiğini bir paragrafla gerekçelendirip şemayı dondurun.

Beklenen çıktı

Rastgele, gruplu ve zamanlı doğrulama şemalarının aynı model üzerindeki skor farkını gösteren karşılaştırma ve gerekçesi yazılmış, dondurulmuş bir doğrulama tasarımı.

Sık sorulan sorular

Kaç katlama kullanmalıyım?

Katlama sayısı bir ödünleşimdir: fazla katlama her eğitim kümesini büyütüp yanlılığı azaltır ama maliyeti ve katlamalar arası örtüşmeyi artırır. Zaman ayrımında sayı veri uzunluğuyla sınırlıdır ve her katın doğrulama penceresi iş döngüsünün en az bir turunu kapsamalıdır. Skor yayılımı karar verdiremeyecek kadar genişse katlama sayısını değil doğrulama penceresini büyütmek daha çok işe yarar.

Test kümesine hiç bakmamak gerçekçi mi?

Bir kez bakmak ve ondan sonra karar değiştirmemek gerçekçidir. Test skoruna bakıp modeli değiştirdiğinizde o küme artık doğrulama kümesine dönüşmüştür; bunu bilerek yapıyorsanız sorun değil, bilmeden raporluyorsanız sorundur. Üretime alınacak sürüm için yeni ve dokunulmamış bir dilim ayırın.

Zaman ayrımında eğitim penceresi genişlemeli mi, kaymalı mı?

Genişleyen pencere tüm geçmişi tutar; veri azsa ve ilişki kararlıysa avantajlıdır. Kayan pencere yalnızca son dönemi tutar; davranış hızla değişiyorsa eski veriyi dışarıda bırakmak yararlıdır. İkisini aynı şema içinde koşturup karşılaştırmak, kayma hızını ölçmenin pratik bir yoludur.

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.