Утечка данных в Machine learning: как обнаружить и избежать ее

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

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

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

  • Целевая переменная: что пытается предсказать модель
  •  Фичи (функции): данные, используемые моделью для прогнозирования целевой переменной

Примеры утечки данных

Очевидные случаи

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

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

Эти два случая маловероятны, потому что их легко обнаружить. Более опасные причины - те, которые могут проникнуть "тайком".

Функции Giveaway

Функции Giveaway - это функции, которые раскрывают информацию о целевой переменной и не будут доступны после развертывания модели.

  • Пример. Предположим, мы строим модель для прогнозирования определенного состояния здоровья. Функция, указывающая, была ли у пациента операция, связанная с этим заболеванием, вызывает утечку данных и никогда не должна включаться в данные обучения. Указание на хирургическое вмешательство в высокой степени предсказывает состояние здоровья и, вероятно, эта информация будет доступна не во всех случаях. Если мы уже знаем, что пациент перенес операцию, что могло сказаться на состояние здоровья, нам может даже не понадобиться прогнозирующая модель для начала.
  • Пример. Рассмотрим модель, которая прогнозирует, останется ли пользователь на сайте. Включение функций, предоставляющих информацию о будущих посещениях, приведет к утечке данных. Мы должны использовать только функции текущего сеанса, потому что информация о будущих сеансах обычно не доступна после развертывания модели.

Утечка во время предварительной обработки

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

  • Нахождение параметров для нормализации или масштабирования;
  • Мин/Макс значения функции;
  • Распределение переменной функции для оценки пропущенных значений;
  • Удаление выбросов.

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

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

Как обнаружить и избежать утечки данных

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

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

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

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

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

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

Заключение

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

Источник

Поделиться записью
Вверх