Cross Validation Nedir, Nasıl Çalışır ve Mantığı Nedir

 Makine Öğrenmesinde bazı durumlarda model verilen eğitim verisini (training data) çok iyi öğrenir ancak test için verilen veride ise kötü performans gösterebilir. Buna terimsel olarak aşırı uyma (overfitting) denir. Bu durum istenilen bir şey değildir. Bunun sebebi ise basitçe, bu modelin gerçek dünyadaki verilerle test edildiği zaman güzel performans vermesinin istenmesidir. 

Peki bu durumu (overfitting) kaldırmak için neler yapılabilir, bugün onlardan birini göreceğiz. 

CROSS VALIDATION

Cross Validation nedir nasıl çalışır

   Üstte gösterilen şema kısaca makine öğrenmesinde eğitim nasıl olarak gerçekleştiğini gösteriyor. 
  • parameters modelin parametreleri olarak yer alır.
  • Cross Validation'ı göreceğiz.
  • Best Parameters modelin nasıl hangi parametreler ile en iyi performans vereceğini gösterir.
Amacımız modelin en iyi çalıştığı parametreli bulmak. Böylece veriden en çok verimi alabiliriz.


Peki bu Cross Validation nasıl çalışır.

Varsayalım ki elimizde \(S\) eğitim verisi var. Diyelim ki elimizde \(k\) tane model var. Akla ilk gelen şey
  1. Bu her model \(M_{i}\) ı \(S\) verisi üzerinde eğitmek bir hipotez almak
  2. En düşük eğitme hatası (training error) olan modeli seçmek
Ne yazık ki bu algoritma gerçek hayatta işe yaramıyor. Polinomsal verileri düşünün. Polinomun derecesi yükseldikçe model \(S\) verisinde daha iyi öğrenecek ve bundan dolayı daha az hata verecek.
Bundan dolayı bu metod her zaman en yüksek dereceli modeli seçecek ve bu da genellikle kötü bir sonuç doğuruyor.

HOLD OUT CROSS VALIDATION

Şimdi bundan daha iyi çalışacak bir algoritma verelim. Basit bir Hold out (Tutma) Cross Validation'da  yapılan
  1. Eğitme verimiz \(S\)'i rastgele \(S_{eğitme}\) ve \(S_{test}\) olarak %70 ve %30 oranında ayırmak.
  2. Daha sonra her model \(M_{i}\)'ı  \(S_{eğitme}\) verisi üzerinde eğitip bir hipotez almak
  3. Daha sonra \(S_{test}\) üzerinde test edip en düşük hatalı hipotez \(h_{i}\) seçmek.
Modelin daha önce görmediği veri ile test ettiğimiz için daha iyi bir generalization error elde ediyoruz. 
Ancak burada da bir sorun var. Testi yapacağız diye verimizin %30 unu kullandık. Eğer elimizde çok veri yoksa bu modelin eğitimini kısıtlayabilir.

K-FOLD CROSS VALIDATION

Bundan dolayı şimdi k-fold Cross Validation'a bakacağız. Adımlar
  1. \(S\) eğitme verimizi rastgele \(k\) dosyaya ayırıyoruz. Bu kümelere de \(S_{1},..., S_{k}\) diyelim.
  2. Her bir model \(M_{i}\) için
    1. her bir \( j = 1, ..., k \) için
      1. Model \(M_{i}\)'yi \(S_{1}\cup ...S_{j-1} \cup S_{j+1} \cup ... S_{k} \) yani \(S_{j}\) hariç her veri kümesinde eğitmek
      2. Model \(M_{i}\)'yi  \(S_{j}\) üzerinde test etmek
    2. Model \(M_{i}\) için bütün \(j\) ler üzerinden hatayı hesaplayıp, bu hataların ortalamasını almak
  3. En düşük hatalı \(M_{i}\) seçmek
Cross Validation NEdir, sklearn cross-validation, cross validation nasıl çalışır


Genel olarak \( k= 10\) seçilebiliyor. 
Bu yöntemle beraber modelimiz verimizin tüm kısmıyla test edildiği için daha iyi bir sonuç verebiliyor. Kısaca söyleyeceklerim bu kadar.

References:
  1. http://cs229.stanford.edu/syllabus-autumn2018.html
  2. https://scikit-learn.org/stable/modules/cross_validation.html

Yorumlar

Bu blogdaki popüler yayınlar

Decision Tree (Karar Ağacı) Nedir ve Nasıl Çalışır

Lineer Regresyon Metodu (Linear Regression) Nedir, Nasıl Çalışır | Matematiksel Anlatımı