Çapraz Doğrulama

Modelin görülmemiş verilerdeki gerçek performansını ölçmek için veriyi döngüsel eğitim-test bölünmelerine ayıran istatistiksel değerlendirme tekniği.

Çapraz doğrulama (cross-validation), makine öğrenimi modellerinin görülmemiş veriler üzerindeki gerçek performansını tarafsız biçimde tahmin etmek için kullanılan istatistiksel bir değerlendirme tekniğidir. Temel fikir, mevcut eğitim verisini birden fazla alt kümeye (fold) bölmek ve her birini dönüşümlü olarak test kümesi olarak kullanmaktır; böylece modelin tüm veri üzerindeki davranışı sistematik biçimde ölçülür. En Yaygın Yöntemler K-Katlamalı Çapraz Doğrulama (k-Fold Cross-Validation): Veri kümesi k eşit parçaya (fold) bölünür. Model, her iterasyonda k-1 parça üzerinde eğitilir ve kalan 1 parça üzerinde test edilir; bu döngü k kez tekrarlanır. Ortalama hata skoru, modelin genel performansının tarafsız tahmini olarak kabul edilir. Pratikte k=5 veya k=10 en sık tercih edilen değerlerdir; bu seçim önyargı-varyans dengesi açısından pratik optimum noktalardır. Biri Dışarıda Bırak (Leave-One-Out / LOO): k değeri veri kümesinin örnek sayısına eşitlenir; her seferinde yalnızca tek bir örnek test için ayrılır. Küçük veri setlerinde maksimum bilgiyi kullanmanın yolu olsa da büyük veri setlerinde hesaplama maliyeti aşırı artar. Tabakalı K-Katlamalı (Stratified k-Fold): Katlar oluşturulurken her kattaki sınıf oranı korunur. Dengesiz sınıf dağılımlarında (fraud detection, tıbbi teşhis gibi) standart k-fold gerçekçi olmayan sonuçlar üretebileceği için bu yöntem tercih edilir. Neden Gereklidir? Tek bir eğitim/test bölünmesi, bölünmenin rastlantısallığına bağlı olarak aşırı iyimser ya da kötümser sonuçlar üretebilir. Çapraz doğrulama bu varyansı azaltır ve modelin aşırı uyum (overfitting) yaşayıp yaşamadığını nesnel biçimde ortaya koyar. Özellikle küçük ve orta ölçekli veri kümelerinde güvenilir performans tahmini için vazgeçilmez bir araçtır. Hiperparametre Ayarı ile Kullanımı Çapraz doğrulama, hiperparametre optimizasyonunun standart parçasıdır. Grid Search veya Random Search algoritmalarıyla birleştirildiğinde her parametre kombinasyonu k kez değerlendirilir. Bu yaklaşım test verisinin dolaylı yollardan eğitime sızmasını (data leakage) önler ve seçilen modelin gerçek dünya performansını daha doğru yansıtır. Sınırlılıklar ve Özel Durumlar k arttıkça hesaplama süresi katlanarak büyür; büyük derin öğrenme modellerinde standart k-fold pratikte pahalı hale gelebilir. Zaman serisi gibi sıralı verilerde standart k-fold geçersizdir çünkü gelecekteki verilerle geçmişi eğitmek sızıntıya (data leakage) neden olur; bu senaryolarda Walk-Forward Validation veya TimeSeriesSplit yöntemleri kullanılır. Çapraz doğrulama, veri biliminin temel kalite güvencesi araçlarından biridir: hem model seçimini hem de genelleme gücünün tahminini istatistiksel olarak sağlam bir temele oturtur.

Çapraz Doğrulama Nedir?

Çapraz doğrulama (cross-validation), makine öğrenimi modellerinin görülmemiş veriler üzerindeki gerçek performansını tarafsız biçimde tahmin etmek için kullanılan istatistiksel bir değerlendirme tekniğidir. Temel fikir, mevcut eğitim verisini birden fazla alt kümeye (fold) bölmek ve her birini dönüşümlü olarak test kümesi olarak kullanmaktır; böylece modelin tüm veri üzerindeki davranışı sistematik biçimde ölçülür.

K-Katlamalı Çapraz Doğrulama

En yaygın yöntem k-fold cross-validation'dır. Veri kümesi k eşit parçaya bölünür; model, her iterasyonda k-1 parça üzerinde eğitilir ve kalan 1 parça üzerinde test edilir. Bu döngü k kez tekrarlanır ve ortalama hata skoru modelin genel performans tahmini olarak alınır. Pratikte k=5 veya k=10 en sık tercih edilen değerlerdir; önyargı-varyans dengesi açısından bu değerler pratik optimum noktalardır. Daha yüksek k daha az önyargı ancak daha fazla hesaplama maliyeti anlamına gelir.

Diğer Yöntemler: LOO ve Tabakalı

Biri Dışarıda Bırak (Leave-One-Out / LOO) yönteminde k veri kümesinin örnek sayısına eşitlenir. Her seferinde yalnızca tek bir örnek test için ayrıldığından küçük veri setlerinde maksimum bilgiyi kullanır; ancak büyük veri setlerinde hesaplama maliyeti katlanarak artar. Tabakalı K-Katlamalı (Stratified k-Fold) yöntem ise katlar oluşturulurken sınıf oranlarını korur. Dengesiz sınıf dağılımlarında — fraud tespiti, tıbbi tanı gibi senaryolarda — standart k-fold yanıltıcı sonuçlar üretebileceğinden bu yöntem tercih edilir.

Neden Gereklidir?

Tek bir eğitim/test bölünmesi, bölünmenin rastlantısallığına bağlı olarak aşırı iyimser ya da kötümser sonuçlar üretebilir. Çapraz doğrulama bu varyansı azaltır ve modelin aşırı uyum (overfitting) yaşayıp yaşamadığını nesnel biçimde ortaya koyar: eğitim skoru yüksek ama CV skoru düşükse model ezberleme yapıyor demektir. Özellikle küçük ve orta ölçekli veri kümelerinde güvenilir performans tahmini için vazgeçilmez bir araçtır.

Hiperparametre Ayarı ile Kullanımı

Çapraz doğrulama, hiperparametre optimizasyonunun standart parçasıdır. Grid Search veya Random Search algoritmaları ile birleştirildiğinde her parametre kombinasyonu k kez değerlendirilir. Bu yaklaşım test verisinin dolaylı yollardan eğitime sızmasını (data leakage) önler ve seçilen modelin gerçek dünya performansını daha doğru yansıtır. scikit-learn'de GridSearchCV bu iki tekniği otomatik olarak birleştirir.

Sınırlılıklar ve Özel Durumlar

k arttıkça hesaplama süresi katlanarak büyür; büyük derin öğrenme modellerinde standart k-fold pratikte pahalı hale gelebilir. Zaman serisi gibi sıralı verilerde standart k-fold geçersizdir: gelecekteki verileri eğitim setine dahil etmek sızıntıya (data leakage) neden olur. Bu senaryolarda Walk-Forward Validation veya scikit-learn TimeSeriesSplit kullanılır. Grup içi bağımlılık olan verilerde (aynı kullanıcının birden fazla kaydı) GroupKFold tercih edilmelidir.

Sık Sorulan Sorular

  • check_circle Kaç fold kullanmalıyım?: Genel pratik kural k=5 veya k=10'dur. Küçük veri setlerinde (< 1000 örnek) LOO daha az yanlı sonuç verir. Çok büyük veri setlerinde (100k+ örnek) k=3 bile yeterlidir; hesaplama maliyetini azaltır.
  • check_circle Çapraz doğrulama ile test seti farkı nedir?: Çapraz doğrulama model seçimi ve hiperparametre ayarı için kullanılır; ancak nihai performans değerlendirmesi her zaman tamamen dokunulmamış bağımsız bir test seti üzerinde yapılır. CV tek başına nihai değerlendirme olarak kullanılmamalıdır.
  • check_circle Zaman serisi verilerinde nasıl uygulanır?: Standart k-fold yerine scikit-learn'den TimeSeriesSplit veya Walk-Forward Validation kullanılır. Bu yöntemler her seferinde gelecek verilerin eğitime girmemesini garanti eder; sıra bağımlılığını korur.
  • check_circle scikit-learn'de nasıl kullanırım?: cross_val_score(model, X, y, cv=5) ile doğrudan kullanabilirsiniz. Stratified için StratifiedKFold(), zaman serisi için TimeSeriesSplit() nesnelerini cv parametresine geçirin. GridSearchCV ise hiperparametre aramasını CV ile otomatik birleştirir.