Co je target encoding pro kategorické znaky v čase a jak se vyhnout leakage?
sobes.tech AI
Odpověď od AI
Target encoding pro kategorické znaky v časových řadách je metoda nahrazení kategorických hodnot číselnými, založená na statistice cílové proměnné (například průměr cíle pro každou kategorii). V kontextu časových dat je důležité zabránit úniku informací (leakage), kdy při kódování jsou používána data z budoucnosti vzhledem k aktuálnímu časovému bodu.
Aby se zabránilo leakage, při výpočtu target encoding pro každý časový bod se používají pouze informace dostupné do tohoto bodu. Například pro každou kategorii se vypočítá průměr cíle ze všech předchozích pozorování, aniž by se zahrnovala aktuální nebo budoucí data. To lze realizovat pomocí kumulativních průměrů nebo posuvných oken se zpožděním.
Příklad v Pythonu (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')
# Kumulativní průměr cíle podle kategorie, posunutý o 1, aby se nezahrnoval aktuální cíl
df['target_enc'] = df.groupby('category')['target'].apply(lambda x: x.shift().expanding().mean())
print(df)
Tímto způsobem target encoding odráží historickou statistiku bez úniku budoucích informací.