Что такое target encoding для категориальных признаков во времени и как избегать leakage?
Ответ от нейросети
sobes.tech AI
Target encoding для категориальных признаков во временных рядах — это метод замены категориальных значений на числовые, основанный на статистике целевой переменной (например, среднее значение таргета для каждой категории). В контексте временных данных важно избегать утечки информации (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 отражает историческую статистику без утечки будущей информации.