глоссарий

Target leakage in time

Target leakage in time

Утечка целевой переменной во времени — ситуация, когда в обучающие данные модели случайно попадает информация из будущего, неизвестная в момент реального прогноза. Алгоритм «подглядывает» в ответы, которые должен предсказывать: на тестах показывает блестящие результаты, но в реальной работе беспомощен. Особенно коварна проблема для временных рядов — котировок, температуры, нагрузки на сервер.

Почему это важно? Модель с утечкой выглядит идеально в лаборатории, но в реальности её прогнозы обречены на провал. Представьте врача, которому дали шпаргалку на экзамене: он получит пятёрку, но в больнице окажется бесполезен. В машинном обучении такая «шпаргалка» возникает из-за небрежной обработки времени: если в признаки попали данные, измеренные после прогнозируемого момента, или хронология нарушена перемешиванием, модель запоминает не закономерности, а временные аномалии.

Интуитивный пример — прогноз погоды на завтра. Модель учат по архиву: сегодняшние метеоданные сопоставляют с завтрашней температурой. Но если в «сегодняшние» признаки случайно включить показания послезавтра, модель выучит правило «смотри на послезавтра». На прошлых данных всё будет отлично, ведь утечка есть и там. А в настоящем «послезавтра» ещё не наступило — предсказание станет бессмысленным.

Конкретный случай из финансов. Банк прогнозирует дефолт клиента в следующем месяце. Инженер добавил в признаки средний остаток на счёте за весь следующий месяц, включая период после дефолта. Алгоритм обнаружил, что у обанкротившихся счёт обнулился, и выдаёт точные прогнозы: на исторических тестах точность 99%. Но в реальном времени модель не может заглянуть в будущее — и терпит крах.

Вывод: утечка целевой переменной во времени — тихая катастрофа, маскирующаяся под успех. Всегда проверяйте, не попали ли в признаки данные, созданные позже момента прогноза, и соблюдайте жёсткую хронологию при обучении и валидации. Только тогда модель будет предсказывать будущее, а не вспоминать его.