Обнаружение дрейфа данных с помощью машинного обучения

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

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

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

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

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

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

Типы дрейфа данных и как их обнаружить

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

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

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

Ковариатный дрейф

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

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

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

Вы начинаете с двух наборов данных за периоды, которые вы хотите сравнить, без метки, потому что мы рассматриваем только функции в дрейфе ковариации. Вы берете образец обоих наборов данных. Самый простой способ — взять выборки одинакового размера (или нужно подкорректировать метрику оценки). Вы добавляете целевую переменную, 0 для старых данных и 1 для новых данных. Вы объединяете наборы данных и создаете обучающие и тестовые наборы. Затем вы обучаете простой классификатор на наборе поездов и оцениваете модель на тесте. Если фи-коэффициент равен 0,2 и выше, модель может найти как минимум слабую связь между множествами и метками[1], и вам придется справляться с дрейфом. Если фи-коэффициент меньше 0,2, все в порядке, модель не может найти закономерности и дрейфа ковариации нет.

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

Дрейф концепции

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

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

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

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

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

Помимо этого подхода, доступны и другие методы, такие как ADWIN, EDDM и Page-Hinkley. Scikit-multiflow имеет несколько приятных реализаций.

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

Дрейф априорной вероятности

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

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

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

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

Код ниже — это способ выполнить t-тест в Python:

from scipy.stats import ttest_ind
ttest_ind(y_values_train, y_values_newdata)

Как справиться с дрейфом данных?

После обнаружения, как вы должны обрабатывать дрейф данных? Здесь нет универсального ответа. У вас есть несколько вариантов в зависимости от типа дрейфа и других факторов.

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

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

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

Краткое содержание

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

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

Различные способы обработки дрейфа данных включают переобучение, ремоделирование, удаление дрейфующих функций или повторное взвешивание выборки.

Рекомендации

[1] Юл, Г. У. (1912). JR Statist. Соц., 75, 576–642. (О методах измерения связи между двумя переменными. Первая идентификация фи-коэффициента.)