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.