Cross-validation, makine öğrenmesi modellerinin performansını güvenilir bir şekilde değerlendirmek için vazgeçilmez bir tekniktir. En yaygın kullanılan yöntemler K-Fold, Stratified K-Fold ve Group K-Fold'dur. Her biri farklı veri yapıları ve problem türleri için idealdir: K-Fold genel amaçlı kullanılırken, Stratified K-Fold dengesiz sınıflandırma problemlerinde, Group K-Fold ise grup bağımlılığı olan verilerde tercih edilir.
Bu yazıda, üç yöntemi derinlemesine karşılaştıracak, her birinin güçlü ve zayıf yönlerini inceleyecek ve hangi senaryoda hangisinin kullanılması gerektiğine dair pratik öneriler sunacağız. Ayrıca sık yapılan hatalara ve dikkat edilmesi gereken noktalara değineceğiz.
K-Fold Cross-Validation Nedir?
K-Fold, veri setini K adet eşit boyutlu parçaya (fold) böler. Model K kez eğitilir ve her seferinde farklı bir fold test seti, kalan K-1 fold eğitim seti olarak kullanılır. Performans metriklerinin ortalaması alınır. Bu yöntem, verinin rastgele dağıldığı durumlar için basit ve etkilidir. Ancak sınıf dengesizliği veya grup bağımlılığı gibi özel durumlarda yanıltıcı sonuçlar verebilir.
Stratified K-Fold Nedir?
Stratified K-Fold, her fold'un sınıf dağılımını orijinal veri setiyle aynı oranda koruyacak şekilde katmanlı örnekleme yapar. Bu, özellikle dengesiz sınıflandırma problemlerinde kritiktir. Örneğin, %90 oranında bir sınıf, %10 oranında diğer sınıf varsa, her fold bu oranı yansıtır. Aksi halde bazı fold'lar sadece bir sınıftan oluşabilir ve model değerlendirmesi güvenilmez olur.
Group K-Fold Nedir?
Group K-Fold, aynı gruba ait örneklerin aynı fold'da kalmasını sağlar. Bu, veri sızıntısını (data leakage) önlemek için kullanılır. Örneğin, aynı hastadan alınan birden çok kan örneği varsa, bu örneklerin hem eğitim hem test setine dağılması modelin gerçek performansını olduğundan iyi gösterebilir. Group K-Fold, her grubu bir bütün olarak ele alır ve grupların fold'lara dengeli dağılmasını hedefler.
Karşılaştırma Tablosu
| Özellik | K-Fold | Stratified K-Fold | Group K-Fold |
|---|---|---|---|
| Veri bölme stratejisi | Rastgele | Katmanlı (sınıf oranı korunur) | Grup bazlı (gruplar ayrılmaz) |
| Kullanım alanı | Genel amaçlı, dengeli veri | Dengesiz sınıflandırma | Grup bağımlılığı olan veriler (ör. hasta, fotoğraf ID) |
| Veri sızıntısı riski | Düşük (grup yoksa) | Düşük (grup yoksa) | Yok (gruplar korunur) |
| Hesaplama maliyeti | Düşük | Orta (sınıf dağılımı hesaplama) | Düşük-orta (grup ID'si gerekli) |
| Popüler K değeri | 5 veya 10 | 5 veya 10 | Grup sayısına bağlı |
Hangi Durumda Hangi Yöntem Seçilmeli?
Seçim, verinizin yapısına ve problem türüne bağlıdır. Aşağıdaki kılavuzu kullanabilirsiniz:
- Dengeli sınıf dağılımı ve grup bağımlılığı yok: K-Fold yeterlidir. Basit ve hızlıdır.
- Dengesiz sınıf dağılımı: Stratified K-Fold kullanın. Modelin nadir sınıftaki performansını doğru değerlendirmek için kritiktir.
- Grup bağımlılığı var (aynı kaynaktan birden çok örnek): Group K-Fold zorunludur. Aksi halde model yapay olarak yüksek başarı gösterir.
- Hem dengesiz sınıf hem grup bağımlılığı: StratifiedGroupKFold kullanılabilir (Scikit-learn'de mevcut değildir, ancak özel implementasyonlar vardır).
Sık Yapılan Hatalar ve İpuçları
Cross-validation uygularken dikkat edilmesi gereken bazı noktalar:
- Veri ön işleme: Veri ölçekleme, eksik veri doldurma gibi adımlar her fold içinde ayrı ayrı yapılmalı, tüm veriye tek seferde uygulanmamalıdır. Aksi halde veri sızıntısı oluşur. Bu konuda Eksik Veri ile Başa Çıkma Yöntemleri yazımız size yardımcı olabilir.
- Overfitting tespiti: Cross-validation, overfitting'i erken fark etmek için harika bir araçtır. Eğitim ve validasyon performansı arasındaki büyük fark overfitting işaretidir. Overfitting ile Mücadelede Regularization Teknikleri yazımızı inceleyebilirsiniz.
- K değeri seçimi: K=5 veya K=10 genelde iyi sonuç verir. Daha düşük K değeri (ör. 3) yüksek bias, daha yüksek K değeri (ör. 20) yüksek varyansa yol açabilir.
- Grup ID'si tanımlama: Group K-Fold için veri setinizde her grubu temsil eden bir sütun olmalıdır. Örneğin hasta ID'si, fotoğraf çekim seansı gibi.
- Sonuçların yorumlanması: Cross-validation sonuçları ortalaması alınmış bir performans metriği verir. Ancak bu metriklerin standart sapması da önemlidir; yüksek sapma, modelin farklı veri bölümlerinde kararsız olduğunu gösterir.
Pratik Örnek: Random Forest ile K-Fold Karşılaştırması
Random Forest gibi bir model kullanırken, cross-validation yönteminin seçimi modelin gerçek performansını yansıtmak için kritik olabilir. Örneğin, dengesiz bir veri setinde Stratified K-Fold kullanmazsanız, modelin nadir sınıftaki başarısını olduğundan yüksek görebilirsiniz. Bu konuda Random Forest mı Gradient Boosting mi? yazımızda farklı modellerin karşılaştırmasını bulabilirsiniz.
Sonuç
Cross-validation yöntemi seçimi, model değerlendirmenizin güvenilirliğini doğrudan etkiler. K-Fold basit ve hızlıdır, ancak özel durumlarda Stratified K-Fold veya Group K-Fold tercih edilmelidir. Veri yapınızı iyi analiz edin ve bu kılavuzu kullanarak doğru yöntemi seçin. Unutmayın, yanlış bir cross-validation stratejisi, modelinizin gerçek dünya performansı hakkında yanıltıcı bilgiler verebilir.
Sık Sorulan Sorular
K-Fold ve Stratified K-Fold arasındaki temel fark nedir?
K-Fold veriyi rastgele bölerken, Stratified K-Fold her fold'da sınıf dağılımını korur. Dengesiz sınıflandırma problemlerinde Stratified K-Fold tercih edilmelidir.
Group K-Fold ne zaman kullanılmalıdır?
Aynı gruptan (örneğin aynı hastadan) birden çok örnek olduğunda veri sızıntısını önlemek için Group K-Fold kullanılmalıdır. Gruplar aynı fold'da kalır.
Cross-validation'da K değeri nasıl seçilir?
Genellikle K=5 veya K=10 yaygındır. Düşük K değeri yüksek bias, yüksek K değeri yüksek varyansa yol açabilir. Veri seti boyutuna ve problem türüne göre ayarlanabilir.
Stratified K-Fold regresyon problemlerinde kullanılabilir mi?
Evet, sürekli hedef değişken için Stratified K-Fold'un bir çeşidi olan 'StratifiedKFold' sınıflandırma içindir. Regresyonda hedef değişkenin dağılımını korumak için 'StratifiedShuffleSplit' benzeri yöntemler kullanılabilir.






