Middle+
Mi az a back leakage?
sobes.tech MI
Válasz az MI-től
A back leakage (hátsó szivárgás) egy olyan helyzet a gépi tanulásban, amikor az információk a teszt- vagy validációs adathalmazból véletlenül bekerülnek a tanulási folyamatba. Ez túlillesztést eredményez a modellnél ezekre az adatokra, és a teljesítménymutatások (minőségi metrikák) a tesztkészleten túlértékeltek lehetnek, és nem tükrözik a modell valódi általánosítási képességét új, unseen adatokra.
A back leakage okai:
- Adatok előfeldolgozása (skálázás, normalizálás, kategórikus jellemzők kódolása) az egész adathalmazon, mielőtt felosztanánk tanulási, tesztelési és validációs készletekre.
- Statisztikák (pl. átlag, szórás) használata a teszt- vagy validációs készletből a tanulási készlet feldolgozása során.
- Jellemzők kiválasztása az egész adathalmazon, beleértve a tesztet is.
- Manuális modell vagy hiperparaméter hangolás a tesztkészleten mért teljesítmény alapján.
A back leakage következményei:
- Nem megbízható modell teljesítményértékelések.
- A modell rosszul működik új adatokon a gyártásban.
- Erőforráspazarlás egy hatékonytalan modellen.
A back leakage megelőzése:
- Mindig oszd szét az adatokat tanulási, validációs és tesztkészletekre mielőtt bármilyen előfeldolgozást vagy elemzést végeznél.
- Alkalmazd az adat-előfeldolgozást (pl.
StandardScaler,OneHotEncoder) csak a tanulási adatokon, majd használd a tanított transzformátorokat a validációs és teszt adatok átalakítására. - Csak a tanulási adatokon végezz jellemző kiválasztást.
- Használj keresztvalidációt a tanulási adatokon a hiperparaméterek hangolására és a modell értékelésére, mielőtt végleges tesztelést végeznél a lefoglalt tesztkészleten.
Hibás skálázási példa (hátsó szivárgáshoz vezet):
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Tegyük fel, hogy van egy df nevű DataFrame
# Hibás megközelítés: az egész DataFrame skálázása
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)
# Ezután az adatokat felosztjuk
X_train, X_test, y_train, y_test = train_test_split(df_scaled, ...)
Helyes skálázási példa (hátsó szivárgás elkerülése):
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Tegyük fel, hogy van egy df nevű DataFrame
# Helyes megközelítés: először oszd fel az adatokat
X_train, X_test, y_train, y_test = train_test_split(df, ...)
# Ezután tanítsd a skálálót csak a tanulási adatokon
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
# És alkalmazd a tanult skálálót a teszt adatokra
X_test_scaled = scaler.transform(X_test)
# Most X_train_scaled és X_test_scaled készen állnak a modell tanítására