Sobes.tech
Middle — Senior

Τι είναι η κωδικοποίηση στόχου για κατηγορικές μεταβλητές στον χρόνο και πώς αποφεύγουμε τη διαρροή;

sobes.tech AI

Απάντηση από AI

Ο στόχος κωδικοποίησης για κατηγορικά χαρακτηριστικά σε χρονικές σειρές είναι μια μέθοδος αντικατάστασης των κατηγορικών τιμών με αριθμητικές, βασισμένη στη στατιστική της μεταβλητής στόχου (π.χ., ο μέσος όρος του στόχου για κάθε κατηγορία). Στο πλαίσιο των χρονικών δεδομένων, είναι σημαντικό να αποφεύγεται η διαρροή πληροφοριών (leakage), όταν κατά τον κωδικοποίηση χρησιμοποιούνται δεδομένα από το μέλλον σε σχέση με το τρέχον σημείο χρόνου.

Για να αποφευχθεί το leakage, κατά τον υπολογισμό του target encoding για κάθε χρονική στιγμή, χρησιμοποιείται μόνο η διαθέσιμη πληροφορία πριν από αυτήν. Για παράδειγμα, για κάθε κατηγορία, υπολογίζεται ο μέσος όρος του στόχου σε όλες τις προηγούμενες παρατηρήσεις, χωρίς να συμπεριλαμβάνονται η τρέχουσα ή μελλοντικές. Αυτό μπορεί να υλοποιηθεί με τη χρήση συσσωρευμένων μέσων ή κυλιόμενων παραθύρων με καθυστέρηση.

Παράδειγμα σε 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')

# Συσσωρευμένος μέσος όρος του στόχου ανά κατηγορία, μετατοπισμένος κατά 1 για να μην χρησιμοποιεί τον τρέχοντα στόχο

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

print(df)

Έτσι, η target encoding αντικατοπτρίζει ιστορική στατιστική χωρίς διαρροή μελλοντικών πληροφοριών.