Middle+
Back leakage nima?
sobes.tech AI
AIdan javob
Back leakage (orqa oqish) — bu mashina o‘rganishida test yoki validatsiya ma’lumotlar to‘plamidan ma’lumotlar tasodifan o‘quv jarayoniga kirib qolishi holatidir. Bu modelning bu ma’lumotlarga haddan tashqari moslashishiga olib keladi va test to‘plamidagi ishlash baholari (sifat metrikalari) oshirilgan ko‘rinishda bo‘lib, modelning yangi, unseen ma’lumotlarga umumiylashish qobiliyatini haqiqiy tarzda aks ettirmaydi.
Back leakage sabablari:
- Ma’lumotlarni oldindan ishlash (skaling, normalizatsiya, kategorik xususiyatlarni kodlash) butun ma’lumotlar to‘plamida, uni o‘quv, test va validatsiya to‘plamlariga bo‘lishdan oldin amalga oshirish.
- O‘quv to‘plamini ishlashda test yoki validatsiya to‘plamidan statistikalarni (masalan, o‘rtacha, standart og‘ish) ishlatish.
- Xususiyatlarni tanlash butun ma’lumotlar to‘plamiga asoslangan, shu jumladan test.
- Model yoki hiperparametrlarni qo‘lda sozlash, test to‘plamida kuzatilgan ishlashga asoslangan.
Back leakage natijalari:
- Ishlash baholari ishonchliligi past bo‘lgan baholar.
- Model yangi ma’lumotlarda yomon ishlaydi.
- Resurslar isrof qilinadi, model samarali emas.
Back leakage oldini olish:
- Har doim ma’lumotlarni o‘quv, validatsiya va test to‘plamlariga oldin har qanday oldindan ishlash yoki tahlildan oldin bo‘lish.
- Ma’lumotlarni oldindan ishlash (masalan,
StandardScaler,OneHotEncoder) faqat o‘quv to‘plamiga qo‘llash va keyin o‘qitilgan transformatorlarni validatsiya va test to‘plamlariga qo‘llash. - Xususiyatlarni tanlash faqat o‘quv to‘plamida amalga oshirilishi kerak.
- Hyperparametrlarni sozlash va modelni baholash uchun o‘quv to‘plamida kross-validatsiya qilish.
Noto‘g‘ri skalalash misoli (back leakage’ga olib keladi):
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Faraz qilamiz, df nomli DataFrame bor
# Noto‘g‘ri yondashuv: butun DataFrame’ni skalalash
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)
# Keyin ma’lumotlarni bo‘lish
X_train, X_test, y_train, y_test = train_test_split(df_scaled, ...)
To‘g‘ri skalalash misoli (back leakage’ni oldini oladi):
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Faraz qilamiz, df nomli DataFrame bor
# To‘g‘ri yondashuv: avvalo ma’lumotlarni bo‘lish
X_train, X_test, y_train, y_test = train_test_split(df, ...)
# Keyin, faqat o‘quv ma’lumotlarida scaler’ni o‘qit
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
# Va, o‘qitilgan scaler’ni test ma’lumotlariga qo‘llash
X_test_scaled = scaler.transform(X_test)
# Endi X_train_scaled va X_test_scaled modelni o‘qitish uchun tayyor