Cos'è la codifica target per le caratteristiche categoriche nel tempo e come evitare leakage?
sobes.tech AI
Risposta dell'AI
La codifica target per caratteristiche categoriche nelle serie temporali è un metodo che sostituisce i valori categorici con numeri, basato sulla statistica della variabile target (ad esempio, la media del target per ogni categoria). Nel contesto dei dati temporali, è importante evitare perdite di informazione (leakage), quando durante la codifica vengono utilizzati dati futuri rispetto al punto temporale attuale.
Per evitare il leakage, nel calcolo della codifica target per ogni punto temporale si utilizza solo l'informazione disponibile prima di quel punto. Ad esempio, per ogni categoria, si calcola la media del target su tutte le osservazioni precedenti, escludendo quella corrente e le future. Questo può essere implementato usando medie cumulative o finestre mobili con ritardo.
Esempio in 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 cumulativa del target per categoria, spostata di 1 per non usare il target corrente
df['target_enc'] = df.groupby('category')['target'].apply(lambda x: x.shift().expanding().mean())
print(df)
In questo modo, la codifica target riflette statistiche storiche senza leakage di informazioni future.