Масштабирование и target encoding до cross_val_score
Оценка качества сделана так:
X_enc = TargetEncoder().fit_transform(X, y)
X_all = StandardScaler().fit_transform(X_enc)
scores = cross_val_score(model, X_all, y, cv=5, scoring="roc_auc")
print(scores.mean()) # 0.91
На отложенной выборке, собранной за следующий квартал, ROC-AUC оказался 0.80. Что не так с оценкой?
- cross_val_score сам изолирует фолды, проблема только в смене периода данных
- Пять фолдов дают слишком шумную оценку, нужно увеличить cv и усреднить
- Препроцессинг обучен на всех данных, включая валидационные фолды, поэтому оценка завышена
- Проблема только в target encoding, масштабирование до сплита на оценку не влияет
