Утечка данных — это использование Моделью (Model) Машинного обучения (ML) данных извне. Эта дополнительная информация может позволить модели узнать что-то, чего она в противном случае не знала бы, и, в свою очередь, сделать недействительной предполагаемую производительность создаваемого режима.
Утечка данных — большая проблема при разработке прогностических моделей. Целью прогнозного моделирования является разработка модели, которая делает точные прогнозы на основе новых данных, недоступных во время обучения. Это трудная проблема. Это сложно, потому что мы не можем оценить модель на чем-то, чего у нас нет.
Следовательно, мы должны оценить производительность модели на недоступных данных, обучив ее только на имеющихся.
Этот принцип лежит в основе Кросс-валидации (Cross Validation), или перекрастной проверки, и более сложных методов, которые пытаются уменьшить Дисперсию (Variance).
Утечка данных может привести к созданию чрезмерно оптимистичных, если не полностью неверных прогнозных моделей.
В компьютерной безопасности есть тема, называемая утечкой данных и предотвращением потери данных, которая не относится к одноименному понятию в ML.
Утечка данных — это серьезная проблема как минимум по трем причинам:
- Если вы проводите соревнование по Машинному обучению. Модели будут использовать неточные данные, и обобщать будут хуже.
- Когда вы предоставляете данные: отмена Анонимизации (Anonymization) и Обфускации (Obfuscation) может привести к неожиданному нарушению конфиденциальности.
- Когда вы разрабатываете свои собственные прогностические модели. Возможно, вы создаете чрезмерно оптимистичные модели, которые практически бесполезны и не могут быть использованы в производстве.
Как специалистов по машинному обучению, нас в первую очередь интересует последний случай.
Есть ли у моей модели утечка данных?
Простой способ узнать, что у вас есть утечка данных, — это достичь производительности, которая кажется слишком хорошей, чтобы быть правдой. Например, вы можете предсказывать лотерейные номера или выбирать акции с высокой точностью.
Утечка – больше проблема со сложными наборами данных, например:
- Наборы данных временных рядов при создании обучающих и тестовых наборов могут быть трудными.
- Аналоговые данные, такие как звук и изображения, где сэмплы хранятся в отдельных файлах, имеющих размер и временные метки.
Методы минимизации утечки при построении моделей
Два хороших метода, которые вы можете использовать для минимизации утечки данных при разработке прогностических моделей, заключаются в следующем:
- Выполните подготовку данных в рамках кросс-валидации
- Придержите проверочный набор данных для окончательной проверки работоспособности разработанных вами моделей
Как правило, рекомендуется использовать оба этих метода.
Подготовка данных в рамках перекрестной проверки
Эффект заключается в Переобучении (Overfitting) Тренировочных данных (Train Data) и чрезмерно оптимистичной оценке производительности ваших моделей на неизвестных данных.
Например, если вы подвергаете весь набор Стандартизации (Standartization) или Нормализации (Normalization), а затем оцените производительность своей модели с помощью перекрестной проверки, вы "совершили грех" утечки данных.
В процессе масштабирования данных было известно полное распределение данных в обучающем наборе данных при расчете коэффициентов масштабирования, таких как Минимум (Minimum) и Максимум (Maximum) или Cреднее значение (Average) и Стандартное отклонение (Standard Deviation). Это знание отразилось на масштабированных данныхи использовано при перекрестной проверке.
"Герметичная" оценка Алгоритмов (Algorithm) Машинного обучения в этой ситуации будет вычислять параметры для масштабирования данных на каждой стадии кросс-валидации и использовать эти параметры для тестирования в каждом цикле.
Реальность такова, что как Дата-сайентист (Data Scientist) вы рискуете создать ситуацию утечки данных в любое время, когда готовите, очищаете данные, заполняете Пропуски (Omission), удаляете Выбросы (Outlier) и т. д. Вы можете искажать данные в процессе их подготовки до такой степени, что создадите модель, которая хорошо работает на вашем «чистом» наборе данных, но будет совершенно непотребной в реальной ситуации.
В более общем плане, подготовка данных без утечек должна выполняться на каждом этапе цикла перекрестной проверки.
Вы можете ослабить это ограничение для некоторых проблем, например, если можете уверенно оценить распределение ваших данных, потому что у вас есть некоторые знания в предметной области.
Однако в целом хорошей идеей является повторная подготовка данных в рамках перекрестной проверки, включая выбор Признака (Feature), удаление выбросов, Кодирование (Encoding), стандартизацию, нормализацию, Понижение размерности (Dimensionality Reduction) и многое другое.
"Если вы выполняете выбор функций для всех данных, а затем выполняете перекрестную проверку, то тестовые данные в каждой части процедуры перекрестной проверки также использовались для выбора функций, и это то, что искажает анализ производительности".
— Дикран Марсупиал (Dikran Marsupial)
Разделение набора данных для кросс-валидации
Другой, возможно, более простой подход — разделить Датасет (Dataset) на тренировочные и Валидационные данные (Validation Data).
После того, как вы завершили процесс моделирования и фактически создали окончательную модель, оцените ее с помощью валидационных данных.
Это может дать вам проверку работоспособности, чтобы увидеть, не была ли ваша оценка производительности чрезмерно оптимистичной и не случилась ли утечка.
5 советов по борьбе с утечкой данных
- Временная отсечка. Удалите все данные непосредственно перед интересующим событием, сосредоточившись на самом событии, а не на времени, когда произошло наблюдение.
- Удалить "протекающие" переменные. Оцените переменные, такие как номера учетных записей и идентификаторы и т.п., чтобы увидеть, являются ли эти переменные "негерметичными", и если да, удалите их. Если вы подозреваете, что переменная "негерметична", рассмотрите возможность ее удаления.
- Используйте Пайплайны (Pipeline). Интенсивно используйте конвейерные архитектуры, которые позволяют выполнять последовательность шагов подготовки данных в рамках перекрестной проверки, например пакет Caret в R и Pipelines в Scikit-learn.
- Используйте валидационные данные. Придержите проверочный набор данных в качестве окончательной проверки работоспособности вашей модели перед ее использованием.
Автор оригинальной статьи: Jason Brownlee
Поддержите нас, поделившись статьей в социальных сетях и подписавшись на канал. И попробуйте курсы на Udemy.