• makine öğrenmesi' nde kullanılan, bir modelin gerçek bir test verisi ile nasıl sonuçlar vereceğini tahmin etmekte kullanılan bir doğrulama yöntemidir.

    bunun için kullanılan ana teknik k-fold cross validation' dır. bu doğrulama yönteminde elinizdeki veriseti k tane parçaya ayrılır. sadece bir parça test için kullanılırken, geri kalan k-1 parça verisetinin eğitilmesinde kullanılır ve bu işlem k kere tekrarlanır. daha sonrasında ise ortalama bir hata oranı bulunur. böylelikle bu ortalama hata oranı, o modelin değerlendirilmesinde kullanılır.

    eğer veriseti, verisetinin boyutu kadar parçaya ayrılırsa, bu cross validation yönteminin adı ise leave-one out cross validation olur.
  • genelde veriseti 10 esit parcaya bolunur 1 tanesi test, 9 tanesi train icin kullanilir, her iterasyonda test sonuclari hesaplanir, ortalamasi alinir, basarim hesaplanir... sonra model gercek verilerle denenir ve zicar... tekrar veri zenginlestirilir, cesitlendirilir... boyle gider bu.
  • sadi şeker hocamız , konuyu kendi sayfasında güzel açıklamış.dileyen arkadaşlar , aşağıdaki linkten okuyabilirler.
    https://bilgisayarkavramlari.com/…arpraz-dogrulama/
  • (bkz: data mining)
  • (bkz: k-fold cross validation)
    (bkz: leave one out cross validation)
    cross validation

    (bkz: sensitivity)
    (bkz: specificity)
    sensitivity and specificity
    *
    tp:true positive
    tn:true negative
    fp:false positive
    fn:false negative

    sensitivity: tp/ (tp+fn)
    specificity= tn/ (tn+fp)
  • makine öğrenmesi (bkz: machine learning) metotları kullanılırken, rastgele(bkz: random) bir şekilde train / test data setleri oluşturmanın sonuca olan etkisini minimize etmek ve daha robust modeller elde etmek için kullanılan yöntemdir. daha geniş bir ifade ile; örneğin ben toplam datamın %70'ini train, %30'unu test set olarak ele aldım. ancak öyle bir denk geldi ki, benim bu test datam, diğer %70'e çok yakın karakteristik özelliklere sahip ve dolayısıyla kurduğum model çok güzel sonuçlar verdi bana. ancak ben ilk başta seçtiğim %70'i değil de, data setimin içerisinden başka bir %70'i seçseydim sonuçlar çok kötü gelecekti. heh işte bu noktada cross validation yapıyoruz biz. datamı önce k eşit parçaya bölüyorum ki bu k-fold cross validation oluyor. diyelim ki k=10 aldık ve başladık. öncelikle ilk 9 parçayı train olarak kullandım ve modelimi oluşturdum; daha sonra bu model ile kalan 1 parçayı tahmin ettim, errorumu kenara yazdım. bu işlemi her parça (bkz: fold) için tekrarlıyorum ve çıkan tüm errorların ortalamasını alıyorum, aha da benim mean cross validation errorum budur. bu değeri modelleri kıyaslamak için kullanırız bunu da unutmayalım(bkz: swh).
  • feature selection methodları bu işlemden önce uygulandığında bir anlamı kalmayan yöntem.
  • temelde birbirinden bağımsız iki amaç için kullanılır.
    1. bir öğrenme modelinde başta belirli olmayan hiperparametreleri, yani modeldeki bizim seçimimize bağlı olan sabitleri, iyi performans verecek şekilde seçmek.
    2. bir modelin test datasındaki gerçek performansını anlamlı ve hilesiz (unbiased) olarak tahmin etmek.

    iki üstteki yazar 2 numarayı neden yaptığımızı güzel bir şekilde açıklamış. datayı test ve train diye ayırsak bile şansımıza iyi test performansı çıkacak şekilde ayırmış olabiliriz. yani olay güvenilir test performansı iddiasında bulunabilmek. hatta önerilen bu cross validation işleminin hepsini baştan alarak birkaç kere tekrarlayıp çıkan performansların ortalamasını almak, yani monte carlo simülasyonu yapmak.

    1 numarayı yapma sebebimiz ise tek seferlik training yapmaya nazaran daha yüksek performans elde etmek. bu hiperparametre dediğimiz şeyler genelde öğrenme katsayısı gibi, teoride rastgele seçsek bile sonuç vermesi gereken ama bazı değerlerin diğerlerine göre daha üstün olduğu sayılar. ilk önce bir aday hiperparametre seti belirliyoruz. datayı k (genelde 10) parçaya bölüyoruz. önce 1’i seçmiş olalım. 2’den 10’a kadar olan parçalardaki toplam datayı bütün aday hiperparametreleri için ayrı ayrı train ediyoruz. sonra bu her train etmeyle gelen tahmini parametrenin performansını kullanmadığımız 1 numaralı parçada her bir hiperparametre için test ediyoruz. bu işlemi kalan 2, 3, …, 10 numaralı parçalar için tekrarlayıp her hiperparametrenin ortalama performansını hesaplıyoruz. sonuçta da en yüksek performanslısını seçiyoruz.

    örnek olarak gradient descent algoritmasında öğrenme katsayısı, yani update’lerin kaçla çarpılacağı, bir hiperparametredir. çok küçük olursa öğrenme çok yavaş olur. çok iterasyona gerek olur. çok yüksek olursa her adımlar çok büyük olduğu için lokal minimumu kaçırma ihtimali var. bir lokal minimumdan zıplayıp başka lokal minimumun yakınına gidebiliriz. bu da yakınsamayı engelleyebilir. başka bir örnek: lasso diye bir algoritma var, l1 penaltılı mse çözüyor. o algoritmada l1 penaltı katsayısı yine optimize edilmek zorunda. bu tarz şeyler için cross validation yöntemi çok pratik.
hesabın var mı? giriş yap