Sobes.tech
Middle — Senior

Mis on sihtmärgi kodeerimine ajalooliste kategoriale tunnuste jaoks ja kuidas vältida lekkimist?

sobes.tech AI

Vastus AI-lt

Sihtmärgi kodeerimine kategoriale omaduste jaoks ajaridades on meetod, mis asendab kategorial väärtused arvuliste väärtustega, põhinedes sihtmuutuja statistikal (näiteks iga kategooria jaoks sihtmuutuja keskmine väärtus). Ajaridade kontekstis on oluline vältida teabe lekkimist (leakage), kui kodeerimise käigus kasutatakse tulevikuandmeid võrreldes praeguse ajapunktiga.

Leakage vältimiseks arvutatakse iga ajapunkti jaoks sihtmärgi kodeeringut ainult selleks ajaks kättesaadava teabe põhjal. Näiteks arvutatakse iga kategooria jaoks kõigi eelnevate jälgimiste sihtmärgi keskmine, välja arvatud praegune ja tulevased jälgimised. Seda saab teostada kumulatiivsete keskmiste või viivitusega libisevate akende abil.

Pythonis (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')

# Kumulatiivne sihtmärgi keskmine kategooria kaupa, nihutatud 1, et mitte kasutada praegust sihtmärki

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

print(df)

Sellisel viisil peegeldab sihtmärgi kodeering ajaloolist statistikat ilma tulevikuinfo lekketa.