Построение моделей машинного обучения с возможностью наблюдения в масштабе

Авторы Ражив Прабхакар, Хан Ван, Аниндья Саха.

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

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

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

Использование профилирования данных

В нашем блоге Часть 1 мы говорили о важности профилирования данных.

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

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

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

Принципы проектирования обнаружения аномалий

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

Универсальность

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

Баланс между точностью и скоростью

Нахождение баланса между точностью и скоростью имеет решающее значение, когда речь идет о прогнозировании временных рядов. Чтобы убедиться, что мы используем лучший инструмент для работы, мы оценили несколько популярных библиотек прогнозирования, включая Facebook Prophet, LinkedIn Greykite и Nixtla StatsForecast. После тщательного рассмотрения мы решили использовать StatsForecast для обнаружения аномалий временных рядов из-за его исключительной производительности.

Что касается точности, Statsforecast предоставляет широкий спектр статистических и эконометрических моделей для прогнозирования одномерных временных рядов. С помощью этого пакета мы можем легко выбирать из различных моделей, таких как ARIMA, MSTL, ETS и экспоненциальное сглаживание, которые аккуратно заключены в один и тот же интерфейс вызывающей стороны, что позволяет нам оценивать и генерировать прогнозы на основе нескольких моделей одновременно с помощью всего нескольких строк кода Python. Модели, реализованные в Statsforecast, были написаны с нуля и показали невероятную эффективность в недавних соревнованиях по прогнозированию. StatsForecast также включает в себя несколько экспериментов, проверяющих производительность своих моделей.

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

Масштабируемость

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

Выявление потенциальных аномалий

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

Создание прогнозов

С моделями Statsforecast у нас есть множество вариантов на выбор в зависимости от характеристик данных. Statsforecast также позволяет пользователю запускать несколько моделей одновременно в одном и том же временном ряду без какого-либо заметного дополнительного времени. Это дает большую гибкость для нескольких команд, которые находятся на ранней стадии обнаружения аномалий. Ниже приведен пример выбора AutoARIMA в качестве модели для создания прогнозов.

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

Выделение аномалий

Аномалия – это любые данные, которые отклоняются от доверительного интервала. На приведенном ниже графике мы можем увидеть аномалии, которые мы обнаружили в прогнозах для модели на основе метрики «распределение/среднее». Выделены только те дни, когда были зарегистрированы аномалии.

Изучение первопричины аномалии

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

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

Создание профилей функций

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

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

Влияние смещения функции

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

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

Выделенные красные линии (аномальные часы из данных прогноза) совпадают с всплеском и падением задержки запроса, вызывая аномалии во входном прогнозе.

Мониторинг и оповещение об аномалиях

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

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

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

Приложения

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

Принятие своевременных мер в отношении моделей машинного обучения

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

Мониторинг бизнес-данных/показателей

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

Обнаружение аномалий в реальном времени

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

Благодарности

Особая благодарность Шираз Заман и Михир Матхур за техническую поддержку и поддержку управления продуктом в этой работе.

Как всегда, Lyft набирает сотрудников! Если вы увлечены разработкой современных систем, присоединяйтесь к нашей команде.