Sobes.tech
Middle — Senior

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