Kodlama ve çapraz doğrulama
Son zamanlarda çapraz doğrulama şemasında kodlamanın doğru kullanımı hakkında düşünüyordum. Özelliklerin kodlanmasının geleneksel olarak önerilen yolu şudur:
- Verileri tren ve test (tutma) setine bölün
- Kodlayıcıyı (ya
LabelEncoder
daOneHotEncoder
) tren setine takın - Takılı kodlayıcı kullanarak hem treni hem de test setini dönüştürün.
Bu yolun herhangi bir veri sızıntısını önlediği iddia edilmektedir. Ancak, çapraz doğrulama sırasında bu genellikle ihmal ediliyor gibi görünmektedir. Diyelim ki yukarıda bahsedilen tren setinde çapraz doğrulama yapıyorum. Tren kümesini kodlar ve ardından çapraz doğrulama gerçekleştirirsem, yukarıdaki adımları gerçekten taklit etmez. O halde kodlamanın çapraz doğrulama "içinde" gerçekleştirilmesi gerekmez mi? Örneğin, 5 kat çapraz doğrulama yaptığımızı varsayarsak, her çapraz doğrulama adımında kodlayıcıyı 4 kata sığdırıp 5 katına dönüştürmemiz gerekmez mi? Bunun genellikle hedef kodlamada yapıldığına inanıyorum, ancak aslında etiket veya tek sıcak kodlamayla değil.
Sorularım bu nedenle:
- Aşırı uydurmayı gerçekten önlemek istiyorsak, kodlayıcıyı her çapraz doğrulama adımında 5. doğrulama katına değil 4 kata sığdırmanın gerekliliği konusunda haklı mıyım?
- Değilse, tren ve test (hold-out) setiyle uğraşırken daha önce bahsedilen 3 adımı da gerçekleştirmek neden gerçekten gerekli?
Yanıtlar
Haklısınız, kodlama adımının kendisi bir veri sızıntısı kaynağı olabilir ve normalde bu, açıkladığınız gibi yalnızca mevcut eğitim seti kullanılarak CV döngüsü içinde yapılmalıdır.
Gerçekten de yorumda bahsettiğiniz neden şudur: CV sırasında belirli bir eğitim setinde tesadüfen görünmeyen bir sınıf etiketi veya özellik kategorisi varsa, modelin bu sınıf / kategoriyi bile bilmemesi gerekir. var.
Genel olarak, bu sorunun yalnızca test setindeki performansı azaltabileceğini düşünürdüm, bu nedenle muhtemelen diğer türdeki veri sızıntıları kadar ciddi değildir. Yine de, yalnızca eğitim setini kullanarak kodlamak kesinlikle daha temiz bir deneysel tasarımdır.
NLP ile yakından ilgili bir sorun, sistemin kelime dışı (OOV) kelimelerle başa çıkmak için tasarlanmadığı zamandır: hem eğitim hem de test setindeki tüm kelimeler kodlanmışsa (aynı hata), o zaman yanlış bir şekilde sanki herhangi bir metin, potansiyel olarak daha sonra kötü sürprizlere neden olacak şekilde tam olarak kodlanabilir.
Bununla birlikte, nadir görülen özellikleri veya etiket değerlerini atmak genellikle iyi bir fikirdir ve bu yapılırsa, sonuç doğru yöntemi veya özensiz olanı kullanarak aynı olmalıdır.