Hepinize merhabalar tekrardan,
Serimizin bir önceki yazısında Train-Test kümelerinden ve Generalization kavramından bahsetmiştik. Bugün sizlere Validation Set’i anlatmaya çalışacağım. Bu verimizi ayıracağımız son küme (train ve testin yanında) 🙂
Öyleyse hadi başlayalım!
VALIDATION SET NEDİR VE NEDEN İHTİYAÇ DUYARIZ?
Bu soru oldukça mantıklı bir soru. Verimizi zaten hali hazırda train ve test olarak bölmüştük. E o zaman bu validation set de nereden çıktı? Söyleyeyim kesinlikle benden değil 🙂
Öncelikle Train-Test verilerinin üstünden geçelim. Modelimizin optimizasyonu için verilerimizi eğitim ve test seti olarak ikiye bölmemiz lazımdı. Bunun nedeni modelimizin eğitim setini öğrenip test seti ile testlerini gerçekleştirmesi ve kendisini ona göre optimize etmesi. Ancak, modelimiz kendisini test setine göre çok iyi optimize ederse ve onu öğrenmeye başlarsa ne olur?
Overfit 🙂
Yani test setimiz de burada güvenilirliğini kaybetti. Peki bu durumda ne yapmamız lazım? Düz mantık, verimizi ikiye değil üçe bölmemiz lazım 🙂

Verimizi train, test ve validation set olarak bölersek her bir setin görevi aşağıdaki gibi olur:
- Train set: Modelimizin öğreneceği verileri içerir.
- Validasyon set: Modelimizin kendi performansını geliştirmek için kullanacağı kıyaslama verilerini içerir. Modelimiz önceki yazımızda bahsettiğimiz gibi itere bir şekilde çalışan gradient descent fonksiyonumuz sayesinde optimize olur. Optimize olmaktan kastımız ise hiperparametrelerin en optimum şekilde ayarlanmasıdır.
- Test set: Modelimiz performans arttırımını validasyon set ile bitirdiğinde artık modelimizin generalization yeteneğini ölçmek için kullanılacak verileri içerir.
SCALING NEDİR?

Scaling farklı aralıklara sahip verileri aynı aralığa indirgeme işlemidir. Ne mi demek?
Örneğin ev özelliklerine göre fiyat tahmin etme senaryomuz olsun. Senaryomuza göre elimizde iki tane feature olsun. Bu featurelar ev metrekaresi ve banyo sayısı olsun.
Metrekare aralığının 80-200 olduğunu (yani verisetimizdeki en düşük metrekarenin 80, en yüksek metrekarenin 200 olduğunu) varsayalım.
Banyo sayı aralığımız da 1-4 olsun.
Bu iki feature değerleri arasında aralık açıklığı dikkatini çekmiştir. Bunu elimine etmenin yolu iki veriyi de scale etmek yani ölçeklemektir.
Bunun için iki veriyi de aynı değer aralığına getirmek doğru bir yaklaşım olacaktır neticede veriyi ölçeklemek o verinin bilgisinin kaybolacağı anlamına gelmez.
Hoppalaa bu ne demek?
Örneğin elinizde fiyat verisi olsun ve bu verinin değerleri 100.000, 97.802 tarzı gösterime sahip olsun. Burada biz bu verinin değerini Price olarak indike ediyorsak, bu verileri 100.000’e bölüp artık Price(in thousand dollars) şeklinde gösterebiliriz. Yani aslında 100.000(Price)=1(Price in thousand dollars) olabilir.
Peki neden bu işlemi yaparız?
Feature olarak kullanacağımız veri aralıklarına bakıyoruz. Zaten tek bir feature’ımız var ise scale etmemiz gerekmiyor, birden fazla feature’ımız var ise değer aralıklarını karşılaştırabiliriz. Örneğin ev metrekaresi ve oda sayısı featureları değer aralığı olarak aynı düzlemde olmayacaktır. (Yani aynı değer aralığında) Bu durumda gradient descent fonksiyonumuzun daha hızlı çalışması için bu iki feature’ı benzer değer aralıklarına sokmamız gerekir.
O zaman son olarak ellerimizi biraz kirletip bu öğrendiklerimizi kod pratiğine dökelim 🙂 İlgili colab notebook’unu burada bulabilirsiniz.
KAPANIŞ
Buraya kadar geldiyseniz tebrik ederim! Bugün sizlere dilim döndüğünce Validasyon setini anlatmaya ve örnek vermeye çalıştım.Umuyorum ki okurken keyif alırsınız. Hepinize mutlu, sağlıklı günler diliyorum sonraki yazımda görüşmek üzere 🙂