Sobes.tech
Middle — Senior

¿Qué es la codificación objetivo para características categóricas en el tiempo y cómo evitar la filtración?

sobes.tech AI

Respuesta de la IA

El codificado objetivo para características categóricas en series temporales es un método que reemplaza los valores categóricos por números, basado en la estadística de la variable objetivo (por ejemplo, el valor medio del objetivo para cada categoría). En el contexto de datos temporales, es importante evitar la fuga de información (leakage), cuando durante la codificación se utilizan datos del futuro en relación con el punto de tiempo actual.

Para evitar la fuga, al calcular el codificado objetivo para cada punto en el tiempo, solo se utiliza la información disponible antes de ese punto. Por ejemplo, para cada categoría, se calcula la media del objetivo en todas las observaciones anteriores, sin incluir la actual ni las futuras. Esto se puede implementar usando medias acumulativas o ventanas deslizantes con retraso.

Ejemplo en 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')

# Media acumulativa del objetivo por categoría, desplazada en 1 para no usar el objetivo actual

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

print(df)

De esta manera, el codificado objetivo refleja estadísticas históricas sin fuga de información futura.