Čo je target encoding pre kategorizované znaky v čase a ako sa vyhnúť leakage?
sobes.tech AI
Odpoveď od AI
Target encoding pre kategorizovaných znakov v časových radoch je metóda, ktorá nahrádza kategorizované hodnoty číselnými hodnotami na základe štatistiky cieľovej premennej (napríklad priemerná hodnota cieľa pre každú kategóriu). V kontexte časových údajov je dôležité vyhnúť sa úniku informácií (leakage), keď sa počas kódovania používajú údaje z budúcnosti vzhľadom na aktuálny časový bod.
Aby sa zabránilo leakage, pri výpočte target encoding pre každý časový bod sa používa iba dostupná informácia pred týmto bodom. Napríklad pre každú kategóriu sa vypočíta priemerná hodnota cieľa zo všetkých predchádzajúcich pozorovaní, bez zahrnutia aktuálneho alebo budúceho. Toto možno realizovať pomocou kumulatívnych priemerov alebo posuvných okien so zdržaním.
Príklad v Pythone (pandas):
import pandas as pd
df = pd.DataFrame({
'category': ['A', 'B', 'A', 'B', 'A'],
'target': [1, 0, 1, 1, 0],
'time': pd.date_range('2023-01-01', periods=5)
})
df = df.sort_values('time')
# Kumulatívny priemer cieľa podľa kategórie, posunutý o 1, aby sa nezahrňoval aktuálny cieľ
df['target_enc'] = df.groupby('category')['target'].apply(lambda x: x.shift().expanding().mean())
print(df)
Týmto spôsobom target encoding odráža historické štatistiky bez úniku budúcich informácií.