Интерактивная статистика

56 бесплатных интерактивных уроков: от среднего и медианы до A/B-тестов и Байеса. Двигайте графики и стройте интуицию. Без регистрации.

Модуль 9 «Ловушки данных»

Утечка данных (data leakage)

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

0.50.75182%train78%test77%прод
Тест ≈ прод (78% vs 77%) — честная оценка. Тест предсказывает реальное качество.

Прод-качество (зелёное) — настоящее, оно не меняется. Утечка раздувает только train/test: «признак из будущего» (например, дата закрытия счёта при прогнозе оттока) выдаёт ответ; предобработка на всех данных до сплита даёт тесту подсмотреть в обучение. Цель валидации — чтобы тест ≈ прод.

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

Что это значит

Профилактика — дисциплина пайплайна: сначала split, потом вся подготовка только на train (через fit на train и transform на test). Признаки проверяют на «доступность во времени»: можно ли их вычислить строго до момента прогноза.

Подозрительно высокое качество — повод не радоваться, а искать утечку. «Слишком хорошо» в ML почти всегда означает ошибку валидации, а не гениальную модель.

Где это встречается

Знаменитые провалы соревнований и стартапов: модель показывала AUC 0.99 на тесте и проваливалась в бою — потому что в данные просочился идентификатор или поле, косвенно кодирующее ответ.

Медицинские модели «предсказывали» болезнь по служебным меткам снимка (название аппарата онкоцентра), а не по самому снимку — классическая утечка через посторонний признак.

Определения
Утечка данных (leakage)
в обучение попадает информация, недоступная в реальный момент предсказания (из будущего или из ответа).
По-простому: в обучение просочилось то, чего в момент предсказания ещё не будет.
Признак из будущего
переменная, которая становится известна только ПОСЛЕ предсказываемого события.
По-простому: переменная, известная только ПОСЛЕ того, что мы предсказываем.
Утечка через предобработку
нормировка/импьютация/отбор признаков на всех данных до разбиения — тест подсматривает в train.
По-простому: обработали данные до разбиения — тест подсмотрел в обучение.
Групповая/временная утечка
один объект в train и test, или случайное перемешивание временных данных вместо хронологического деления.
По-простому: один объект и в train, и в test, или перемешали время вместо хронологии.
Когда метод врёт (допущения)

Train/test и кросс-валидация дают честную оценку, ТОЛЬКО если в тест не просочилась информация из обучения. При утечке даже правильная по форме валидация врёт.

Для временных и сгруппированных данных обычное случайное разбиение само по себе является утечкой — нужны временные/групповые схемы валидации.

Дальше →
Понравились материалы?

Эти материалы делает канал «Кусочек пиццы» — аналитика данных простыми словами: разборы реальных кейсов, метрики, карьера. Подпишитесь, чтобы не потерять.

Подписаться на «Кусочек пиццы»