Le problème de fuite de données
Le target encoding naïf laisse fuiter l'information future : en encodant une catégorie par la moyenne de sa cible, vous utilisez l'information de la même ligne pour s'encoder elle-même.
La solution de CatBoost : ordered target encoding
CatBoost traite les lignes dans un ordre aléatoire. Pour encoder la ligne i, il n'utilise que les statistiques calculées sur les lignes 0..i-1. Cela empêche la fuite par construction.
Implémentation
from catboost import CatBoostClassifier
model = CatBoostClassifier(
cat_features=['city', 'device_type', 'email_domain'],
iterations=1000,
learning_rate=0.05,
depth=6,
)
model.fit(X_train, y_train)
Aucun encodage manuel nécessaire — passez directement les chaînes brutes.