Sobes.tech
Middle — Senior

O que é codificação de destino para variáveis categóricas ao longo do tempo e como evitar vazamentos?

sobes.tech IA

Resposta da IA

A codificação target para características categóricas em séries temporais é um método que substitui valores categóricos por números, baseado na estatística da variável alvo (por exemplo, a média do alvo para cada categoria). No contexto de dados temporais, é importante evitar vazamentos de informação (leakage), quando durante a codificação são utilizados dados do futuro em relação ao ponto de tempo atual.

Para evitar o leakage, ao calcular a codificação target para cada ponto no tempo, apenas as informações disponíveis antes desse ponto são usadas. Por exemplo, para cada categoria, calcula-se a média do alvo em todas as observações anteriores, sem incluir a atual nem as futuras. Isso pode ser implementado usando médias acumuladas ou janelas deslizantes com atraso.

Exemplo em 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')

# Média acumulada do alvo por categoria, deslocada em 1 para não usar o alvo atual

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

print(df)

Dessa forma, a codificação target reflete estatísticas históricas sem vazamento de informações futuras.