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

Вы можете исправить такие проблемы, как недообучение или переоснащение модели, поскольку доступны внешние сигналы [необычно низкая точность проверки/тестирования]. Но в случае утечки данных явных сигналов нет. Утечка данных неуловима, поскольку она дает ложное представление о том, что модель работает нормально, когда реальность совершенно иная. Вы понимаете проблему, когда модель находится в производстве и не работает на реальных данных. Слишком поздно!

Основные ошибки:

  • Отсутствие отдельного тестового набора — проверочного набора недостаточно для оценки производительности модели. Поскольку вы настраиваете свою модель на данных проверки, конфигурация обучения и гиперпараметры модели настроены так, чтобы хорошо работать с этим набором данных. Перед развертыванием модели необходимо явно проверить производительность набора тестовых данных.
  • Нормализация всего набора данных без его предварительного разделения. Выполнение методов кодирования объектов, таких как целевое кодирование, для всего набора данных.
  • Использование функций, которые не будут доступны в реальном наборе данных во время прогнозирования. Обычно это происходит, когда вы используете в качестве входных данных функцию, которая постзависима от целевой переменной. Глупый пример: вы прогнозируете цену продажи автомобиля, но используете такую ​​функцию, как стоимость страховки автомобиля, которая обычно появляется после покупки автомобиля. [таким образом сильно коррелирует с продажной ценой автомобиля]

Как смягчить это:

  • Разделите набор данных на тестовые, проверочные и обучающие наборы перед разработкой каких-либо функций.
  • Тщательно продумайте эффективный способ разделения набора данных, чтобы он отражал сценарий реального мира (например, используйте временные разбиения для данных временных рядов, для несбалансированных данных стратифицируйте по отношению к целевой переменной..)
  • Явно проверьте избыточность данных. [Вам не нужны одни и те же точки данных как в данных обучения, так и в данных проверки]
  • Выполняйте проектирование функций на основе данных проверки и тестирования только на основе функций данных поезда.

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

mean = train_data.mean(axis=0)
train_data -= mean
std = train_data.std(axis=0)
train_data /= std
test_data -= mean
test_data /= std

Использованная литература:

  1. https://www.goodreads.com/book/show/33986067-deep-learning-with-python