Sobes.tech
Middle — Senior

Ce este codificarea țintă pentru caracteristicile categorice în timp și cum evităm scurgerea?

sobes.tech AI

Răspuns de la AI

Codificarea target pentru caracteristicile categorice în seriile temporale este o metodă de înlocuire a valorilor categorice cu valori numerice, bazată pe statistica variabilei țintă (de exemplu, media țintei pentru fiecare categorie). În contextul datelor temporale, este important să se evite scurgerile de informații (leakage), atunci când în timpul codificării se utilizează date din viitor față de punctul actual în timp.

Pentru a evita leakage-ul, la calcularea codificării target pentru fiecare punct în timp, se folosește doar informația disponibilă înainte de acel punct. De exemplu, pentru fiecare categorie, se calculează media țintei pentru toate observațiile anterioare, fără a include cea curentă sau cele viitoare. Acest lucru poate fi realizat folosind medii cumulative sau ferestre glisante cu întârziere.

Exemplu în 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')

# Media cumulativă a țintei pe categorie, decalată cu 1 pentru a nu folosi ținta curentă

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

print(df)

Astfel, codificarea target reflectă statistici istorice fără scurgeri de informații din viitor.