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