Tüm yazılar
Matematik9 Ocak 2025

Veri Sızıntısı (Data Leakage): ML Projelerinin En Sık "Sessiz Katili"

Test setinde %99 doğruluk, üretimde %60. Aradaki fark sizi öldürür. Veri sızıntısı, ML hatalarının kralı.

Matematik Karavanı 6 dk okuma 5 soru
Sızdıran su borusu — veri sızıntısı metaforu

"Modelim %99 doğru, ama üretimde patladı"

Her veri bilimci bunu yaşar. Nedeni: data leakage (veri sızıntısı).

Tanım: model eğitim sırasında, gerçek dünyada erişemeyeceği bilgiyi kullanır. Test seti aldatıcı yüksek skor verir.

Türler

1. Target leakage

Hedef değişken, özellik olarak modele veriliyor (doğrudan veya dolaylı).

Klasik örnek: hastalık tahmini.

  • Özellikler arasında: "antibiyotik aldı mı?"
  • Hasta antibiyotik aldıysa zaten hasta → mükemmel ama anlamsız tahmin.

Çözüm: hedefin sonucu olabilecek özellikleri çıkar.

2. Train-test contamination

Test verisi eğitime karışmış.

Örnek:

  • Aynı müşteri hem train hem test sette.
  • Aynı resim farklı augmentation ile her ikisinde.
  • Hisse senedi: aynı şirket farklı tarihlerde.

Çözüm: dikkatli split (grup, zaman bazlı).

3. Time travel

Geleceğin bilgisini geçmişin tahminine kullanma.

Örnek: 2024 satış tahmini için 2024 ortalamasını feature kullanma.

Çözüm: rolling/expanding window — sadece o ana kadar olan bilgi.

4. Preprocessing sızıntısı

# YANLIŞ:
scaler.fit(X_all)  # tüm veri ile fit
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)

Scaler test setinin istatistiklerini öğrendi.

# DOĞRU:
scaler.fit(X_train)
X_test = scaler.transform(X_test)

5. Cross-validation hatası

# YANLIŞ:
X_imputed = imputer.fit_transform(X)
cross_val_score(model, X_imputed, y, cv=5)

Imputer tüm veriden imputation öğrendi.

# DOĞRU:
pipeline = make_pipeline(imputer, model)
cross_val_score(pipeline, X, y, cv=5)

Pratik örnekler

Telekom churn

Sızıntı: "müşterinin iptal sebebi" özelliği — iptal sonrası giriliyor.
Çözüm: sadece iptal tarihinden ÖNCEKİ bilgiler.

Kredi onay

Sızıntı: "kredi sonrası gelir değişimi".
Çözüm: sadece başvuru tarihindeki bilgiler.

Tıbbi tanı

Sızıntı: görüntü dosya isminde "kanser_var" ibaresi (yanlışlıkla ID).
Çözüm: metaverileri temizle.

Reklam tıklama

Sızıntı: "kullanıcı sayfada ne kadar kaldı" — sadece tıkladıysa biliyoruz.
Çözüm: post-hoc bilgiler dışla.

Tespit yolları

1. Aşırı yüksek skor şüphesi

Test doğruluğunuz %99'a yakınsa: şüphelen. Çoğu ML problemi bu kadar kolay değil.

2. Feature importance

Tek bir özellik tüm açıklama gücüne sahipse: muhtemelen sızıntı.

3. Reverse engineering

"Bu özellik üretim zamanında var olur mu?" sorusunu her özellik için sor.

4. Train vs prod karşılaştırması

Üretim performansı eğitimden çok düşükse: sızıntı + overfitting karışımı.

Önleme stratejileri

1. Pipeline kullan

scikit-learn pipeline veya MLflow ile eğitim-değerlendirme akışını tek nesne olarak yönet.

2. Stratified, group, time-based split

  • Sınıflandırma: stratified split.
  • Müşteri tahmini: müşteri bazında split (aynı müşteri tek tarafta).
  • Zaman serisi: zamana göre split (geleceği görme).

3. Cross-validation içinde tüm ön işleme

Imputation, scaling, feature engineering — hepsi CV içinde.

4. Hold-out test

CV ile model seçimi → hold-out sette son test.

5. Domain expert ile gözden geçirme

Tıbbi proje: doktor ile özellikleri kontrol et.

Modern AI'da

LLM çağında yeni sorun: benchmark contamination.

MMLU, HumanEval, GSM-8K test setlerinin internet üzerinde olması → model eğitiminde görür.

Sonuç: rapor edilen benchmark skorları şişirilmiş.

Çözüm: yeni, gizli benchmarks (LMSYS Arena, Hidden eval).

Türk vakaları

  • Bir Türk fintek: kredi modeli %95 AUC → üretimde %72. Sızıntı: başvuru tarihinden sonraki ödeme.
  • E-ticaret churn: müşteri ID'sinde gizli pattern.
  • Sigorta tarama: COVID döneminde tıbbi veride zaman sızıntısı.

Kapanış

Veri sızıntısı görünmez ama öldürücü. Bir veri bilimci için en önemli beceri: şüpheci olmak. Her başarılı modeli sorgula: "Acaba sızıntı mı var?"

Kahin sözü: yüksek test skorunu kutlama → araştır. Çünkü asıl test üretimde başlar.

Etiketler

data leakageveri sızıntısıML hatalarıcross-validationoverfitting

Kendinizi Test Edin

Cevaplarınız profilinizde istatistik olarak saklanır.

1. Data leakage nedir?

2. Klasik target leakage örneği?

3. Preprocessing sızıntısı nasıl önlenir?

4. Zaman serisi için doğru split?

5. Modern AI'da yeni sızıntı türü?