Yazan : Şadi Evren ŞEKER

Bu yazının amacı, literatürde k-fold cross validation (k katlamalı çarpraz doğrulama) yöntemi olarak geçen yöntemi anlatmaktır. Veri madenciliği çalışmalarında, uygulanan yöntemin başarınının sınanması için, veri kümesini eğitim ve test kümeleri olarak ayırılmaktadır. Bu ayırma işlemi çeşitli şekillerde yapılabilir. Örneğin veri kümesinin %66’lık bir kısımını eğitim %33’lük bir kısmını ise test için ayırmak ve eğitim kümesi ile sistem eğitildikten sonra test kümesi ile başarısının sınanması kullanılabilecek yöntemlerden birsidir. Bu eğitim ve test kümelerinin rastgele olarak atanması da farklı bir yöntemdir. Fakat bu yazının konusu eğitim ve test kümelerinin nasıl katlanarak değiştirildiğidir.

K-katlamalı çarpraz doğrulama yönteminde öncelikle bir k değeri seçilir. Ben yazıda anlatması kolay olsun diye 3 olarak seçeceğim. Ancak belirtmem gerekir ki literatürde en çok tercih edilen k değeri 10’dur.

K= 3 için veri kümemizi öncelikle 3 eşit parçaya bölüyoruz. Diyelim ki veri kümemizde 300 kayıt bulunuyor olsun. Eşit olarak 100’er parçalık bölümlere parçalıyoruz.

Yukarıdaki şekilde gösterildiği üzere veri kümesi verilen k değeri kadar parçaya ayrıldıktan sonra k-katlamalı çarpraz doğrulama sistemi çalışmaya başlar. Yukarıdaki örnek için 3-katlamalı çarpraz doğrulama yöntemi denilebilir. Öncelikle parçalardan birisi test için seçilip geri kalanı eğitim için kullanılacaktır. Burada hangi parçadan başlandığının bir önemi yoktur. Diyelim ki ilk parçayı test için seçip ikinci ve üçüncü parçaları eğitim için kullanmaya karar veriyoruz.

Yukarıdaki seçimin ardından, sistemimizi çalıştırıyoruz. Örneğin amacımız sınıflandırma yapmaksa bir sınıflandırma algoritmasını çalıştırıyor ve bir sonuç elde ediyoruz. Buna kısaca birinci sonuç anlamında S1 diyelim. Ardından aynı işlem ikinci parça seçilerek tekrarlanıyor.

Yine sınıflanıdrıcımızı çalıştırıyor ve bir netice elde ediyoruz. Diyelim ki bu neticenin değeri de S2 olsun. Ardından son çalıştırma için geriye kalan 3. parçayı test kümesi olarak ele alıyoruz:

Son olarak bu seçimden elde edilen değere de S3 diyelim.

Neticede 3 kere aynı yöntemi, 3 farklı eğitim ve test kümelerinde çalıştırmış oluyoruz. Sistemin genel başarısı veya genel hatası (error rate) ise, elde edilen 3 sonucun ortalaması olarak hesaplanıyor. İşte bu son adımda ortalama alındığı için ve ortalama hesaplanırken kullanılan toplama işleminin yer değiştirme özelliği olduğu için, hangi parçadan başlandığının aslında bir önemi yoktur.

Özetleyecek olursak. K katlamalı çarpraz doğrulama için k-kere yöntem çalıştırılır. Her adımda veri kümesinin 1/k kadar, daha önce test için kullanılmamış parçası, test için kullanılırken, geri kalan kısmı eğitim için kullanılır.

Buna göre her aslında yapılan işlem aşağıdaki şekilde daha resmi bir gösterimle yazılabilir:

Buradaki S F(test, eğitim), sınıflandırma fonksiyonu , VK, veri kümesi, k , kaç parça katlama kullanıldığı ve t ise veri kümesi üzerinden seçilen her bir test kümesi olarak verilmiştir. Yukarıda formülize edildiği üzere, sonuç bütün sınıflandırma fonksiyonlarının performanslarının toplamının, k sayısına bölünerek ortalaması alınmasıdır.


Yorumlar

  1. Ahmet Ak

    Hocam elinize sağlık çok güzel bir yazı olmuş. Ancak benim aklıma takılan bir nokta var. S1 sonucunu elde ettikten sonra 2. iterasyonda önceki eğitilmiş modelimi kullanıyoruz yoksa her iterasyonda modeli sıfırdan eğitip test mi ediyoruz? Cevap için teşekkürler.

    1. Şadi Evren ŞEKERŞadi Evren ŞEKER

      Her eğitim modeli sıfırdan train ve test kümeleri oluşturulup yeni modeller oluşturuluyor ve test ediliyor. Başarı ise her fold sonucunda elde edilen başarıların ortalaması olarak hesaplanıyor. Yani 10-fold cross validation için 10 tane train 10 tane test yapılıyor (her bir parça için ayrı ayrı) sonuçta her train-test senaryosu için yeni bir başarı elde ediliyor ve başarıların ortalaması alınarak sistemin ortalama başarısı bulunuyor. Daha açık olması için, herhangi bir aşamadaki model diğer aşamalarda kullanılmıyor.

      Başarılar

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


yedi − 2 =