Model Seçimi-K Fold Cross Validation

Gülcan Öğündür
2 min readJan 13, 2020

--

Sınıflandırma problemlerinde öncelikle veri setimizi train ve test setleri olarak ayırır daha sonra train veri seti üzerinden model oluşturur ve test veri seti üzerinde yapılan tahminleri test ederiz. Ancak train/test ayrımında bazı problemler bulunabilir . Veri seti ayrımını rastgele yapamamış olabiliriz . Sadece belirli bir yaşta , belirli bir bölgeden , sadece kadın ya da erkekleri seçip onlar üzerinden model kurmuş olabiliriz. Bu da overfitting problemine sebep olacaktır. Bu problemi Cross Validation ile çözebiliriz.

Cross Validation modelin yüksek performansının rastgele olup olmadığını görmemizi sağlayacaktır.

K-Folds Cross Validation’da verilerimizi k farklı alt kümeye böleriz. Verilerimizi eğitmek ve son alt kümeyi test verisi olarak bırakmak için k-1 adet alt kümeyi kullanırız. k adet deney sonucunda ortaya çıkan ortalama hata değeri modelimizin geçerliliğini belirtir.

K değeri genellikle 3 ya da 5 olarak seçilmektedir. Bu değer 10 ya da 15 de seçilebilir ancak bu oldukça pahalı bir hesaplamaya ve zaman kaybına sebep olacaktır. Bunu birkaç satır Python kodu ve Sci-kit Learn API’sı ile nasıl uygulayabileceğimize bir göz atalım.

sklearn kütüphanesinden cross_val_score metotunu yüklememiz gereklidir. cv=5 bize k değerini 5 olarak seçtiğimizi gösterir. model daha önceden fit ettiğimiz modelimizdir.

Aşağıdaki script’te cross validation sonucunda elde ettiğimiz Accuracy ve MAE değerlerinin ortalamasını alarak modelimizin gerçek performansını görmüş oluruz.

Cross Validation bizi hem overfitting problemiyle karşı karşıya olup olmadığımızı hem de modelimizin kalitesini görmemizi sağlayacaktır. Böylece henüz görmediğimiz test veri setinde yüksek hata oranları ile karşılaşmadan önce modelimizin performansı test etmemizi sağlayacaktır. Uygulanabilirliği kolay olduğu için de sıklıkla kullanılan bir yöntemdir.

--

--