Data Leakage
Veri sızıntısı, tahmin sırasında erişilemeyen bilgilerin eğitim veya değerlendirmeye girmesine ve üretimde başarısız olan puanların şişmesine yol açar. Nedenleri ve çözümleri ele alır.
Makine öğrenmesinde (ML) veri sızıntısı, modelin eğitim verilerinde veya değerlendirmesinde; gerçek tahminler yaparken erişemeyeceği bilgiler bulunduğunda ortaya çıkar. Bunlara test kümesinden örnekler, gelecekten gelen değerler veya yanıtı kodlayan özellikler dahildir. Geliştirme ve model testi sırasında model doğru görünür, ancak dayandığı kestirme yol ortadan kalktığı için üretimde düşük performans gösterir. Sızıntı, yeniden üretilemeyen sonuçların başlıca nedenlerinden biridir: makine öğrenmesine dayalı bilim çalışmalarını inceleyen bir tarama, 17 alanda etkilenmiş 294 makale saydı; iç savaş tahmininde ise sızıntı düzeltildiğinde karmaşık modeller, onlarca yıllık lojistik regresyona karşı bildirdikleri üstünlüğü kaybetti.
Veri Sızıntısı Nasıl Oluşur#
Sızıntı; verilerin bölünme, işlenme veya girdi olarak seçilme biçiminden kaynaklanır. Aynı hatalar, tablo modellerinde, zaman serisi analizinde ve eylem tanıma gibi görme görevlerinde tekrar eder:
- Eğitim-test bulaşması: Normalleştirme istatistikleri, eksik değer atama veya özellik seçimi gibi verilerden öğrenen adımlar bölme işleminden önce tüm veri kümesine uygulanır; böylece eğitim verileri değerlendirme bölümü hakkında bilgi taşır. Bölme işleminden önce oluşturulan yinelenen görüntüler ve artırılmış kopyalar da aynı etkiyi yaratır.
- Grup sızıntısı: Bir videonun ardışık kareleri, aynı hastanın birden fazla taraması veya aynı sahnenin fotoğrafları gibi ilişkili örnekler farklı bölümlere ayrılır. Model böylece görevi öğrenmek yerine sahneyi veya kişiyi tanıyarak yüksek puan alabilir.
- Zamansal sızıntı: Zaman sıralı verileri rastgele bölmek veya tahmin zamanından sonraki değerleri kullanan özellikler hesaplamak, modelin geleceğe bakmasına olanak tanır.
- Hedef sızıntısı: Bir girdi, hastalığı tahmin eden modeldeki “tedavi gördü” alanı gibi, etiketin sonucu veya vekilidir.
- Değerlendirmenin yeniden kullanımı: Test kümesine göre ince ayar yapmak veya bir büyük dil modelinin web ölçeğindeki ön eğitim verisinde kıyaslama sorularının bulunması, değerlendirmeyi bir eğitim sinyaline dönüştürür.
Görüntülerde de hedef sızıntısı bulunabilir. ChestX-ray14 veri kümesindeki test kümesinde yer alan pnömotoraks röntgenlerinin %80'inde göğüs tüpü de görülüyordu; bu tüp, hastalığı tedavi etmek için kullanılır. Veri kümesi üzerinde eğitilen bir sınıflandırıcı, tüp bulunan görüntülerde ROC AUC değeri 0,94'e, tüp bulunmayanlarda ise yalnızca 0,77'ye ulaştı; oysa algılayıcının bulması gereken vakalar tedavi görmemiş olanlardır.
Kodda Veri Sızıntısını Gösterme#
Çapraz doğrulamadan önce verilere bağlı bir adımı uyarlamak, ders kitaplarına giren bir hatadır ve etkisi kolayca ölçülebilir. Aşağıdaki örnek, hiçbir modelin yeni verilerde %50 doğruluğu geçemeyeceği saf gürültü üretir; ardından etiketleri en iyi ayıran 20 özelliği seçer ve lojistik regresyonu iki kez çapraz doğrular: birinde seçim tüm örnekler üzerinde uyarlanır, diğerinde ise seçimi her eğitim katında yeniden uyarlayan bir scikit-learn işlem hattı içinde yapılır.
import numpy as np
from sklearn.feature_selection import SelectKBest
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.pipeline import make_pipeline
# Pure noise: 100 samples, 5,000 random features, random labels (true accuracy is 50%)
rng = np.random.default_rng(0)
X = rng.normal(size=(100, 5000))
y = rng.integers(0, 2, size=100)
# Leaky: pick the 20 features that best separate the labels using every sample, then cross-validate
X_selected = SelectKBest(k=20).fit_transform(X, y)
leaky = cross_val_score(LogisticRegression(), X_selected, y, cv=5).mean()
# Correct: feature selection is refit inside each training fold
pipeline = make_pipeline(SelectKBest(k=20), LogisticRegression())
clean = cross_val_score(pipeline, X, y, cv=5).mean()
print(f"Leaky CV accuracy: {leaky:.2f}, correct CV accuracy: {clean:.2f}")Sızıntılı sürüm rastgele etiketlerde %85 doğruluk bildirirken işlem hattı, şans düzeyindeki %48'i bildirir. 5.000 özellik ve 100 örnek kullanıldığında bazı özellikler şans eseri etiketlerle ilişkilidir; doğrulama katları da seçime dahil edilirse bu şans her katın puanına yansır.
Veri Sızıntısını Önleme#
Önleme, bölme işlemiyle başlar; bu işlem verilerden öğrenen tüm adımlardan önce yapılır, böylece doğrulama ve test bölümleri görülmemiş kalır:
- Özellik mühendisliğinden önce böl: Ölçekleyicileri, eksik değer atayıcıları, kodlayıcıları ve özellik seçicileri yalnızca eğitim bölümünde uyarla; diğer bölümlere değiştirmeden uygula.
- Gruba veya zamana göre böl: Bir hastadan, videodan veya sahneden gelen tüm örnekleri tek bir bölümde tut; geçmiş verilerle eğitip gelecekteki verilerle test et.
- Karma değerleri ve gömme vektörlerini kullanarak yinelenenleri kaldır: Eğitimden önce bölümler arasındaki tam kopyaları dosya karmalarıyla, yakın kopyaları ise gömme vektörü benzerliğiyle karşılaştır.
- Girdileri denetle: Her özelliğin tahmin anında mevcut olup olmadığını sorgula; baskın tek bir özelliği veya şüpheli derecede yüksek bir puanı araştırılması gereken bir hata olarak ele al.
Sızıntı, kontrol noktası seçimini de çarpıtır. Ultralytics YOLO, bir veri kümesi YAML dosyasında listelenen train görüntülerinden öğrenir ve doğrulama uygunluğunun en yüksek olduğu epoch'tan best.pt dosyasını kaydeder. Algılama görevlerinde doğrulama uygunluğu mAP50-95'tir; bu nedenle train ile val arasında paylaşılan yakın yinelenmiş kareler, hem kontrol noktasını seçen puanı hem de bildirilen puanı yükseltir.
Veri Sızıntısı ve İlgili Terimler#
- Aşırı öğrenme: Model, meşru eğitim verilerindeki gürültüyü ezberler ve temiz bir doğrulama kümesinde düşük puan alır. Sızıntı, doğrulama puanının kendisini yanlış hale getirir; bu nedenle aşırı öğrenmiş bir model iyi görünebilir.
- Kestirme yoldan öğrenme: Model, etiketle ilişkili filigran veya arka plan gibi yanıltıcı bir ipucuna dayanır. Bu ipucunun, dağıtımda erişilemeyen bilgilerden eğitim veya değerlendirmeye ulaşması sızıntı olarak adlandırılır.
- Veri güvenliği: Siber güvenlikte veri sızıntısı, hassas verilerin yetkisiz taraflara açılması anlamına gelir; erişim denetimleri, şifreleme ve veri kaybını önleme araçları bu sorunu ele alır. İki terim yalnızca ad bakımından ortaktır.










