Middle+
Back leakage nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Back leakage (geri sızma), makine öğreniminde, test veya doğrulama veri setinden gelen bilginin istemeden eğitim sürecine sızması durumudur. Bu, modelin bu verilere aşırı uyum sağlamasına neden olur ve test setindeki performans değerlendirmeleri (kalite metrikleri) abartılı görünür ve modelin yeni, unseen verilere genelleme yeteneğini yansıtmaz.
Back leakage nedenleri:
- Veri ön işleme (ölçeklendirme, normalleştirme, kategorik özelliklerin kodlanması) tüm veri setinde, eğitim, test ve doğrulama setlerine bölmeden önce yapılması.
- Eğitim seti işlenirken test veya doğrulama setinden istatistiklerin (örneğin, ortalama, standart sapma) kullanılması.
- Özellik seçiminin tüm veri seti kullanılarak yapılması, test dahil.
- Model veya hiperparametrelerin, test veri setine ilişkin gözlemlenen performansa dayanarak manuel ayarlanması.
Back leakage sonuçları:
- Güvenilir olmayan performans değerlendirmeleri.
- Modelin yeni verilerde kötü performans göstermesi.
- Verimsiz modele kaynak israfı.
Back leakage'i önleme:
- Veriyi her türlü ön işleme veya analizden önce eğitim, doğrulama ve test setlerine ayırmak.
- Veri ön işleme (örneğin,
StandardScaler,OneHotEncoder) sadece eğitim setine uygulamak ve sonra eğitilmiş dönüştürücüleri kullanarak doğrulama ve test setlerini dönüştürmek. - Özellik seçimlerini sadece eğitim setinde yapmak.
- Hiperparametreleri ayarlamak ve modeli değerlendirmek için eğitim setinde çapraz doğrulama kullanmak.
Yanlış ölçeklendirme örneği (back leakage'e yol açar):
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Diyelim ki df adında bir DataFrame'im var
# Yanlış yaklaşım: tüm DataFrame'i ölçeklendirme
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)
# Daha sonra veriyi böl
X_train, X_test, y_train, y_test = train_test_split(df_scaled, ...)
Doğru ölçeklendirme örneği (back leakage'ten kaçınır):
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Diyelim ki df adında bir DataFrame'im var
# Doğru yaklaşım: önce veriyi böl
X_train, X_test, y_train, y_test = train_test_split(df, ...)
# Daha sonra, sadece eğitim verisi üzerinde scaler'ı eğit
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
# Eğitilen scaler'ı test verisine uygula
X_test_scaled = scaler.transform(X_test)
# Artık X_train_scaled ve X_test_scaled model eğitimi için hazırdır