Sobes.tech
Middle — Senior

Czym jest target encoding dla cech kategorycznych w czasie i jak unikać leakage?

sobes.tech AI

Odpowiedź od AI

Target encoding dla cech kategorycznych w szeregach czasowych to metoda zamiany wartości kategorycznych na liczby, oparta na statystyce zmiennej celu (np. średnia wartość celu dla każdej kategorii). W kontekście danych czasowych ważne jest unikanie wycieku informacji (leakage), gdy podczas kodowania wykorzystywane są dane z przyszłości w stosunku do aktualnego punktu czasowego.

Aby zapobiec leakage, podczas obliczania target encoding dla każdego punktu czasowego używa się tylko informacji dostępnej do tego punktu. Na przykład, dla każdej kategorii oblicza się średnią celu na wszystkich wcześniejszych obserwacjach, nie uwzględniając bieżącej ani przyszłych. Można to zrealizować za pomocą średnich skumulowanych lub okien przesuwanych z opóźnieniem.

Przykład w 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')

# Skumulowana średnia celu dla kategorii, przesunięta o 1, aby nie używać bieżącego celu

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

print(df)

W ten sposób target encoding odzwierciedla statystyki historyczne bez wycieku przyszłych informacji.