Tebrikler! Tek boynuzlu at modelini dağıttınız. Modeliniz 7/24 sorunsuz çalışmalıdır. Bunun gerçekleştiğinden emin olmak 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 verilerinizi sürekli olarak beklenen istatistiksel değerlere göre kontrol etmeniz gerekir. Bu kural koleksiyonuna veri şeması denir. Aşağıdaki adımları uygulayarak bir veri şeması tanımlayın:
Özelliklerinizin kapsamını ve dağıtımını anlayın. Kategorik özellikler için olası değerler kümesini anlayın.
Anlayışınızı veri şemasına kodlayın. Aşağıda kural örnekleri 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 kullanıldığını kontrol edin (İngilizce metin özelliği için).
- Her kategorik özelliğin, olası değerlerden oluşan sabit bir gruptaki değerlerden birine ayarlandığını kontrol edin.
Verilerinizi veri şemasına göre 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 veriler üzerinde 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 özellikler üzerinde eğitilir. Özellik mühendisliği uygulanmış veriler, ham giriş verilerinden çok farklı olabileceğinden, özellik mühendisliği uygulanmış verileri ham giriş verileriyle ilgili kontrollerinizden ayrı olarak kontrol etmeniz gerekir.
Özellik mühendisliği uygulanmış verilerle ilgili anlayışınıza dayalı olarak birim testleri yazın. Örneğin, aşağıdaki gibi koşulları kontrol etmek için birim testleri yazabilirsiniz:
- Tüm sayısal özellikler, örneğin 0 ile 1 arasında ölçeklendirilir.
- One-hot kodlanmış vektörler yalnızca tek bir 1 ve N-1 sıfır içerir.
- Dönüşümden sonraki veri dağıtımları beklentilere uygundur. Örneğin, Z puanlarını kullanarak normalleştirme yaptıysanız Z puanlarının ortalaması 0 olmalıdır.
- Aykırı değerler ölçeklendirme veya kırpma gibi yöntemlerle işlenir.
Önemli veri dilimlerinin metriklerini kontrol etme
Başarılı bir bütün bazen başarısız bir alt kümenin üzerini örter. Başka bir deyişle, genel metrikleri mükemmel olan bir model, belirli durumlarda hâlâ kötü tahminler yapabilir. Örneğin:
Tek boynuzlu at modeliniz genel olarak iyi performans gösteriyor ancak Sahra Çölü ile ilgili tahminlerde bulunurken kötü performans gösteriyor.
Genel olarak mükemmel bir AUC ile yetinen 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 gibi veri alt kümelerine veri dilimleri adı verilir.
İlgilendiğiniz veri dilimlerini belirleyin. Ardından, bu veri dilimlerinin model metriklerini tüm veri kümenizin metrikleriyle karşılaştırın. Modelinizin tüm veri dilimlerinde iyi performans gösterdiğini kontrol etmek, önyargıyı ortadan kaldırmaya yardımcı olur. Daha fazla bilgi için Adalet: Önyargı Açısından Değerlendirme başlıklı makaleyi inceleyin.
Gerçek dünya metriklerini kullanma
Model metrikleri, modelinizin gerçek dünyadaki etkisini ölçmeyebilir. Örneğin, bir hiperparametrenin değiştirilmesi modelin AUC'sini artırabilir ancak bu değişiklik kullanıcı deneyimini nasıl etkiledi? Gerçek dünyadaki etkiyi ölçmek için ayrı metrikler tanımlamanız gerekir. Örneğin, modelinizin kullanıcılarına modelin tek boynuzlu at göreceklerini tahmin ettiği sırada gerçekten tek boynuzlu at görüp görmediklerini sorabilirsiniz.
Eğitim ve sunma arası sapmayı kontrol etme
Eğitim-sunum eğriliği, eğitim sırasında kullanılan giriş verilerinizin sunumdaki giriş verilerinizden farklı olmasıdır. Aşağıdaki tabloda, iki önemli çarpıklık türü açıklanmaktadır:
Tür | Tanım | Örnek | Çözüm |
---|---|---|---|
Şema çarpıklığı | Eğitim ve yayın giriş verileri aynı şemaya uygun değil. | Modeliniz eski verilerle eğitilmeye devam ederken yayın verilerinin biçimi veya dağıtımı değişir. | Eğitim ve yayın verilerini doğrulamak için aynı şemayı kullanın. Şemanız tarafından kontrol edilmeyen istatistikleri (ör. eksik değerlerin oranı) ayrı olarak kontrol ettiğinizden emin olun. |
Özellik çarpıklığı | Mühendislik ürünü veriler, eğitim ve sunma arasında farklılık gösterir. | Özellik mühendisliği kodu, eğitim ve sunma arasında farklılık göstererek farklı mühendislik verileri üretir. | Şema çarpıklığına benzer şekilde, eğitim ve sunum için tasarlanmış verilerde aynı istatistiksel kuralları uygulayın. Algılanan çarpık özelliklerin sayısını ve özellik başına çarpık örneklerin oranını izleyin. |
Eğitim ve sunma arası sapmanın nedenleri fark edilmesi 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 hizmet sunarken kullanabileceğiniz özellikleri kullanın.
Alıştırma: Anlayıp anlamadığınızı kontrol 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.
Yanıt: Sorun, günün satışları tamamlanmadan önce, tahmin zamanında müşteri sayısını bilmemenizdir. Bu nedenle, günlük gelirinizle ilgili güçlü bir tahmin sunsa bile bu özellik kullanışlı değildir. Benzer şekilde, bir modeli eğitirken ve harika değerlendirme metrikleri (ör.0,99 AUC) elde ederken etiketinizde yer alabilecek bu tür özelliklere dikkat edin.
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 girdiği anlamına gelir. Etiket sızıntısını tespit etmek bazen çok zordur.
Alıştırma: Anlayıp anlamadığınızı kontrol edin
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. Modelinizde aşağıdaki gibi özellikler kullanılıyor:
- Hasta yaşı
- Hasta cinsiyeti
- Önceki tıbbi durumlar
- Hastane adı
- Hayati bulgular
- Test sonuçları
- Kalıtım
Etiket aşağıdaki gibidir:
- Boole: Hastanın kanseri var mı?
Verileri dikkatli bir şekilde bölümlere ayırarak eğitim kümenizin doğrulama kümenizden ve test kümenizden iyi bir şekilde ayrılmasını sağlarsınız. Model, doğrulama kümesi ve test kümesinde son derece iyi performans gösteriyor. Metrikler harika. Maalesef model, gerçek dünyadaki yeni hastalarda çok kötü performans gösteriyor.
Yanıt: Modelin özelliklerinden biri hastane adıdır. Bazı hastaneler kanser tedavisinde uzmanlaşmıştır. Eğitim sırasında model, belirli hastanelere atanan hastaların kanser olma olasılığının çok yüksek olduğunu hızlı bir şekilde öğrendi. Bu nedenle hastane adı, yüksek ağırlıklı bir özellik haline geldi.
Çıkarım sırasında çoğu hasta henüz bir hastaneye atanmamıştı. Sonuçta modelin amacı, kanserin varlığını veya yokluğunu teşhis etmek ve ardından bu teşhisi kullanarak hastayı uygun bir hastaneye yönlendirmekti. Sonuç olarak, çıkarım sırasında hastane adı özelliği henüz kullanılamıyordu ve modelin diğer özelliklere güvenmesi gerekiyordu.
Ardışık düzen boyunca model yaşını izleme
Yayın verileri zaman içinde değişir ancak modeliniz düzenli olarak yeniden eğitilmezse 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ş belirleyin. Modelin yayın sırasındaki yaşını izlemenin yanı sıra, işlem hattındaki duraklamaları yakalamak için işlem hattı boyunca modelin yaşını da izlemeniz gerekir.
Model ağırlıklarının ve çıkışlarının sayısal olarak kararlı olduğunu 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 çıkış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 sayıda tahmin isteği ve daha da fazla eğitim verisi alıyorsunuz. Modelinizin eğitilmesi için daha fazla bellek ve zaman gerektiğini fark edene kadar bu durumun harika olduğunu düşünürsünüz. Aşağıdaki adımları uygulayarak modelinizin performansını izlemeye karar verirsiniz:
- 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ünün saniyede eğitim adımlarını önceki sürüme ve sabit bir eşiğe göre test edin.
- Bellek kullanımına eşik belirleyerek bellek sızıntılarını yakalayın.
- API yanıt sürelerini izleyin ve yüzdelik dilimlerini takip edin. API yanıt süreleri kontrolünüz dışında olsa da yavaş yanıtlar, gerçek dünyadaki metriklerin kötü olmasına neden olabilir.
- Saniyede yanıtlanan sorgu sayısını izleyin.
Sunulan verilerde canlı modelin kalitesini test etme
Modelinizi doğruladınız. Ancak doğrulama verilerinizi kaydettikten sonra tek boynuzlu at davranışı gibi gerçek dünya senaryoları değişirse ne olur? Bu durumda, sunulan modelinizin kalitesi düşer. Ancak gerçek dünya verileri her zaman etiketlenmediğinden yayınlamada kaliteyi test etmek zordur. Yayın verileriniz etiketlenmemişse aşağıdaki testleri yapın:
Tahminlerde önemli istatistiksel önyargı gösteren modelleri inceleyin. Bkz. Sınıflandırma: Tahmin Yanlılığı.
Modeliniz için gerçek dünya metriklerini izleyin. Örneğin, spam'i sınıflandırıyorsanız tahminlerinizi kullanıcılar tarafından bildirilen spam ile karşılaştırın.
Sorgularınızın bir kısmında yeni bir model sürümü yayınlayarak eğitim ve yayın verileri arasındaki olası farklılıkları azaltın. Yeni yayın modelinizi doğrularken tüm sorguları kademeli olarak yeni sürüme geçirin.
Bu testleri kullanırken tahmin kalitesindeki hem ani hem de yavaş bozulmaları izlemeyi unutmayın.
Rastgele hale getirme
Veri oluşturma ardışık düzeninizi tekrarlanabilir hale getirin. Model kalitesini nasıl etkilediğini görmek için bir özellik eklemek istediğinizi varsayalım. Adil bir deneme için veri kümeleriniz bu yeni özellik dışında aynı olmalıdır. Bu doğrultuda, veri oluşturma sürecindeki tüm rastgeleleştirme işlemlerinin deterministik olarak yapılabildiğinden emin olun:
- Rastgele sayı oluşturucularınızı (RNG) başlatın. Başlatma, rastgele sayı üretecini her çalıştırdığınızda aynı değerleri aynı sırada vermesini sağlayarak veri kümenizi yeniden oluşturur.
- Değişmez karma anahtarlar kullanın. Karma oluşturma, verileri bölmek veya örneklemek için yaygın olarak kullanılan bir yöntemdir. Her örneği karma oluşturma işlemine tabi tutabilir ve ortaya çıkan tam sayıyı kullanarak örneğin hangi bölüme yerleştirileceğine karar verebilirsiniz. Karma işlevinizin girişleri, veri oluşturma programını her çalıştırdığınızda değişmemelidir. Karma oluşturma işleminde geçerli saati veya rastgele bir sayı kullanmayın. Örneğin, karmalarınızı isteğe bağlı olarak yeniden oluşturmak istiyorsanız bu kurala uymanız gerekir.
Yukarıdaki yaklaşımlar hem verilerinizi örnekleme hem de bölme için geçerlidir.
Karma oluşturma ile ilgili dikkat edilmesi gereken noktalar
Yine, arama sorgularını topladığınızı ve sorguları dahil etmek veya hariç tutmak için karma oluşturma kullandığınızı düşünelim. Karma anahtar yalnızca sorguyu kullanıyorsa verilerin birden fazla gününde bu sorguyu her zaman dahil eder veya her zaman hariç tutarsınız. Bir sorguyu her zaman dahil etmek veya her zaman hariç tutmak şu nedenlerle kötüdür:
- Eğitim setinizde daha az çeşitli sorgular gösterilir.
- Değerlendirme kümeleriniz, eğitim verilerinizle çakışmadığı 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 + sorgu tarihi üzerinde karma oluşturabilirsiniz. Bu, her gün için farklı bir karma oluşturulmasına neden olur.
