Sobes.tech
Middle — Senior

Šta je target encoding za kategorijske osobine u vremenu i kako izbeći leakage?

sobes.tech АИ

Одговор од АИ

Target encoding za kategorijalne karakteristike u vremenskim nizovima je metoda zamene kategorijalnih vrednosti numeričkim, zasnovana na statistici ciljne promenljive (npr. prosečna vrednost cilja za svaku kategoriju). U kontekstu vremenskih podataka, važno je izbegavati curenje informacija (leakage), kada se tokom kodiranja koriste podaci iz budućnosti u odnosu na trenutni vremenski trenutak.

Da bi se izbegao leakage, prilikom računanja target encoding za svaku vremensku tačku koristi se samo informacija dostupna do te tačke. Na primer, za svaku kategoriju, računa se prosečna vrednost cilja za sve prethodne posmatranja, bez uključivanja trenutnog ili budućeg. Ovo se može implementirati pomoću kumulativnih proseka ili kliznih prozora sa zakašnjenjem.

Primer u Python (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')

# Kumulativni prosek cilja po kategoriji, pomeren za 1 da ne koristi trenutni cilj

df['target_enc'] = df.groupby('category')['target'].apply(lambda x: x.shift().expanding().mean())

print(df)

Na ovaj način, target encoding odražava istorijske statistike bez curenja budućih informacija.