Утечка данных происходит, когда вы предоставляете своей модели часть информации о целевой переменной, которая недоступна в реальном сценарии. Это затрудняет обобщение модели реальных данных.
Вы можете исправить такие проблемы, как недообучение или переоснащение модели, поскольку доступны внешние сигналы [необычно низкая точность проверки/тестирования]. Но в случае утечки данных явных сигналов нет. Утечка данных неуловима, поскольку она дает ложное представление о том, что модель работает нормально, когда реальность совершенно иная. Вы понимаете проблему, когда модель находится в производстве и не работает на реальных данных. Слишком поздно!
Основные ошибки:
- Отсутствие отдельного тестового набора — проверочного набора недостаточно для оценки производительности модели. Поскольку вы настраиваете свою модель на данных проверки, конфигурация обучения и гиперпараметры модели настроены так, чтобы хорошо работать с этим набором данных. Перед развертыванием модели необходимо явно проверить производительность набора тестовых данных.
- Нормализация всего набора данных без его предварительного разделения. Выполнение методов кодирования объектов, таких как целевое кодирование, для всего набора данных.
- Использование функций, которые не будут доступны в реальном наборе данных во время прогнозирования. Обычно это происходит, когда вы используете в качестве входных данных функцию, которая постзависима от целевой переменной. Глупый пример: вы прогнозируете цену продажи автомобиля, но используете такую функцию, как стоимость страховки автомобиля, которая обычно появляется после покупки автомобиля. [таким образом сильно коррелирует с продажной ценой автомобиля]
Как смягчить это:
- Разделите набор данных на тестовые, проверочные и обучающие наборы перед разработкой каких-либо функций.
- Тщательно продумайте эффективный способ разделения набора данных, чтобы он отражал сценарий реального мира (например, используйте временные разбиения для данных временных рядов, для несбалансированных данных стратифицируйте по отношению к целевой переменной..)
- Явно проверьте избыточность данных. [Вам не нужны одни и те же точки данных как в данных обучения, так и в данных проверки]
- Выполняйте проектирование функций на основе данных проверки и тестирования только на основе функций данных поезда.
например: при нормализации наборов данных используйте среднее значение и стандартное отклонение данных поезда только для каждого из наборов данных.
mean = train_data.mean(axis=0) train_data -= mean std = train_data.std(axis=0) train_data /= std test_data -= mean test_data /= std