Makine öğrenmesi projelerinde sıkça karşılaşılan ancak çoğu zaman fark edilmeyen bir hata vardır: veri sızıntısı (data leakage). Model eğitimi sırasında, hedef değişkenden veya gelecekteki verilerden bilgi sızdığında, model gerçekte sahip olmadığı bir avantaj elde eder. Bu durum, test veya gerçek dünya performansında ciddi hayal kırıklıklarına yol açar. Veri sızıntısını anlamak ve önlemek, güvenilir modeller geliştirmenin temelidir. Bu yazıda, farklı leakage türlerini, pratik önleme yöntemlerini ve adım adım uygulayabileceğiniz bir kontrol listesini sunuyoruz.
Veri Sızıntısı Türleri
Veri sızıntısı genellikle iki ana kategoride incelenir:
- Hedef değişken sızıntısı (target leakage): Modelin eğitim aşamasında, gelecekte erişilemeyecek veya hedef değişkenle korelasyonu yüksek olan bilgiler kullanılır. Örneğin, bir hastalık tahmin modelinde, hastalığın teşhisinden sonra alınan ilaç bilgilerinin girdi olarak kullanılması.
- Zaman serisi sızıntısı (train-test contamination): Zaman bağımlı verilerde, eğitim ve test kümeleri aynı zaman diliminden veri içerdiğinde gelecekteki bilgiler sızar. Örneğin, bir hisse senedi fiyat tahmin modelinde, gelecekteki fiyatları içeren verilerle eğitim yapmak.
Bunun yanı sıra, özellik mühendisliği sırasında tüm veri kümesini kullanarak dönüşümler yapmak da sık yapılan bir hatadır. Örneğin, standardizasyon için ortalamayı tüm veriden hesaplamak yerine sadece eğitim kümesini kullanmak gerekir.
Veri Sızıntısının Belirtileri
Eğer modeliniz beklenmedik derecede yüksek bir doğruluk gösteriyorsa (örneğin, %99’dan fazla) veya eğitim hatası test hatasına kıyasla çok düşükse, veri sızıntısından şüphelenmelisiniz. Ayrıca, bazı özelliklerin hedef değişkenle anlamsız derecede yüksek korelasyon göstermesi de bir işarettir. K-fold cross-validation kullanıyorsanız, katlamalar arasında büyük performans farkları da leakage belirtisi olabilir.
Pratik İpuçları ve Kontrol Listesi
Veri sızıntısını önlemek için aşağıdaki adımları kontrol listeniz olarak kullanabilirsiniz:
- Veri bölme işlemini her zaman önce yapın. Tüm özellik mühendisliği ve ölçekleme adımlarını sadece eğitim kümesi üzerinde gerçekleştirin, ardından aynı dönüşümleri test kümesine uygulayın.
- Zaman damgası kontrollü verilerde kronolojik bölme kullanın. Rastgele bölme yerine, eğitim kümesi daha eski, test kümesi daha yeni verilerden oluşsun.
- Özellik mühendisliğinde dikkatli olun. Örneğin, müşteri churn tahmininde “son ay içinde şikayet sayısı” gibi bir özellik, churn kararından sonra değişebilir; bu durumda hedef sızıntısı oluşur.
- Özelliklerin anlamını sorgulayın. Bir özellik, gelecekteki bir olayı veya hedef değişkenin doğrudan bir sonucunu temsil ediyorsa modelden çıkarılmalıdır.
- Cross-validation’ı doğru uygulayın. Eğitim ve test ayrımını her katlamada bağımsız yapın. Lojistik regresyon vs SVM gibi model karşılaştırmalarında leakage, sonuçları tamamen geçersiz kılabilir.
- Eksik veri atama işlemlerini eğitim kümesine göre yapın. Ortalama, medyan gibi istatistikleri sadece eğitim verisinden hesaplayın.
- Anomalileri ve aykırı değerleri işlerken tüm veriyi kullanmayın. Aykırı değer tespiti için eğitim kümesini kullanın, test kümesini ayrı tutun.
- Dengesiz veri setlerinde daha dikkatli olun. SMOTE gibi sentetik veri üretme yöntemlerini sadece eğitim kümesine uygulayın. Aksi halde aynı sentetik örnekler test kümesine sızabilir. Bu konuda dengesiz veri setlerinde makine öğrenmesi yazımıza da göz atabilirsiniz.
- Model değerlendirme metriklerini doğru yorumlayın. Aşırı iyimser bir ROC AUC değeri genellikle leakage işaretidir. ROC AUC vs Precision-Recall AUC karşılaştırmasında, leakage dengesiz verilerde özellikle yanıltıcı olabilir.
Sık Yapılan Hatalar
Veri sızıntısı konusunda en yaygın hatalar şunlardır:
- Veri ön işleme adımlarını tüm veri kümesine uygulamak. Örneğin, özellik seçimi için tüm veride korelasyon hesaplamak. Bu işlemler her zaman eğitim kümesi ile sınırlandırılmalıdır.
- Geleceğe yönelik bilgileri farkında olmadan modele eklemek. Örneğin, bir kredi risk modelinde, kredi başvurusu yapıldıktan sonra gerçekleşen ödeme geçmişini kullanmak.
- Veri birleştirme işlemlerinde dikkatsizlik. Farklı zamanlarda toplanmış veri kaynaklarını birleştirirken, bir kaynaktaki bilginin diğerine sızması.
Veri Sızıntısını Tespit Etme Yöntemleri
Eğer leakage şüphesi varsa, modelin özellik önemleri inceleyin. Anlamsız derecede yüksek öneme sahip özellikler genellikle sızıntı belirtisidir. Ayrıca, basit bir lineer model ile yapılan sıfırıncı seviye tahmin (hedef değişkenin ortalamasını kullanmak) ve model sonuçları arasında büyük fark varsa dikkatli olunmalıdır. Bir diğer yöntem, veri kümesine rastgele bir hedef değişken ekleyip modelin bu sahte hedefi tahmin edip edemediğini test etmektir. Eğer model sahte hedefte de yüksek başarı gösteriyorsa, büyük olasılıkla leakage vardır.
Sonuç
Veri sızıntısı, makine öğrenmesi projelerinde en sinsi hatalardan biridir. Ancak doğru önlemler alındığında tamamen önlenebilir. Temel kural: eğitim ve test verilerini her adımda birbirinden izole tutmaktır. Yukarıdaki kontrol listesini projelerinizde düzenli olarak kullanarak, daha güvenilir ve gerçekçi modeller geliştirebilirsiniz.
Sık Sorulan Sorular
Veri sızıntısı (data leakage) nedir?
Veri sızıntısı, model eğitimi sırasında hedef değişken veya gelecekteki verilerden bilgi sızmasıdır. Bu durum modelin gerçek dışı yüksek performans göstermesine neden olur.
Veri sızıntısı nasıl tespit edilir?
Modelin anormal derecede yüksek doğruluğu, eğitim ve test hatası arasındaki büyük fark veya anlamsız özellik önemleri leakage işareti olabilir. Sahte hedef değişken testi de kullanılabilir.
Zaman serisi verilerinde veri sızıntısı nasıl önlenir?
Zaman bağımlı verilerde kronolojik bölme kullanın: eğitim kümesi eski, test kümesi yeni verilerden oluşsun. Ayrıca, gelecekteki bilgileri içeren özellikler eklemekten kaçının.
Özellik mühendisliği sırasında veri sızıntısından nasıl kaçınılır?
Tüm dönüşümleri (ölçekleme, eksik veri atama, özellik seçimi vb.) sadece eğitim kümesi üzerinde yapın. Test kümesine aynı dönüşümleri eğitim kümesinden öğrenilen parametrelerle uygulayın.
Dengesiz veri setlerinde veri sızıntısı daha mı yaygındır?
Evet, dengesiz veri setlerinde SMOTE gibi sentetik veri üretme yöntemleri yanlış uygulandığında leakage sık görülür. Bu yöntemler sadece eğitim kümesine uygulanmalıdır.






