Target leakage (утечка целевой переменной) — это частный случай data leakage, при котором в признаки попадает информация о целевой переменной, недоступная в момент реального предсказания. Модель как будто «подсматривает ответ» и учится не на закономерностях, а на подсказке.

Проще: признак связан с target, но в реальной жизни вы не узнаете его до того, как нужно сделать прогноз.

Как это выглядит

  • Прямая утечка: признак — это сам target или его производная.
    Пример: предсказываем, вернёт ли клиент кредит, а среди признаков есть «дата погашения долга».

  • Косвенная утечка: признак — следствие целевого события.
    Пример: предсказываем отток, а есть признак «причина ухода» или «дата отмены подписки». В момент прогноза этого ещё нет.

  • Прокси-утечка: признак не равен target, но обновляется после события.
    Пример: ID заявки, статус клиента, номер договора, которые присваиваются уже после наступления целевого события.

  • Утечка через target encoding: если среднее значение target по категории считается на всех данных, включая validation/test, это тоже target leakage.

Примеры

  1. Кредитный скоринг
    Target: «выйдет ли клиент в дефолт».
    Признаки-утечки: «дней просрочки», «статус взыскания», «дата последнего платежа».
    В момент выдачи кредита этих данных ещё нет.

  2. Медицина
    Target: «есть ли болезнь».
    Признак-утечка: «назначенное лечение». Лечение назначают уже после диагноза.

  3. Отток клиентов (churn)
    Target: «ушёл ли клиент».
    Признак-утечка: «дата расторжения договора», «причина оттока».

  4. Мошенничество
    Target: «мошенническая операция».
    Признак-утечка: «chargeback», «дело закрыто как мошенничество». Это следствие, а не причина.

  5. 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 — это когда признак содержит подсказку об ответе, которой в реальности не будет. Модель показывает красивые метрики, но становится бесполезной в продакшене.