Cross-Validation (Çapraz Doğrulama) (Çapraz Doğrulama)

Modelin görülmemiş veriye genellenme gücünü ölçmek için veriyi birden fazla kez eğitim/test olarak bölen sistematik model değerlendirme tekniği.

Cross-validation (çapraz doğrulama), makine öğrenimi ve istatistikte bir modelin görülmemiş veriye ne kadar iyi genelleyeceğini tahmin etmek için kullanılan sistematik bir değerlendirme yöntemidir. Temel fikir basittir: mevcut veriyi tek seferlik eğitim/test bölümüne ayırmak yerine, veriyi birden fazla kez farklı biçimlerde bölüp her seferinde ayrı bir test seti oluşturmak ve sonuçların ortalamasını almaktır. En yaygın yöntem k-kat çapraz doğrulama (k-fold cross-validation) dır. Bu yöntemde veri seti k eşit parçaya bölünür; model k kez eğitilir ve her seferinde farklı bir parça test seti olarak ayrılırken kalan k-1 parça eğitim için kullanılır. Genellikle k=5 veya k=10 değeri tercih edilir. Ortaya çıkan k performans puanı ortalaması, modelin genel başarısını temsil eden tarafsız bir tahmin sunar. Çapraz doğrulamanın en kritik faydası aşırı uyum (overfitting) riskini düşürmesidir. Tek bir sabit test seti kullanıldığında model o teste göre dolaylı olarak optimize edilebilir; çapraz doğrulama ise her iterasyonda farklı veriler gördüğünden bu riski minimize eder. Özellikle sınırlı veri miktarı söz konusu olduğunda her örnek hem eğitim hem test için değerlendirileceğinden veriden maksimum bilgi çıkarılmış olur. Yöntemin varyantları arasında sınıf dağılımını koruyan tabakalı k-kat (stratified k-fold), her seferinde yalnızca bir örneği test seti bırakan bırak-bir-dışarıda (leave-one-out, LOOCV) ve zaman serisi analizine uygun kayan pencere yaklaşımı sayılabilir. Tabakalı k-kat, dengesiz sınıf dağılımı olan sınıflandırma problemlerinde standart tercih haline gelmiştir. Hesaplama maliyeti açısından bakıldığında çapraz doğrulama modeli k kez eğitmeyi gerektirir; büyük veri setlerinde ve derin öğrenme modellerinde bu ciddi bir kaynak artışı anlamına gelebilir. Bu durumlarda daha küçük k değerleri veya tek seferlik validasyon seti yaklaşımları tercih edilebilir. Bununla birlikte çoğu geleneksel makine öğrenimi senaryosunda çapraz doğrulama, model seçimi ve hiperparametre ayarı için vazgeçilmez bir araç olmayı sürdürmektedir.

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.