Утечка данных

Материал из MachineLearning.

Версия от 05:14, 15 июля 2026; Roman Iuкharev (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Статья написана с использованием LLM ChatGPT 5.6 Sol - xhigh и проверена участником Юхарев Роман Андреевич 7:30 15 июля 2026.


Содержание

Утечка данных (англ. data leakage) в машинном обучении — использование при построении модели информации, которая не была бы доступна в момент реального предсказания или должна была оставаться независимой при оценке качества. Утечка создаёт искусственную связь между обучением и проверкой, поэтому измеренная метрика может существенно завышать ожидаемое качество на новых данных.[1]

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

Формальная постановка

Пусть D_{\mathrm{train}} — обучающая выборка, D_{\mathrm{test}} — независимая тестовая выборка, а алгоритм обучения строит модель

\hat f=\mathcal A(D_{\mathrm{train}}).

Тестовый риск оценивается как

\widehat R_{\mathrm{test}}=\frac{1}{|D_{\mathrm{test}}|}\sum_{(x_i,y_i)\in D_{\mathrm{test}}}\ell(\hat f(x_i),y_i).

Интерпретация этой величины как качества на новых объектах требует, чтобы тестовые данные не влияли на построение \hat f, выбор признаков, гиперпараметров, порогов и правил предобработки. Если преобразование признаков имеет вид

z=g(x;\hat\eta),

то параметры \hat\eta — например средние, дисперсии, словарь, компоненты PCA или правила заполнения пропусков — должны оцениваться только по разрешённой обучающей части. Использование

\hat\eta=h(D_{\mathrm{train}}\cup D_{\mathrm{test}})

делает представление обучающих объектов зависимым от тестовой выборки и нарушает независимость оценки.

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

Основные виды утечки

Вид Канал утечки Пример
Утечка целевой переменной Признак прямо или косвенно кодирует ответ В прогнозе госпитализации используется код процедуры, назначенной после госпитализации
Контаминация разбиений Один объект или его близкий дубликат встречается в разных частях Кадры одного видео случайно распределены между обучением и тестом
Утечка предобработки Преобразование обучается до разбиения или на всех фолдах сразу Отбор признаков по полной выборке перед кросс-валидацией
Утечка при выборе модели Проверочная часть многократно используется для настройки Гиперпараметры выбираются по тому же тесту, которым затем отчитываются
Временная утечка При прогнозировании доступна информация из будущего Центрированное скользящее среднее включает наблюдения после момента прогноза
Групповая утечка Связанные объекты одной сущности попадают в разные части Записи одного пациента присутствуют и в обучении, и в тесте
Контаминация языковой модели Тестовые задания или их решения входят в предобучение, дообучение либо данные предпочтений Публичный бенчмарк с ответами скопирован в веб-корпус

Границы между видами не всегда однозначны. Например, дубликат тестового документа в обучающем корпусе одновременно является контаминацией разбиений и каналом запоминания ответа.

Утечка целевой переменной

Утечка цели (target leakage) возникает, когда признак содержит сведения о y, недоступные в момент предсказания. Наиболее очевидный случай — сама целевая переменная или её детерминированное преобразование присутствует среди признаков. Чаще утечка скрывается в последовательности бизнес-процесса:

  • признак регистрируется после события, которое требуется предсказать;
  • агрегат рассчитан с использованием всего периода, включая будущее;
  • идентификатор категории присваивается на основании результата;
  • пропуск или код состояния появляется только после наступления цели;
  • экспертное решение, принятое с учётом исхода, используется как вход модели.

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

Высокое качество само по себе не доказывает утечку, но неожиданно сильный одиночный признак, почти нулевая ошибка или резкое падение качества после переноса по времени являются поводом для аудита.

Разбиение данных и дубликаты

Случайное разбиение корректно только тогда, когда наблюдения достаточно независимы и одинаково распределены относительно будущего применения. Если несколько строк относятся к одной сущности, разбиение выполняют по группам:

  • все визиты одного пациента помещают в одну часть;
  • все кадры одного ролика или снимки одного объекта не разделяют;
  • варианты одного текста, аугментированные изображения и синтетические копии наследуют часть исходного объекта;
  • данные одного пользователя, устройства, магазина или географической зоны группируют, если обобщение на новые группы является целью.

Точные дубликаты находят хешированием нормализованного содержимого. Для почти одинаковых объектов применяют перцептивные хеши изображений, сравнение n-грамм, MinHash, расстояния между эмбеддингами и предметно-ориентированные ключи. Дедупликацию желательно выполнять до окончательного разбиения, сохраняя происхождение производных объектов.

Важно согласовать разбиение с постановкой. Если модель будет предсказывать новые события для уже известных пользователей, допустима одна схема; если требуется работа с полностью новыми пользователями — нужна групповая проверка. Один и тот же набор может давать разные честные протоколы для разных сценариев применения.

Предобработка и отбор признаков

К обучаемой предобработке относятся стандартизация, заполнение пропусков, кодирование категорий, построение словаря, отбор признаков, понижение размерности, балансировка классов и обучение представлений. Каждая такая операция является частью алгоритма и должна обучаться только на тренировочной части текущего разбиения.

Неправильная последовательность:

оценить преобразование на всех данных
преобразовать все данные
выполнить кросс-валидацию модели

Корректная последовательность внутри каждого фолда:

для каждого разбиения train_fold, validation_fold:
    оценить преобразование только на train_fold
    преобразовать train_fold и validation_fold
    обучить модель на преобразованном train_fold
    оценить на преобразованном validation_fold

Особенно сильное смещение возникает при отборе признаков по связи с целью до кросс-валидации. В исследовании экспрессии генов было показано, что отбор на всей выборке, а затем кросс-валидация уже выбранных признаков приводит к оптимистической оценке; отбор должен повторяться внутри каждого обучающего фолда.[1]

Практический способ сохранить порядок операций — объединить преобразования и модель в единый конвейер, метод fit которого вызывается заново внутри каждого фолда. Документация scikit-learn отдельно рекомендует Pipeline как средство предотвращения утечки тестовых данных в обучаемые преобразования.[1]

Кросс-валидация и выбор модели

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

Для независимой оценки применяют вложенную кросс-валидацию:

  1. внешний цикл откладывает фолд для оценки всей процедуры;
  2. внутренний цикл на оставшихся данных выбирает гиперпараметры и выполняет предобработку;
  3. выбранная внутренняя процедура переобучается на обучающей части внешнего фолда;
  4. внешний фолд используется один раз для оценки;
  5. результаты усредняются по внешним фолдам.

Моделирование и оценивание нельзя считать разделёнными, если один и тот же внешний фолд используется для исправления признаков, выбора случайного зерна или ручного перебора вариантов. Исследования показывают, что кросс-валидационная оценка после выбора модели по тем же фолдам может иметь существенное смещение; внутренний и внешний уровни должны быть разделены.[1][1]

После окончательного выбора модели отдельная тестовая выборка открывается один раз. Если результат теста повлиял на следующую версию процедуры, этот набор фактически стал валидационным и для новой итоговой оценки требуется другой независимый тест.

Временные ряды

В задачах прогнозирования случайное перемешивание часто позволяет модели обучаться на будущем и проверяться на прошлом. Корректная схема сохраняет временной порядок: обучающий интервал заканчивается раньше проверочного. Распространены:

  • фиксированная граница по времени;
  • расширяющееся окно, в котором обучающая история накапливается;
  • скользящее окно фиксированной длины;
  • последовательная проверка с несколькими точками происхождения прогноза.

Для k-го разбиения расширяющегося окна можно записать

D_{\mathrm{train}}^{(k)}=\{(x_t,y_t):t\leq \tau_k\},\qquad D_{\mathrm{test}}^{(k)}=\{(x_t,y_t):\tau_k+g<t\leq \tau_k+g+h\},

где h — горизонт проверочного блока, а g — зазор между обучением и проверкой. Зазор нужен, если признаки, метки или окна наблюдений перекрываются около границы. Реализация TimeSeriesSplit в scikit-learn использует последовательные обучающие префиксы и поддерживает параметр gap.[1]

Допустимость обычной кросс-валидации зависит от структуры временного процесса и задачи; её нельзя решать только по наличию столбца времени. Сравнение методов для прогнозирования временных рядов показывает важность специального анализа зависимости и схемы оценки.[1]

Типичные источники временной утечки:

  • центрированные окна и сглаживание, использующие будущие значения;
  • нормализация по всему временному диапазону;
  • признаки «время до события», рассчитанные после события;
  • поздно исправленные справочники и статусы, применённые задним числом;
  • случайное распределение соседних, почти одинаковых моментов между частями;
  • выбор модели по периоду, объявленному итоговым тестом.

Контаминация больших языковых моделей

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

Различают несколько уровней:

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

Проблема особенно сложна для закрытых моделей, когда обучающий корпус и веса недоступны. Предложены чёрноящичные статистические тесты, использующие, например, предпочтение канонического порядка примеров перед случайными перестановками, а также задания на распознавание исходной формулировки среди возмущённых вариантов.[1][1]

Такие тесты дают свидетельства, а не универсальное доказательство отсутствия контаминации. Неспособность обнаружить точное совпадение не исключает парафразы, перевод, производные решения или обучение на результатах предыдущих оценок.

Снижение риска контаминации LLM

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

Примером динамического подхода является LiveBench: задания обновляются из недавних источников и оцениваются по объективным ответам, чтобы ограничить риск попадания теста в обучение последующих моделей.[1]

Обнаружение утечки

Ни один тест не обнаруживает все виды утечки. Аудит сочетает несколько подходов:

Проверка происхождения данных

Для каждого признака фиксируют источник, время появления, правила исправления и доступность при предсказании. Полезен вопрос: «Можно ли вычислить это значение в производственной системе в тот момент, когда модель должна ответить?»

Проверка конвейера

Изучают фактический порядок вызовов fit и transform, границы фолдов, кэширование, сохранённые словари и промежуточные таблицы. Недостаточно, чтобы основной оцениватель обучался только на train: это должно выполняться для всех обучаемых компонентов.

Сравнение разбиений

Сравнивают случайное, групповое и временное разбиения. Резкое ухудшение на более строгой схеме не доказывает ошибку, но показывает, что исходная метрика опиралась на сходство объектов или периодов, которое может отсутствовать в целевом режиме.

Поиск дубликатов и аномально сильных признаков

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

Предотвращение

  1. Сформулировать момент и объект предсказания до построения признаков.
  2. Зарегистрировать единицу разбиения: строка, пользователь, пациент, документ, устройство или период.
  3. Сначала зафиксировать независимый тест, затем выполнять исследование только на train/validation.
  4. Поместить всю обучаемую предобработку внутрь конвейера и фолдов.
  5. Использовать вложенную кросс-валидацию, если одновременно выбирается модель и оценивается её качество.
  6. Для временных данных соблюдать порядок, горизонт прогноза и необходимый зазор.
  7. Дедуплицировать исходные и производные объекты между частями.
  8. Версионировать датасет, признаки, код разбиения и временные срезы.
  9. Ограничить число обращений к итоговому тесту; после адаптации к нему считать его валидационным.
  10. Для LLM проверять пересечение корпусов и тестов несколькими методами и документировать ограничения аудита.

Типичные ошибки интерпретации

  • «Преобразование не использует метки, значит утечки нет». Даже статистика признаков теста делает процедуру зависимой от тестового распределения.
  • «Кросс-валидация автоматически защищает от утечки». Она защищает только операции, повторяемые внутри каждого фолда.
  • «Достаточно удалить точные дубликаты». Парафразы, кадры одного видео и производные объекты могут оставаться почти идентичными.
  • «Временная метка гарантирует корректное разбиение». Будущее может проникать через агрегаты, исправленные справочники и перекрывающиеся окна.
  • «Закрытая модель нельзя проверить». Полная проверка невозможна, но существуют чёрноящичные статистические тесты и временные сравнения; их отрицательный результат не доказывает чистоту.
  • «После обнаружения утечки достаточно вычесть несколько пунктов метрики». Влияние зависит от примеров и модели; обычно требуется заново построить разбиение и повторить весь выбор модели.

См. также

Примечания

Литература

  • Kaufman S., Rosset S., Perlich C., Stitelman O. Leakage in Data Mining: Formulation, Detection, and Avoidance // ACM Transactions on Knowledge Discovery from Data. 2012. Vol. 6, No. 4. Article 15.
  • Ambroise C., McLachlan G. J. Selection Bias in Gene Extraction on the Basis of Microarray Gene-expression Data // Proceedings of the National Academy of Sciences. 2002. Vol. 99, No. 10. P. 6562–6566.
  • Varma S., Simon R. Bias in Error Estimation When Using Cross-validation for Model Selection // BMC Bioinformatics. 2006. Vol. 7. Article 91.
  • Cawley G. C., Talbot N. L. C. On Over-fitting in Model Selection and Subsequent Selection Bias in Performance Evaluation // Journal of Machine Learning Research. 2010. Vol. 11. P. 2079–2107.
  • Bergmeir C., Benítez J. M. On the Use of Cross-validation for Time Series Predictor Evaluation // Information Sciences. 2012. Vol. 191. P. 192–213.
  • Oren Y., Meister N., Chatterji N., Ladhak F., Hashimoto T. Proving Test Set Contamination in Black-Box Language Models // International Conference on Learning Representations. 2024.
  • Golchin S., Surdeanu M. Data Contamination Quiz: A Tool to Detect and Estimate Contamination in Large Language Models // Transactions of the Association for Computational Linguistics. 2025.
  • White C. et al. LiveBench: A Challenging, Contamination-Limited LLM Benchmark // International Conference on Learning Representations. 2025.
Личные инструменты