Middle+
Mis on back leakage?
sobes.tech AI
Vastus AI-lt
Tagasi lekkimine (back leakage) on olukord masinõppes, kus teave test- või valideerimiskogumi andmetest satub tahtmatult õppimisprotsessi. See viib mudeli üleõppimiseni nende andmete suhtes, mille tulemusena testkomplekti jõudluse hinnangud (metrikad) näivad ülehinnatud ja ei peegelda mudeli tegelikku üldistamisvõimet uutele, unseen andmetele.
Tagasi lekkimise põhjused:
- Andmete eelne töötlemine (skaalumine, normaliseerimine, kategooriliste tunnuste kodeerimine) kogu andmekogumi peal enne selle jagamist õppimis-, test- ja valideerimiskogumiteks.
- Statistika kasutamine test- või valideerimiskogumist (näiteks keskmine, standardhälve) õppimisprotsessis.
- Tunnuste valik (feature selection) kogu andmekogumi põhjal, kaasa arvatud test.
- "Käsitsi" mudeli või hüperparameetrite kohandamine testandmete põhjal.
Tagasi lekkimise tagajärjed:
- Usaldusväärsete hindamiste puudumine mudeli jõudluse kohta.
- Mudel ei tööta hästi uutel andmetel tootmises.
- Ressursside raiskamine ebaefektiivsele mudelile.
Tagasi lekkimise vältimine:
- Jagage andmed alati õppimis-, valideerimis- ja testkomplektideks enne mis tahes eelnevat töötlemist või analüüsi.
- Rakendage andmete eelne töötlemine (näiteks
StandardScaler,OneHotEncoder) ainult õppimisandmetele ning kasutage õppinud teisendajaid valideerimis- ja testandmete teisendamiseks. - Tehke tunnuste valik ainult õppimisandmetel.
- Kasutage ristvalideerimist õppimisandmetel hüperparameetrite seadistamiseks ja mudeli hindamiseks enne lõplikku testimist eraldatud testkomplektiga.
Näide vale skaleerimise kohta (viibib back leakage):
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Oletame, et meil on df andmekogum
# Vale lähenemine: skale kogu df
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)
# Seejärel jagame andmed
X_train, X_test, y_train, y_test = train_test_split(df_scaled, ...)
Õige skaleerimise näide (väldib back leakage):
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# Oletame, et meil on df andmekogum
# Õige lähenemine: kõigepealt jagame andmed
X_train, X_test, y_train, y_test = train_test_split(df, ...)
# Seejärel treenime skaleerija ainult treeningandmetel
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
# Ja rakendame treenitud skaleerijat testandmetele
X_test_scaled = scaler.transform(X_test)
# Nüüd on X_train_scaled ja X_test_scaled valmis mudeli treenimiseks