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

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

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

Измерение дрейфа данных: практический пример

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

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

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

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

Для демонстрации дрейфа данных мы явно разделили исходный набор данных на два:

  • Первый содержит все вина с содержанием алкоголя выше 11%, wine_alcohol_above_11 .
  • Второй - это те, у которых уровень алкоголя ниже 11%, wine_alcohol_below_11 .

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

На этом этапе вы, естественно, ожидаете расхождения между оценками. Это почему? Потому что очевидно - как вы увидите в следующем разделе - это нарушает основное предположение IID.

Небольшой обходной путь через статистическое обучение

Рассмотрим классическую задачу обучения с учителем с обучающей выборкой S = {(xᵢ, yᵢ)}, с xᵢ ∈ X и yᵢ ∈ Y, и функцией риска r: YxY → R. Мы хотим изучить прогнозирующую функцию f: X → Y, который не только минимизирует эмпирический риск (на множестве S), но и риск обобщения (на невидимых данных).

В рамках статистического обучения риск обобщения может быть точно оценен на основе эмпирического риска. Эта теорема PAC использует неравенство Хёффдинга, которое опирается на печально известное предположение о независимости и одинаковом распределении (IID).

В этом предположении каждая пара наблюдений (x, y) строится независимо от одного и того же совместного распределения p (X, Y). Интуитивно это означает, что обучающий набор S является разумным протоколом, с помощью которого мы можем получить частичную информацию о базовой истинной функции f.

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

Теперь мы рассмотрим различные сценарии, в которых это предположение не работает и вызывает дрейф данных.

Что такое дрейф данных?

В литературе для описания проблемы смещения данных используется несколько терминов и формулировок, здесь мы используем структуру, представленную Киньонеро Кандела [1].

Это нарушение предположения IID, представленного в первом разделе.

Для причинно-следственной задачи совместное распределение может быть соответствующим образом разложено как: P (x, y) = P (x) P (y | x), таким образом, изменение P (x, y) может происходить из изменения этих двух раздачи. Аналогично для антипричинных задач, где подходящее разложение P (x, y) = P (y) P (x | y).

Прежде чем обсуждать возможные ситуации дрейфа, давайте представим две частые основные причины этого.

Некоторые примеры причин дрейфа данных

Смещение выборки

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

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

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

Нестационарная среда

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

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

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

Вернемся к нашему примеру…

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

Вот вопрос, на который мы хотим ответить:

Изменится ли производительность модели, обученной на моем тренировочном наборе (вина с уровнем алкоголя выше 11%), резко при подсчете баллов для новых бутылок (в которых уровень алкоголя ниже 11%)?

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

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

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

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

Дрейфовая зоология

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

Из набора данных wine_alcohol_above_11 мы случайным образом разделили их на два:

  • Первый, который обучит модель, обозначается cohol_above_11_train, будет далее разделен на наборы для обучения и проверки.
  • Другой для тестирования модели называется cohol_above_11_test.

Мы подбираем модель случайного леса на cohol_above_11_train. Модель получила оценку F1 в 0,709 на удерживающем наборе.

Ситуация 1: без дрейфа

Здесь целевой набор данных - это исходный набор данных wine_alcohol_above_11:

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

При использовании этой модели для оценки набора данных cohol_above_11_test оценка F1 составляет 0,694: когда нет дрейфа в распределении уровня алкоголя между поездом и тестовым набором, похоже, нет дрейфа и с другими функциями, и взаимосвязь, полученная между функциями и целью, сохраняется для тестового набора.

Формально, поскольку ни P (x), ни P (y | x) не изменились, производительность модели на новом наборе данных аналогична.

С помощью обученной модели, приведенной выше, мы более подробно рассмотрим показатель F1 на бочку алкоголя в наборе данных cohol_above_11_test:

Из этой таблицы можно сделать два важных наблюдения:

  • Если в новом невидимом наборе данных много вин с уровнем алкоголя от 10% до 12%, мы должны ожидать, что оценка F1 по этим новым данным ухудшится. Напротив, если будет больше вин от 13% до 14%, производительность будет лучше.
  • До сих пор в этой модели уровень алкоголя составлял от 11% до 14%. Если ему приходится оценивать некоторые вина с уровнем алкоголя за пределами этого диапазона, его производительность непредсказуема - он может либо повыситься, либо (что более вероятно) упасть.

Последнее наблюдение приводит нас ко второй ситуации: дрейф характеристик.

Ситуация 2: дрейф признаков (или ковариативный дрейф)

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

Из-за способа разделения исходного набора данных все вина в этом наборе данных имеют уровень алкоголя за пределами диапазона обучающего набора. При подсчете очков мы получили общий балл F1 0,295, что плохо по сравнению с результатами на этапе обучения. Оценки для каждого бункера приведены ниже:

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

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

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

В нашем конкретном случае переобучение модели может определенно улучшить производительность, так как у модели будет возможность учиться на винах с диапазоном алкоголя за пределами 11% -14%.

Ситуация 3: дрейф концепции

Вначале мы говорили, что необработанные данные уже имеют оценку качества от 0 до 10. Давайте сделаем шаг назад и подумаем, как они получают эту оценку.

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

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

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

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

Ситуация 4: Двойной дрейф

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

Заключение

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

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

Мы рады работать над этой темой для Dataiku DSS - ознакомьтесь с этим плагином Dataiku, чтобы отслеживать дрейф модели в ваших проектах DSS.

Некоторые ссылки

[1] Кионеро-Кандела, Хоакин и др. Сдвиг набора данных в машинном обучении. MIT Press, 2009.

[2] Морено-Торрес, Хосе Г. и др. «Единый взгляд на изменение набора данных в классификации». Распознавание образов 45.1 (2012): 521–530.

[3] Симодаира, Хидетоши. «Улучшение прогнозного вывода при ковариатном сдвиге путем взвешивания функции логарифмического правдоподобия». Журнал статистического планирования и вывода 90.2 (2000): 227–244.

[4] Гао, Цзин и др. «Общая основа для анализа потоков данных с изменяющимися концепциями и искаженным распределением». Материалы сиамской международной конференции по интеллектуальному анализу данных 2007 г.. Общество промышленной и прикладной математики, 2007 г.

[5] Уэбб, Джеффри И. и др. «Характеризуя дрейф концепций». Интеллектуальный анализ данных и обнаружение знаний 30,4 (2016): 964–994.

[6] Гама, Жоао и др. «Обзор адаптации концепции дрейфа». Компьютерные опросы ACM (CSUR) 46,4 (2014): 1–37.