Утечка данных в машинном обучении

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

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

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

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

Утечку данных следует рассматривать как сложное, многоаспектное явление. Можно выделить несколько ее типов:

  • утечка признаков;
  • целевые утечки;
  • утечка обучающего/тестового множества.

Утечка признаков

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

Известно, что жизненный цикл любой ML-модели включает как минимум два этапа: обучение (training) и предсказание (prediction). В процессе обучения выполняется настройка параметров модели с использованием обучающего множества по определенному алгоритму. На этапе предсказания модель формирует (предсказывает) значения целевой переменной для новых наблюдений, которые не использовались в процессе обучения.

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

Утечку признаков можно проиллюстрировать с помощью следующего рисунка.

Утечка признаков

Пусть обучающий набор данных содержит пять входных переменных x_1,x_2,...,x_5 и одну целевую Y . После окончания этапа обучения модель должна «научиться» с некоторой приемлемой точностью реализовывать функцию

Y=f(x_1,x_2,x_3,x_4,x_5).

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

Ожидаемым результатом утечки будет снижение точности предсказания модели на практических данных относительно точности предсказания на обучающих и тестовых (где «утекшая» переменная присутствует). Причины данного явления интуитивно понятны: при предсказании используется меньше информации, чем при обучении.

Целевые утечки

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

Тривиальный случай — включение целевой переменной в обучающий набор в качестве входного признака. При этом получается, что функция, которую модель должна «научиться» воспроизводить, явно задана на обучающей выборке и не будет доступна вне ее. Это все равно, что делать выводы типа «в дождливые дни идет дождь». Такую функцию часто называют «give-away function», от англ. give-away — непреднамеренное раскрытие тайны.

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

Обозначим X как входной вектор, а Y — выходной. Тогда обучающий пример можно представить в виде кортежа:

⟨X(x_1,x_2,...,x_n),Y(y_1,y_2,...,y_m)⟩,

где x_i и y_j — конкретные значения входных и целевых признаков для данного примера, n и m — количества входных и выходных признаков соответственно.

Для простоты допустим, что в модели единственная выходная переменная (m=1). Тогда при наличии утечки целевого признака в набор входных обучающий пример примет вид:

⟨X(x_1,x_2,...,x_n,y),Y(y)⟩.

Поясним это с помощью рисунка.

Целевая утечка

Целевая переменная y в процессе обучения модели должна использоваться только для вычисления выходной ошибки E=y−y', где y' — фактический выход модели для данного примера. Однако, как показано на рисунке, целевая переменная попадает так же и в число входных переменных, в чем и заключается ее утечка.

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

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

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

Утечка обучающего/тестового множества

В англоязычном варианте данный вид утечки обозначается как train-test contamination — TTC. Он связан с предобработкой данных, а именно с нормализацией, масштабированием, сглаживанием, квантованием, подавлением выбросов и другими методами, которые приводят к изменению значений данных.

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

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

TTC-утечка

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

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

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

Утечка тестовых данных в обучающие

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

Методы предотвращения утечки данных

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

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

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

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

  1. Не использовать при обучении модели переменные, которые потенциально могут оказаться недоступными в процессе ее использования. Недостатки подхода очевидны: мы изначально получим худшую модель, чем могли бы построить, поскольку сознательно отказываемся от части информации, используемой в процессе обучения.
  2. Использовать все доступные переменные, в том числе и те, которые могут оказаться подвержены утечке, построив лучшую модель. Затем, если утечка произойдет, принять меры к организации сбора «утекших» данных. Недостатками подхода является то, что издержки на сбор данных могут превысить выгоду от их использования, а также то, что такие данные могут оказаться в принципе недоступными или несуществующими. Тривиальным примером такой ситуации является использование целевой переменной в качестве входной при обучении с учителем. Очевидно, что значения целевой переменной в режиме предсказания в принципе неизвестны. Другой пример из медицины: если в модели используются данные, собранные по выборке ранее наблюдаемых пациентов, и среди них есть температура, то новые пациенты просто могут оказаться недоступными для измерения температуры.
  3. Восстановить «утекшие» данные на основе доступных в обучающей выборке. Например, при предсказании заменять недостающее значение в новом наблюдении на искусственно сгенерированное из распределения ранее известных наблюдений. Т.е. «утекшее» значение можно рассматривать как пропущенное и восстанавливать его одним из существующих методов. Однако, здесь есть опасность, что со временем распределение данных изменится (скажем, уровень дохода дрейфует вверх или вниз), в результате вместо пропуска мы получим неправдоподобное значение.
  4. Присвоить признакам и примерам специальные метки, которые будут указывать на возможность их утечки. После этого «негерметичные» признаки можно исключить из рассмотрения или относиться к их использованию в процессе обучения с осторожностью.
  5. Рассматривать утечку данных как неизбежное зло и смириться с ней, если последствия не наносят существенного ущерба.

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

 

Другие материалы по теме:

Low-code съедает рынок разработки

5 преимуществ low-code подхода к аналитике

Орешков Вячеслав
Рязанский государственный радиотехнический университет, Доцент кафедры САПР ВС

Смотрите также