Neden Cross-Validation Gerekli?
Makine öğrenmesinde model kalitesini ölçmek için verimizi tek seferlik bir şekilde eğitim ve test olarak bölmek sezgisel görünür. Ancak bu yaklaşımın ciddi bir zafiyeti vardır: test setinin seçimi şansa bağlıdır ve şanssız bir bölünme, iyi ya da kötü bir modeli haksız yere değerlendirmenize neden olabilir. Küçük veri setlerinde bu problem daha da keskinleşir; birkaç örneğin farklı gruba düşmesi tahmin kalitesini büyük ölçüde değiştirebilir. Cross-validation bu sorunu veriyi birden fazla kez farklı biçimlerde bölerek çözer. Her bölünmede farklı örnekler test setine girer; bu sayede hem şans etkisi ortalanır hem de veriden maksimum bilgi çıkarılır. Sonuç: tek bölünmeye kıyasla çok daha güvenilir ve kararlı bir performans tahmini.
K-Fold Cross-Validation Nasıl Çalışır?
K-fold, en yaygın kullanılan çapraz doğrulama yöntemidir. Algoritma üç adımda özetlenebilir: 1. **Bölme:** Veri seti rastgele karıştırılarak k eşit parçaya (fold) ayrılır. 2. **Döngü:** Her iterasyonda bir parça test seti, kalan k-1 parça eğitim seti olarak kullanılır. Model bu eğitim verisiyle sıfırdan eğitilir, test seti üzerinde değerlendirilir. 3. **Ortalama:** k iterasyonun sonuçları (doğruluk, F1, RMSE vb.) ortalaması alınarak nihai skor elde edilir. Genellikle k=5 veya k=10 tercih edilir. k=5 hesaplama açısından daha verimli, k=10 ise biraz daha düşük önyargılı tahmin sunar. Scikit-learn kütüphanesinde KFold, StratifiedKFold ve cross_val_score fonksiyonları bu işlemi birkaç satır kodla yapar.
Stratified K-Fold: Dengesiz Veriler İçin Standart
Sınıflandırma problemlerinde, özellikle dengesiz sınıf dağılımı varsa (örneğin %95 negatif, %5 pozitif), standart k-fold tehlikeli olabilir. Rastgele bölünmede bazı fold'lar pozitif sınıf örneği bile içermeyebilir; bu da performans metriklerini anlamsız kılar. Stratified k-fold her fold'da orijinal sınıf oranını korur. Eğer genel veride %5 pozitif örnek varsa, her fold da yaklaşık %5 pozitif içerecektir. Bu özellik sayesinde her iterasyonun eğitim ve test seti gerçek sınıf dağılımını yansıtır. Sınıflandırma görevleri için stratified k-fold, varsayılan tercih olmalıdır.
LOOCV ve Diğer Varyantlar
**Leave-One-Out Cross-Validation (LOOCV):** K=n (n: veri sayısı) durumudur. Her seferinde yalnızca tek örnek test setine ayrılır. Veri büyük olduğunda hesaplama maliyeti çok yüksektir ama küçük veri setlerinde (n<100) pratik seçenektir. Düşük önyargı avantajına karşın yüksek varyans dezavantajı taşır. **Tekrarlı K-Fold (Repeated K-Fold):** Farklı rastgele bölünmelerle k-fold birden fazla kez tekrarlanır ve tüm sonuçlar ortalaması alınır. Varyansı daha da azaltır, hesaplama maliyetini artırır. **Walk-Forward Validation:** Zaman serisi verisi için kullanılır. Test seti her zaman eğitim setinin ilerisindedir; gelecek verisi asla geçmişe sızmaz. Finansal tahmin ve hava durumu modellemesinde standarttır.
Önyargı-Varyans Dengesi
Cross-validation yöntemi seçimi doğrudan önyargı-varyans (bias-variance) dengesini etkiler: - **Düşük k (k=2, k=3):** Eğitim seti küçük olur, model gerçek kapasitesinin altında değerlendirilir; kötümser önyargı (pessimistic bias) yüksektir. - **Yüksek k (LOOCV):** Eğitim seti neredeyse tam veridir; önyargı düşer ama iterasyonlar arası korelasyon artacağından tahminin varyansı yükselir. - **k=5 veya k=10:** Emprik olarak önyargı ve varyansı dengeleyen altın oran olarak kabul görmektedir. Model seçimi ve hiperparametre ayarı gibi kararlarda cross-validation bu dengeyi sağlarken test setini asla kirletmez.