Üretim makine öğrenimi sistemleri: Ardışık düzenleri izleme

Tebrikler! Tek boynuzlu at modelini dağıttınız. Modeliniz 7/24 sorunsuz şekilde çalışmalıdır. Bunun gerçekleşmesini sağlamak için makine öğrenimi (ML) ardışık düzeninizi izlemeniz gerekir.

Ham verileri doğrulamak için veri şeması yazma

Verilerinizi izlemek için verilerin karşılaması gereken kurallar yazarak verileri sürekli olarak beklenen istatistiksel değerlerle karşılaştırmanız gerekir. Bu kural koleksiyonuna veri şeması denir. Aşağıdaki adımları uygulayarak bir veri şeması tanımlayın:

  1. Özelliklerinizin kapsamını ve dağılımını anlayın. Kategorik özellikler için olası değer grubunu anlayın.

  2. Anladığınız bilgileri veri şemasına kodlayın. Aşağıda kurallara dair örnekler verilmiştir:

    • Kullanıcı tarafından gönderilen puanların her zaman 1 ile 5 arasında olduğundan emin olun.
    • The kelimesinin en sık geçtiğinden emin olun (İngilizce metin özelliği için).
    • Her kategorik özelliğin, sabit bir olası değerler grubundan bir değere ayarlandığından emin olun.
  3. Verilerinizi veri şemasıyla test edin. Şemanız aşağıdaki gibi veri hatalarını yakalamalıdır:

    • Anormallikler
    • Kategorik değişkenlerin beklenmeyen değerleri
    • Beklenmeyen veri dağılımları

Özellik mühendisliğini doğrulamak için birim testleri yazma

Ham verileriniz veri şemasını geçse de modeliniz ham verilerle eğitilmez. Bunun yerine, modeliniz özellik mühendisliği uygulanmış verilerle eğitilir. Örneğin, modeliniz ham sayısal veriler yerine normalleştirilmiş sayısal özelliklerle eğitilir. Özellik mühendisliği uygulanmış veriler ham giriş verilerinden çok farklı olabileceğinden, özellik mühendisliği uygulanmış verileri ham giriş verilerindeki kontrollerinizden ayrı olarak kontrol etmeniz gerekir.

Mühendislik uygulanmış özelliklere dair bilginize dayalı birim testleri yazın. Örneğin, aşağıdaki gibi koşulları kontrol etmek için birim testleri yazabilirsiniz:

  • Tüm sayısal özellikler ölçeklendirilir (ör. 0 ile 1 arasında).
  • One-hot kodlanmış vektörler yalnızca tek bir 1 ve N-1 sıfır içerir.
  • Dönüşümden sonraki veri dağılımları beklentilere uygundur. Örneğin, Z puanlarını kullanarak normalleştirme yaptıysanız Z puanlarının ortalaması 0 olmalıdır.
  • Ayrık değerler, ölçeklendirme veya kırpma gibi işlemlerle ele alınır.

Önemli veri dilimleri için metrikleri kontrol etme

Başarılı bir bütün bazen başarısız bir alt kümeyi gölgede bırakır. Diğer bir deyişle, genel olarak mükemmel metriklere sahip bir model, belirli durumlar için yine de kötü tahminler yapabilir. Örneğin:

Tek boynuzlu at modeliniz genel olarak iyi performans gösteriyor ancak Sahra Çölü için tahmin yaparken kötü performans gösteriyor.

Genel olarak mükemmel bir AUC'den memnun olan bir mühendisseniz modelin Sahra Çölü'ndeki sorunlarını fark etmeyebilirsiniz. Her bölge için iyi tahminler yapmak önemliyse her bölgenin performansını izlemeniz gerekir. Sahra Çölü'ne karşılık gelen veri alt kümeleri veri dilimleri olarak adlandırılır.

İlgilendiğiniz veri dilimlerini tanımlayın. Ardından, bu veri dilimleri için model metriklerini veri kümenizin tamamına ait metriklerle karşılaştırın. Modelinizin tüm veri dilimlerinde iyi performans gösterdiğinden emin olmak, önyargıyı ortadan kaldırmaya yardımcı olur. Daha fazla bilgi için Adil Olmak: Yanlışı Önleme başlıklı makaleyi inceleyin.

Gerçek dünyadaki metrikleri kullanma

Model metrikleri, modelinizin gerçek dünyadaki etkisini her zaman ölçmez. Örneğin, bir hiper parametrenin değiştirilmesi modelin AUC'sini artırabilir ancak bu değişiklik kullanıcı deneyimini nasıl etkiledi? Gerçek hayattaki etkiyi ölçmek için ayrı metrikler tanımlamanız gerekir. Örneğin, modelinizin kullanıcılarına anket yaparak modelin tahmin ettiği bir tek boynuzlu atı gerçekten gördüklerini doğrulayabilirsiniz.

Eğitim ve sunma arası sapma olup olmadığını kontrol edin

Eğitim-yayınlama yönü, eğitim sırasındaki giriş verilerinizin yayın sırasındaki giriş verilerinizden farklı olduğu anlamına gelir. Aşağıdaki tabloda, iki önemli sapma türü açıklanmaktadır:

Tür Tanım Örnek Çözüm
Şema çarpıklığı Eğitim ve sunma giriş verileri aynı şemaya uygun değil. Modeliniz eski verilerle eğitilmeye devam ederken sunma verilerinin biçimi veya dağılımı değişir. Eğitim ve yayınlama verilerini doğrulamak için aynı şemayı kullanın. Eksik değerlerin oranı gibi şemanız tarafından kontrol edilmeyen istatistikleri ayrı olarak kontrol ettiğinizden emin olun
Özellik çarpıklığı Mühendislik verileri, eğitim ve sunma arasında farklılık gösterir. Özellik mühendisliği kodu, eğitim ve yayınlama arasında farklılık gösterir ve farklı mühendislik verileri oluşturur. Şema çarpıklığına benzer şekilde, eğitim ve sunma aşamalarında aynı istatistiksel kuralları uygulayın. Tespit edilen çarpık özelliklerin sayısını ve özellik başına çarpık örneklerin oranını izleyin.

Eğitim ve sunma arası sapmanın nedenleri anlaşılması zor olabilir. Tahmin sırasında modelinizin hangi verilere erişebileceğini her zaman göz önünde bulundurun. Eğitim sırasında yalnızca yayın sırasında kullanacağınız özellikleri kullanın.

Alıştırma: Öğrendiklerinizi test edin

Online mağazanız olduğunu ve belirli bir günde ne kadar para kazanacağınızı tahmin etmek istediğinizi varsayalım. Makine öğrenimi hedefiniz, müşteri sayısını bir özellik olarak kullanarak günlük geliri tahmin etmektir.

Ne gibi sorunlarla karşılaşabilirsiniz?
Yanıtı görmek için burayı tıklayın

Etiket sızıntısı olup olmadığını kontrol etme

Etiket sızıntısı, tahmin etmeye çalıştığınız kesin referans etiketlerinizin eğitim özelliklerinize yanlışlıkla girmiş olması anlamına gelir. Etiket sızıntısının tespit edilmesi bazen çok zordur.

Alıştırma: Anladığınızdan emin olun

Yeni bir hastane hastasının kanser olup olmadığını tahmin etmek için ikili sınıflandırma modeli oluşturduğunuzu varsayalım. Modeliniz aşağıdaki gibi özellikler kullanıyor:

  • Hasta yaşı
  • Hastanın cinsiyeti
  • Önceki tıbbi durumlar
  • Hastane adı
  • Hayati bulgular
  • Test sonuçları
  • Kalıtım

Etiket şu şekildedir:

  • Boole: Hasta kanser hastası mı?

Eğitim kümenizin doğrulama kümenizden ve test kümenizden iyice ayrıldığından emin olarak verileri dikkatlice bölümlendirirsiniz. Model, doğrulama ve test veri kümelerinde çok iyi performans gösteriyor. Metrikler mükemmel. Maalesef model, gerçek dünyadaki yeni hastalarda çok kötü performans gösteriyor.

Test veri kümesinde mükemmel performans gösteren bu model neden gerçek dünyada başarısız oldu?
Yanıtı görmek için burayı tıklayın

Ardışık düzen boyunca model yaşını izleme

Yayınlanan veriler zaman içinde değişiyorsa ancak modeliniz düzenli olarak yeniden eğitilmiyorsa model kalitesinde düşüş görürsünüz. Modelin yeni verilerle yeniden eğitilmesinden bu yana geçen süreyi izleyin ve uyarılar için bir eşik yaş ayarlayın. Modelin yayınlanma sırasındaki yaşını izlemenin yanı sıra, ardışık düzendeki duraklamaları tespit etmek için modelin ardışık düzendeki yaşını da izlemeniz gerekir.

Model ağırlıklarının ve çıkışlarının sayısal olarak kararlı olup olmadığını test etme

Model eğitimi sırasında ağırlıklarınız ve katman çıkışlarınız NaN (sayı değil) veya Inf (sonsuz) olmamalıdır. Ağırlıklarınızın ve katman çıkışlarınızın NaN ve Inf değerlerini kontrol etmek için testler yazın. Ayrıca, bir katmanın çıktılarının yarısından fazlasının sıfır olmadığını test edin.

Model performansını izleme

Tek boynuzlu at görünümü tahmin aracınız beklenenden daha popüler oldu. Çok fazla tahmin isteği ve daha da fazla eğitim verisi alıyorsunuz. Modelinizin eğitilmesinin giderek daha fazla bellek ve zaman aldığını fark edene kadar bunun harika olduğunu düşünürsünüz. Aşağıdaki adımları uygulayarak modelinizin performansını izlemeye karar veriyorsunuz:

  • Kod, model ve veri sürümlerine göre model performansını izleyin. Bu tür izleme, performanstaki düşüşlerin tam nedenini belirlemenize olanak tanır.
  • Yeni bir model sürümü için saniye başına eğitim adımlarını önceki sürüm ve sabit bir eşikle karşılaştırarak test edin.
  • Bellek kullanımı için bir eşik belirleyerek bellek sızıntılarını yakalayabilirsiniz.
  • API yanıt sürelerini izleyin ve yüzdelik değerlerini takip edin. API yanıt süreleri sizin kontrolünüz dışında olsa da yavaş yanıtlar gerçek dünyada kötü metriklere neden olabilir.
  • Saniyede yanıtlanan sorgu sayısını izleyin.

Yayınlanan verilerde canlı modelin kalitesini test etme

Modelinizi doğruladınız. Ancak tek boynuzlu at davranışı gibi gerçek dünya senaryoları, doğrulama verilerinizi kaydettikten sonra değişirse ne olur? Bu durumda, yayınlanan modelinizin kalitesi düşer. Ancak gerçek dünyadaki veriler her zaman etiketli olmadığından, yayınlama kalitesini test etmek zordur. Yayınlama verileriniz etiketlenmemişse aşağıdaki testleri göz önünde bulundurun:

  • Gerçek kişileri kullanarak etiketler oluşturun.

  • Tahminlerde önemli istatistiksel önyargı gösteren modelleri inceleyin. Sınıflandırma: Tahmin Yanılgısı başlıklı makaleyi inceleyin.

  • Modeliniz için gerçek dünya metriklerini izleyin. Örneğin, spam'i sınıflandırıyorsanız tahminlerinizi kullanıcı tarafından bildirilen spam ile karşılaştırın.

  • Sorgularınızın bir kısmında yeni bir model sürümü sunarak eğitim ve veri sunma arasındaki olası farklılıkları azaltın. Yeni yayınlama modelinizi doğrularken tüm sorguları kademeli olarak yeni sürüme geçirin.

Bu testleri kullanarak tahmin kalitesindeki hem ani hem de yavaş düşüşleri izlemeyi unutmayın.

Rastgele hale getirme

Veri oluşturma ardışık düzeninizi yeniden üretilebilir hale getirin. Bir özelliğin model kalitesini nasıl etkilediğini görmek için eklemek istediğinizi varsayalım. Adil bir deneme için veri kümeleriniz bu yeni özellik dışında aynı olmalıdır. Bu bağlamda, veri oluşturma sürecindeki tüm rastgeleleştirme işlemlerinin deterministik şekilde yapılabildiğinden emin olun:

  • Rastgele sayı oluşturucularınızı (RNG'ler) başlatın. Tohumlama, RNG'nin her çalıştırdığınızda aynı değerleri aynı sırayla döndürmesini ve veri kümenizi yeniden oluşturmasını sağlar.
  • Değişmez karma anahtarları kullanın. Karma oluşturma, verileri bölme veya örnekleme için yaygın olarak kullanılan bir yöntemdir. Her bir örneği karma oluşturabilir ve elde edilen tam sayıyı kullanarak örneğin hangi bölmelere yerleştirileceğine karar verebilirsiniz. Karma oluşturma işlevinize girilen girişler, veri oluşturma programını her çalıştırdığınızda değişmemelidir. Karma oluşturma işleminizde mevcut zamanı veya rastgele bir sayı kullanmayın (ör. karma oluşturma işlemlerinizi isteğe bağlı olarak yeniden oluşturmak istiyorsanız).

Yukarıdaki yaklaşımlar hem verilerinizi örnekleme hem de bölme için geçerlidir.

Karma oluşturma ile ilgili dikkat edilmesi gereken noktalar

Arama sorgularını topladığınız ve sorguları dahil etmek veya hariç tutmak için karma oluşturma işlemini kullandığınızı tekrar düşünün. Karma oluşturma anahtarı yalnızca sorguyu kullandıysa birden fazla güne ait verilerde bu sorguyu her zaman dahil edersiniz veya her zaman hariç tutarsınız. Bir sorguyu her zaman dahil etmek veya her zaman hariç tutmak aşağıdaki nedenlerle kötüdür:

  • Eğitim veri kümenizde daha az çeşitlilik gösteren bir sorgu grubu görürsünüz.
  • Değerlendirme kümeleriniz, eğitim verilerinizle örtüşmeyeceği için yapay olarak zor olacaktır. Gerçekte, yayın sırasında eğitim verilerinizdeki canlı trafiğin bir kısmını görmüş olursunuz. Bu nedenle, değerlendirmeniz bunu yansıtmalıdır.

Bunun yerine, sorgu + tarih için karma oluşturabilirsiniz. Bu, her gün farklı bir karma oluşturmanıza neden olur.

 

Şekil 7. Yalnızca sorgu üzerinde karma oluşturmanın verilerin her gün aynı pakete, sorgu ve sorgu süresi üzerinde karma oluşturmanın ise verilerin her gün farklı paketlere gitmesine neden olduğunu gösteren animasyonlu görselleştirme. Üç grup; Eğitim, Değerlendirme ve Yoksayıldı'dır.
Şekil 7. Sorgu üzerinde karma oluşturma ve sorgu + sorgu süresi üzerinde karma oluşturma.