Cross-Validation
Çapraz doğrulama, genelleme başarısını tahmin etmek için bir modeli tek bir veri kümesinin dönüşümlü k parçalarında eğitir ve puanlar. K katlı adımları, çeşitleri, veri sızıntısını ve kodu ele alır.
Çapraz doğrulama, aynı veri kümesinin farklı bölümleri üzerinde bir modeli birkaç kez eğitip değerlendirerek ve skorları birleştirerek modelin görülmemiş verilerde ne kadar iyi performans göstereceğini tahmin eder. k katlı çapraz doğrulamada veriler, kat adı verilen k eşit parçaya bölünür; model diğer k − 1 kat üzerinde eğitilirken her kat sırayla doğrulama verisi olarak kullanılır. k skorun ortalaması performansı tahmin eder, skorların dağılımı ise bu tahminin doğrulama kümesine hangi örneklerin düştüğüne ne ölçüde bağlı olduğunu gösterir. Tek bir ayrılmış bölümün güvenilir bir skor vermesi için verinin çok az olduğu durumlarda çapraz doğrulama standart değerlendirme yöntemidir; ayrıca hiperparametreleri test verilerine dokunmadan karşılaştırmak ve ayarlamak için yaygın olarak kullanılır.
K-Katlı Çapraz Doğrulama Nasıl Çalışır?#
Veri kümesi bir kez karıştırılır ve genellikle 5 veya 10 olan k kata bölünür. k turun her birinde yeni bir model k − 1 kat üzerinde eğitilir ve kalan kat üzerinde puanlanır; böylece her örnek tam bir kez doğrulama, k − 1 kez eğitim için kullanılır. k skorun ortalaması ve standart sapması raporlanır. Çapraz doğrulama bir modeli veya hiperparametre kümesini seçtikten sonra, son model genellikle bu ayarlarla tüm eğitim verileri üzerinde yeniden eğitilir. Bir örneği dışarıda bırakmalı çapraz doğrulama, k değerinin örnek sayısına eşit olduğu uç durumdur. Bu yöntem her turda eğitim için en fazla veriyi kullanır, ancak örnek sayısı kadar model eğitmeyi gerektirir.
Çapraz Doğrulama Skorlarını Okuma#
Katlar arasındaki dağılım, ortalama kadar bilgilendiricidir. Aşağıdaki scikit-learn betiği, paketle birlikte gelen meme kanseri veri kümesinde 5 katlı çapraz doğrulama çalıştırır:
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import StratifiedKFold, cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
# 569 labeled tumor samples with 30 features each
X, y = load_breast_cancer(return_X_y=True)
# The scaler sits inside the pipeline, so each round fits it on that round's training folds only
model = make_pipeline(StandardScaler(), LogisticRegression(max_iter=1000))
# 5 stratified folds: each sample is validated exactly once
folds = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)
scores = cross_val_score(model, X, y, cv=folds)
print("Fold accuracies:", scores.round(3))
print(f"Mean {scores.mean():.3f} +/- {scores.std():.3f}")Beş kat doğruluğu 0.956 ile 1.000 arasında değişir; ortalama 0.979, standart sapma ise 0.014'tür. Tek bir 80/20 bölmesi, bu beş sayıdan herhangi birini raporlayabilirdi; aralık 4.4 yüzde puanıdır. Ölçekleyiciyi işlem hattının içinde tutmak, doğrulama katının veri ön işleme istatistiklerine dahil edilmesini önler; önce tüm veri kümesini ölçeklemek, her doğrulama katından eğitime veri sızıntısına yol açardı.
Çapraz Doğrulama Varyantı Seçme#
Standart k katlı yöntem, örneklerin bağımsız ve birbirinin yerine kullanılabilir olduğunu varsayar. Böyle olmadıklarında rastgele bir bölme bilgi sızıntısına yol açar veya görevi doğru temsil etmeyen katlar oluşturur:
- Tabakalı k katlı yöntem: Her kattaki sınıf oranlarını tüm veri kümesindekilerle aynı tutar; aksi halde nadir bir sınıf bir katta hiç bulunmayabileceğinden bu önemlidir.
- Grup k-katlamalı doğrulama: Bir hasta, video veya saha konumu gibi tek bir gruptaki tüm örnekleri aynı katlamada tutar; böylece model eğitim görüntülerinin neredeyse kopyalarıyla doğrulanmaz. Katmanlı grup k-katlamalı doğrulama her iki kısıtı birleştirir.
- Zaman serisi bölmesi: Yalnızca geçmiş veriler üzerinde eğitim yapar ve sonraki dönemde doğrulama gerçekleştirir; her turda eğitim penceresini genişletir. Bunun nedeni, zamana göre sıralanmış verileri karıştırmanın modelin geleceği görmesine yol açmasıdır.
- İç içe çapraz doğrulama: Hiperparametre ayarı için her dış katın içinde bir iç çapraz doğrulama döngüsü çalıştırır; böylece dış skor, raporladığı katlar üzerinde ayar yapıldığı için yapay biçimde yükselmez.
Derin Öğrenmede Çapraz Doğrulama#
Bir derin ağı k kez eğitmek işlem maliyetini k katına çıkarır; bu nedenle ImageNet ve COCO gibi büyük veri kümelerinde tek bir sabit doğrulama bölmesi kullanılır; bu bölme zaten kararlı bir skor için yeterince büyüktür. Her sınıftan yalnızca birkaç örneğin doğrulama bölmesine düşebileceği birkaç yüz ila birkaç bin görüntü içeren küçük görüntü veri kümelerinde çapraz doğrulama yarar sağlar. Ultralytics K-Katlı Çapraz Doğrulama kılavuzu, bir algılama veri kümesini scikit-learn'in KFold aracıyla beş kata böler, her kat için eğitim ve doğrulama görüntü listeleriyle bir veri kümesi YAML dosyası yazar ve her kat için bir YOLO26 modeli eğitir. Algılama görüntüleri genellikle birden fazla sınıf içerdiğinden tek bir etiket üzerinden tabakalandırılamaz; bu nedenle kılavuz, her kattaki her sınıf için doğrulama etiketlerinin eğitim etiketlerine oranını da kaydeder.
Çapraz Doğrulama ve İlgili Terimler#
- Ayırma doğrulaması: 80/20 gibi, bir kez puanlanan tek bir bölmedir. Tek bir eğitim çalıştırması gerektirir ve büyük veri kümeleri için uygundur; skoru doğrulama bölümüne hangi örneklerin düştüğüne bağlıdır.
- Bootstrap örneklemesi: Eğitim kümelerini yerine koyarak örnekleme yoluyla oluşturur ve her modeli, örnekleme sırasında dışarıda kalan örneklerde puanlar. k katlı yöntem, verileri yerine koymadan bölümlere ayırır; böylece her örnek tam olarak bir katta yer alır.
- Test kümesi değerlendirmesi: Çapraz doğrulama, modeller ve ayarlar arasından seçim yapar. Tüm katların dışında tutulan ayrı bir test kümesi, seçilen model için son tahmini sağlar.










