Sobes.tech
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