Sobes.tech
Middle — Senior

Was ist Target Encoding für kategoriale Merkmale im Zeitverlauf und wie vermeidet man Leakage?

sobes.tech KI

Antwort von AI

Target-Encoding für kategoriale Merkmale in Zeitreihen ist eine Methode, bei der kategoriale Werte durch Zahlen ersetzt werden, basierend auf der Statistik der Zielvariable (z.B. Durchschnittswert des Targets für jede Kategorie). Im Kontext zeitlicher Daten ist es wichtig, Informationslecks (Leakage) zu vermeiden, bei denen bei der Kodierung Daten aus der Zukunft im Vergleich zum aktuellen Zeitpunkt verwendet werden.

Um Leakage zu vermeiden, wird bei der Berechnung des Target-Encoding für jeden Zeitpunkt nur die bis dahin verfügbare Information genutzt. Zum Beispiel wird für jede Kategorie der Durchschnitt des Targets aller vorherigen Beobachtungen berechnet, ohne die aktuelle oder zukünftige Beobachtung einzubeziehen. Dies kann mit kumulativen Durchschnitten oder gleitenden Fenstern mit Verzögerung umgesetzt werden.

Beispiel 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')

# Kumulative Durchschnitt des Targets pro Kategorie, um eine Verschiebung, um den aktuellen Target nicht zu verwenden

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

print(df)

Auf diese Weise spiegelt Target-Encoding historische Statistiken wider, ohne zukünftige Informationen zu leaken.