Sobes.tech
Middle — Senior

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í.