Target leakage (утечка целевой переменной) — это частный случай data leakage, при котором в признаки попадает информация о целевой переменной, недоступная в момент реального предсказания. Модель как будто «подсматривает ответ» и учится не на закономерностях, а на подсказке.
Проще: признак связан с target, но в реальной жизни вы не узнаете его до того, как нужно сделать прогноз.
Как это выглядит
-
Прямая утечка: признак — это сам target или его производная.
Пример: предсказываем, вернёт ли клиент кредит, а среди признаков есть «дата погашения долга». -
Косвенная утечка: признак — следствие целевого события.
Пример: предсказываем отток, а есть признак «причина ухода» или «дата отмены подписки». В момент прогноза этого ещё нет. -
Прокси-утечка: признак не равен target, но обновляется после события.
Пример: ID заявки, статус клиента, номер договора, которые присваиваются уже после наступления целевого события. -
Утечка через target encoding: если среднее значение target по категории считается на всех данных, включая validation/test, это тоже target leakage.
Примеры
-
Кредитный скоринг
Target: «выйдет ли клиент в дефолт».
Признаки-утечки: «дней просрочки», «статус взыскания», «дата последнего платежа».
В момент выдачи кредита этих данных ещё нет. -
Медицина
Target: «есть ли болезнь».
Признак-утечка: «назначенное лечение». Лечение назначают уже после диагноза. -
Отток клиентов (churn)
Target: «ушёл ли клиент».
Признак-утечка: «дата расторжения договора», «причина оттока». -
Мошенничество
Target: «мошенническая операция».
Признак-утечка: «chargeback», «дело закрыто как мошенничество». Это следствие, а не причина. -
E-commerce
Target: «купит ли пользователь».
Признак-утечка: «сумма заказа». Заказ появляется только после покупки.
Почему это опасно
- Метрики на валидации и тесте завышены: Accuracy 0.99, ROC-AUC 0.999.
- В продакшене качество резко падает.
- Бизнес принимает решения на основе ложной уверенности.
- Модель не воспроизводит реальный сценарий предсказания.
Как обнаружить
- Задать вопрос: «Будет ли этот признак известен в момент, когда мы делаем прогноз?»
- Посмотреть на важность признаков: один-два признака аномально доминируют.
- Убрать подозрительный признак и проверить, насколько упадёт качество.
- Использовать временную валидацию: обучать на прошлом, проверять на будущем.
- Привлечь эксперта предметной области.
Как предотвращать
- Чётко определить момент предсказания (cutoff time).
- Использовать только те данные, которые были доступны до этого момента.
- Удалять признаки, которые появляются после целевого события.
- Target encoding, WOE (Weight of Evidence), SMOTE и отбор признаков делать только внутри train-фолдов.
- Использовать
Pipelineв sklearn, чтобы все преобразования обучались только на train. - Проверять признаки на доступность в проде.
Коротко: target leakage — это когда признак содержит подсказку об ответе, которой в реальности не будет. Модель показывает красивые метрики, но становится бесполезной в продакшене.