Veri üç parçaya neden bölünür: eğitim, doğrulama ve test seti
Eğitim seti modeli öğretir, doğrulama seti ayarları seçtirir, test seti ise nihai başarıyı bir kez ölçer. Üçünü ayırmak, modelin gerçek performansını olduğundan iyi göstermesini önler.
Bir bakışta
- Her parçanın ayrı bir görevi var. Eğitim öğretir, doğrulama ayar yaptırır, test son karneyi verir.
- Test setine yalnızca sonda bakılır. Ayarları test sonucuna göre değiştirmek, test setini eğitimin parçası yapar.
- Oran veri miktarına göre değişir. Veri büyükse doğrulama ve test payı küçültülebilir, küçükse çapraz doğrulama düşünülür.
- Bölme rastgele olmak zorunda değildir. Zaman sırası ya da sınıf dengesi varsa bölme bunlara göre yapılır.
Üç veri parçası ve görevleri
Makine öğrenmesinde eldeki veri çoğunlukla üç ayrı parçaya bölünür. Eğitim seti (training set), modelin parametrelerini öğrendiği verilerdir. Doğrulama seti (validation set), eğitim sırasında modeli karşılaştırmak, hiperparametreleri ve özellik kümesini seçmek için kullanılır. Test seti (test set) ise tüm kararlar verildikten sonra modelin görmediği veride nasıl çalışacağını tahmin etmek için en sonda bir kez açılır.
Bu ayrımın nedeni basittir: bir modeli eğittiği veriyle değerlendirirseniz sonuç gerçekten çok daha iyi görünür, çünkü model o veriyi zaten görmüştür. Doğrulama seti, ayar yapma ihtiyacını test setinden ayırır; böylece test sonucu tarafsız kalır.
Eğitimden teste her parça bir sonraki karara hizmet eder
- Eğitim setiModel parametrelerini buradan öğrenir.
- Doğrulama setiModel ve ayar seçimi burada karşılaştırılır.
- Test setiSeçilen modelin son, tarafsız ölçümü.
Veri hangi oranlarda bölünür?
Herkesin kabul ettiği tek bir oran yoktur; yaygın bir başlangıç, verinin büyük bölümünü eğitime, kalanını doğrulama ve test arasında eşit paylaştırmaktır. Örneğin verinin yaklaşık dörtte üçünü eğitime, kalanını doğrulama ve test arasında eşit bölmek sık görülen bir seçimdir. Çok büyük veri setlerinde doğrulama ve test payları, mutlak örnek sayısı yeterli olduğu sürece daha da küçültülebilir.
Veri azsa her parçanın temsil gücü zayıflar. Bu durumda küçük bir doğrulama setine güvenmek yerine, doğrulamayı çapraz doğrulamayla yapıp yalnızca test setini ayrı tutmak çoğunlukla daha sağlıklıdır. Oran kararında asıl soru şudur: test seti, modelin canlıda karşılaşacağı çeşitliliği yansıtacak kadar büyük mü?
Bölme nasıl yapılır?
Genel durumda satırlar rastgele karıştırılıp bölünür ve sonuçların yeniden üretilebilmesi için rastgelelik sabitlenir (random seed). Python'da bu iş birkaç satırlık bir kütüphane çağrısıyla yapılır; ancak doğru bölme biçimi verinin yapısına bağlıdır.
Sınıflandırmada sınıflar dengesizse katmanlı örnekleme kullanılır; böylece nadir sınıf her parçada temsil edilir. Zaman serilerinde ve zamana bağlı verilerde bölme rastgele değil, kronolojik yapılır: eğitim geçmişi, test ise sonraki dönemi kapsar. Aynı müşteriye ya da hastaya ait birden çok kayıt varsa, kayıtlar parçalar arasında bölünmez; kişi bazında gruplanır. Aksi halde model, test setinde zaten tanıdığı kişiyi tahmin eder.
Küçük bir örnek: kredi onay modeli
Bir banka kredi onay modeli geliştiriyor. Geçmiş başvurular eğitim, doğrulama ve test olarak ayrılıyor. Ekip farklı algoritmaları ve düzenlileştirme güçlerini doğrulama setinde karşılaştırıyor, doğrulama hatası en düşük kombinasyonu seçiyor. Ardından seçilen model, test setinde tek seferde değerlendiriliyor ve raporlanan başarı bu sonuç oluyor.
Ekip test sonucunu beğenmeyip modeli yeniden ayarlarsa, test seti artık yeni bir doğrulama setine dönüşür; raporlanacak yeni bir tarafsız ölçüm için taze veri gerekir. Bu yüzden gerçek projelerde test seti, bir tür mühürlü zarf gibi korunur.
Sık yapılan hatalar
En tehlikeli hata veri sızıntısıdır. Ölçekleme, eksik değer doldurma ya da özellik seçimi gibi işlemlerin bölmeden önce tüm veride yapılması, test setinin istatistiklerinin eğitime karışmasına yol açar. Doğrusu, bu işlemlerin yalnızca eğitim setinde öğrenilip diğer parçalara uygulanmasıdır.
Diğer sık hatalar şunlardır: • Aynı kaydın bölünmüş parçalarda tekrar etmesi • Test setine bakarak ayar yapmak • Zamana bağlı veriyi karıştırarak bölmek • Çok küçük bir test setinin sonucuna fazla güvenmek
Ön işlem bölmeden sonra, yalnızca eğitimden öğrenilir
Mindset programlarında veri bölme
Makine Öğrenmesi (Uygulamalı) Programı'nda model doğrulama ve hiperparametre optimizasyonu modülü, bölme stratejileri ile veri sızıntısını önlemeyi uygulamalı olarak ele almak için uygun bir yerdir. Veri bilimi ekiplerinde çalışanlar, modelin canlıda neden beklenenden kötü çalıştığını anlamak için bu temeli sık kullanır.
İlgili Mindset programı
Makine Öğrenmesi (Uygulamalı) Programı
Sık sorulan sorular
Doğrulama seti olmadan yalnızca eğitim ve test seti yeterli olur mu?
Ayar yapmadığınız çok basit bir model için olabilir. Ancak algoritma ya da hiperparametre seçecekseniz bu seçimi bir yerde değerlendirmeniz gerekir. Doğrulama seti yoksa seçim test setiyle yapılır ve test sonucu iyimser olur. Veri azsa doğrulama için çapraz doğrulama kullanılabilir.
Test setinde başarı düşük çıkarsa ne yapmalıyım?
Önce nedene bakın: eğitim ve test hatası arasındaki fark büyükse aşırı öğrenme, ikisi de kötüyse yetersiz öğrenme ya da özellik yetersizliği söz konusu olabilir. Düzeltmeleri doğrulama setinde deneyin. Test sonucuna göre defalarca değişiklik yaparsanız yeni bir tarafsız ölçüm için taze veri gerekir.
Çapraz doğrulama bu bölmenin yerini alır mı?
Doğrulama setinin yerini alabilir, test setinin yerini almaz. Çapraz doğrulama, doğrulamayı farklı parçalarda tekrarlayarak az veride daha güvenilir bir ayar seçimi sağlar. Nihai, tarafsız ölçüm için ayrı tutulmuş bir test seti yine önerilir.
Sınıf dengesizse neden katmanlı bölme gerekir?
Rastgele bölmede nadir sınıf bir parçada hiç ya da çok az görünebilir. Böyle bir test seti modelin o sınıftaki başarısını ölçemez. Katmanlı bölme, sınıf oranlarını eğitim, doğrulama ve testte benzer tutarak değerlendirmeyi anlamlı kılar.