Data Leakage (Veri Sızıntısı (Data Leakage))

ML'de test verisinden ya da gelecekteki bilgilerden sızan verinin model performansını yanıltıcı biçimde şişirmesi.

Veri sızıntısı (data leakage), makine öğrenimi modelinin eğitim sürecine gerçek dünya tahmin anında bulunmaması ya da bilinmemesi gereken bilgilerin karışması ve bu durumun modelin performans değerlendirmesini yanıltmasıdır. Ortaya çıkan en belirgin belirti, geliştirme aşamasında olağandışı yüksek doğruluk, F1 veya AUC değerleri elde edilmesidir; ancak model üretime geçtiğinde bu başarım bir anda çöker çünkü o "sızan" bilgi artık mevcut değildir. Veri sızıntısının iki ana türü vardır. Birinci tür olan hedef sızıntısı (target leakage), eğitim setindeki bir özelliğin tahmin edilmek istenen sonuçla zamansal ya da korelasyonel bağ üzerinden kirlendiği durumu tanımlar. Klasik örnek: sigorta hasar tahmin modelinde "hasar sonrası müşteri iletişim kaydı" özelliğinin kullanılması. Bu değişken modelin sonucu önceden "bilmesine" yol açar; üretimde tahmin anında henüz o kayıt oluşmadığından model başarısız olur. İkinci tür olan eğitim-test kirliği ise ön işleme adımlarının test verisine sıçramasından kaynaklanır. StandardScaler veya MinMaxScaler'ı tüm veri seti üzerinde fit edip ardından bölümleme yapmak bu hatanın en yaygın biçimidir: test setinden gelen istatistikler normalleştirmede kullanıldığından test seti gerçek anlamda görülmemiş olmaktan çıkar. Zaman serisi verileri özellikle yüksek risk taşır. Rastgele train/test bölümlemesi bu tür verilerde her zaman yanlıştır: gelecekteki gözlemler eğitim setine girebilir ve model aslında geleceği görerek geçmişi tahmin eder. Doğru yöntem TimeSeriesSplit veya walk-forward validation kullanmaktır. Tespitte en etkili yöntem, Scikit-learn Pipeline nesneleridir: her çapraz doğrulama kıvrımında ön işleme adımlarını yalnızca o kıvrımın eğitim verisine uyguladığından test kirliğini yapısal olarak engeller. Özellik önem sıralamalarında şaşırtıcı derecede yüksek katkı gösteren değişkenler hedef sızıntısı açısından mutlaka sorgulanmalıdır. Üretim ile geliştirme ortamı arasındaki ani performans düşüşü her zaman veri sızıntısının güçlü bir göstergesidir.

Veri Sızıntısı Nedir?

Veri sızıntısı, eğitim sürecine gerçek dünyada bulunmaması ya da bilinmemesi gereken bilgilerin karışması ve bu durumun modelin performans değerlendirmesini yanıltmasıdır. Model geliştirme ortamında olağandışı yüksek doğruluk, F1 veya AUC skorları elde edildiğinde genellikle veri sızıntısı söz konusudur. Sorun üretim ortamında modelin bu 'sızan' bilgiye erişememesiyle ani performans çöküşü olarak kendini gösterir.

Hedef Sızıntısı (Target Leakage)

Hedef sızıntısı, eğitim setindeki bir özelliğin tahmin edilmek istenen sonuçla zamansal ya da korelasyonel bağ üzerinden kirlendiği durumu ifade eder. Klasik örnek: sigorta hasar tahmin modelinde 'hasar sonrası müşteri iletişim kaydı' özelliğinin kullanılması. Bu özellik modelin hasar gerçekleştiğini dolaylı olarak 'bilmesini' sağlar; gerçek dünyada tahmin anında mevcut olmadığı için model üretimde başarısız olur. Tıbbi teşhis modelinde teşhis konulduktan sonra yapılan testlerin sonuçlarını özellik olarak kullanmak da aynı hataya düşer.

Eğitim-Test Kirliği

Eğitim-test kirliği, ön işleme adımlarının test verisine sıçramasından kaynaklanır. En yaygın senaryo: StandardScaler veya MinMaxScaler'ı tüm veri seti üzerinde fit edip ardından train/test bölümlemesi yapmaktır. Test verisinden gelen istatistikler normalleştirmede kullanıldığından test seti gerçek anlamda görülmemiş olmaktan çıkar. Doğru yöntem scaler'ı yalnızca eğitim seti üzerinde fit etmek, test setini sadece transform etmektir. Yüksek kardinaliteli kategorik değişkenlerde uygulanan target encoding de benzer biçimde sızıntıya yol açabilir.

Zaman Serisi Verilerinde Özel Riskler

Zaman serisi problemleri en yüksek sızıntı riskini taşır çünkü veri kronolojik bağımlılığa sahiptir. Rastgele train/test bölümlemesi bu tür verilerde her zaman yanlıştır: gelecekteki gözlemler eğitim setine, geçmişteki gözlemler test setine girebilir; model aslında 'geleceği görerek' geçmişi tahmin eder. Doğru yöntem TimeSeriesSplit gibi walk-forward validation tekniklerini kullanmaktır. Hareketli ortalama veya gecikme (lag) özelliklerini oluştururken t anındaki özellik için t+1 gözleminin istatistiklerini kullanmak tipik bir sızıntı kaynağıdır.

Tespit ve Önleme

Veri sızıntısını tespit etmek için en etkili sinyal, bir özelliğin tek başına model performansına aşırı katkı sağlamasıdır. Scikit-learn Pipeline nesneleri birincil önlem yöntemidir: her çapraz doğrulama kıvrımında ön işleme adımlarını yalnızca o kıvrımın eğitim verisine uyguladığından test kirliğini önler. Özellik önem sıralamalarında şaşırtıcı derecede yüksek önem gösteren değişkenleri hedef sızıntısı açısından sorgula. Zaman serilerinde kronolojik sırayı her adımda doğrula ve özellik mühendisliği mantığının gelecek bilgisi içermediğinden emin ol.

Gerçek Dünya Sonuçları

Üretimde keşfedilen veri sızıntısı ciddi iş kayıplarına yol açabilir. Sızıntılı eğitimle %95 doğruluk sergileyen bir kredi risk modeli, bankanın onaylamaması gereken kredileri onaylamasına neden olabilir. Sağlık alanında sızıntılı bir hastalık tahmin modeli yanlış pozitif veya yanlış negatif oranlarını artırarak hem ekonomik hem tıbbi sonuçlar doğurabilir. Bu nedenle model doğrulama sürecinde sızıntı denetimi, teknik performans metrikleri kadar kritik bir adımdır.

Sık Sorulan Sorular

Veri sızıntısı nasıl anlaşılır? Geliştirme ortamında aşırı yüksek metrikler veya tek bir özelliğin modeli neredeyse tek başına taşıması güçlü sızıntı sinyalleridir.

Scikit-learn Pipeline veri sızıntısını tamamen önler mi? Pipeline ön işleme tabanlı sızıntıyı büyük ölçüde önler; ancak elle yapılan yanlış özellik mühendisliği Pipeline'ın dışında kalır.

Zaman serisi verilerinde hangi doğrulama yöntemi doğru? Walk-forward validation veya TimeSeriesSplit. Rastgele kıvrım ataması zaman serisi verilerinde yanlıştır.

Hedef sızıntısını tespit etmenin en hızlı yolu nedir? Her özelliği tahmin hedefiyle korelasyonu açısından incele; yüksek korelasyonlu özelliği hedef sızıntısı açısından sorgula.

Veri sızıntısı her zaman kasıtsız mıdır? Evet, tipik olarak kasıtsızdır; özellikle normalleştirme veya kodlama adımlarında deneyimsiz uygulayıcılarda sık görülür.

Sıkça Sorulan Sorular

  • check_circle Veri sızıntısı modeli nasıl etkiler? Geliştirme aşamasında yapay yüksek performans üretir; üretim ortamında tahmin anında sızan bilgi mevcut olmadığından model hızla başarısız olur.
  • check_circle Scikit-learn Pipeline veri sızıntısını nasıl önler? Her çapraz doğrulama kıvrımında ön işleme adımlarını yalnızca o kıvrımın eğitim verisine uygular; test setine istatistik sızmasını yapısal olarak engeller.
  • check_circle Zaman serisi verilerinde sızıntıyı önlemek için hangi yöntem kullanılır? TimeSeriesSplit veya walk-forward validation tercih edilir; rastgele bölümleme kronolojik bağımlılığı bozduğundan kesinlikle uygulanmaz.
  • check_circle Hedef sızıntısını nasıl tespit ederim? Özellik önem sıralamalarında orantısız yüksek katkı gösteren değişkenleri sorgula; o özelliğin tahmin anında gerçekte mevcut olup olmadığını zaman çizelgesiyle doğrula.