Как решить проблему дрейфа данных и сэкономить $1 000 000. Кейс Uber

Расскажем о решении Uber, которое помогло ей выявить эту проблему на раннем этапе и сэкономить до 1 млн. долларов.

Источник <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Funsplash.com%2Fphotos%2FUqj6b-0csis%3Futm_source%3Dunsplash%26amp%3Butm_medium%3Dreferral%26amp%3Butm_content%3DcreditShareLink&postId=856392" rel="nofollow noreferrer noopener" target="_blank">Unsplash</a>, автор изображения <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Funsplash.com%2F%40lance_asper&postId=856392" rel="nofollow noreferrer noopener" target="_blank">Lance Asper</a>
Источник Unsplash, автор изображения Lance Asper

Материалы взяты из оригинальной статьи Uber, переведены и переварены аналитиками из компании Spacecode.

Warning! Впереди лонгрид!

Дрейф даных

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

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

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

Подробнее о дрейфе данных можно узнать в этой статье.

Кейс Uber

Uber располагает одной из самых передовых инфраструктур данных и машинного обучения (ML). Платформа Michelangelo использовалась в качестве эталонной архитектуры для многих MLOps-платформ в течение последних нескольких лет.

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

Рассмотрим реальный пример, который сподвигнул команду к разработке полноценного продукта.

Ситуация

Тарифы Uber состоят из различных компонентов, таких как наценки, плата за проезд и т. д. Реакция пассажиров на эти компоненты и коэффициенты конверсии поездок являются критически важными для построения ML моделей тарифов.

Происходили случаи, когда один из критически важных компонентов тарифа "X" отсутствовал в данных по тарифам для 10% сессий в ключевых городах США. Это большие денежные потери.

Причина

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

Как обнаружили

Этот инцидент был обнаружен через 45 дней вручную одним из специалистов по обработке данных.

На что влияет

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

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

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

«Наличие поврежденных данных о тарифах в 30% сессий серьезно влияет на производительность модели, что приводит к снижению инкрементного валового бронирования на 0,23%.
Инцидент, в результате которого данные о тарифах были повреждены в 10% сессий в течение 45 дней, приведет к потере $1 000 000 дохода»

Авторы технического блога Uber
Основные категории причин дрейфа данных (источник <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fwww.uber.com%2Fen-NL%2Fblog%2Fd3-an-automated-system-to-detect-data-drifts%2F&postId=856392" rel="nofollow noreferrer noopener" target="_blank">Uber</a>)
Основные категории причин дрейфа данных (источник Uber)

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

Валерий Лобанов
Руководитель ИИ-разработок в Spacecode

Осознание необходимости создания надежной автоматизированной системы, способной эффективно измерять и контролировать качество данных на уровне столбцов в БД послужило целью создания системы D3 (Dataset Drift Detector).

Внутри D3

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

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

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

Об архитектуре

Архитектура D3 включает в себя несколько систем, управляемых платформой данных Uber, которые играют важнейшую роль в поддержании качества данных. Вот ключевые системы:

  • Databook: Внутренний портал, позволяющий исследовать наборы данных и наблюдать за историей, метриками, тестами и другим.
  • UDQ (Unified Data Quality): Централизованная системой, отвечающей за определение, выполнение и поддержку тестов качества данных.
  • Michelangelo: ML платформа Uber, позволяющая в реальном времени развертывать ML модели.
Высокоуровневая схема платформы D3 (источник <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fwww.uber.com%2Fen-NL%2Fblog%2Fd3-an-automated-system-to-detect-data-drifts%2F&postId=856392" rel="nofollow noreferrer noopener" target="_blank">Uber</a>)
Высокоуровневая схема платформы D3 (источник Uber)

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

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

Модуль обнаружения аномалий в Uber основан на алгоритмах ML и статистики. Алгоритмы ARIMA и Prophet помогают работать с потоком данных как временными рядами для отслеживания изменений их свойств с течением времени. Интеграция моделей в D3 выполнена по принципу «plug and play».

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

Схема детектора аномалий (источник <a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Fwww.uber.com%2Fen-NL%2Fblog%2Fd3-an-automated-system-to-detect-data-drifts%2F&postId=856392" rel="nofollow noreferrer noopener" target="_blank">Uber</a>)
Схема детектора аномалий (источник Uber)

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

Валерий Лобанов

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

Оповещения

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

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

Существующие трудности и дальнейшие планы

На текущий момент авторы выделяют следующие проблемы:

  • Сложность масштабирования: в среднем для каждого из 1000 наборов данных с 50 столбцами, у которых как минимум 1 измерение и 1 агрегатор, настраивается ~2 мониторинга, что в итоге дает более 100 000 мониторингов. Это приводит к высокой загрузке ресурсов, дублировании проверок и трудоемкому ручному процессу подключения
  • Частые повторные перерасчеты статистик, что ведет к неэффективности использования вычислительных ресурсов.

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

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

Заключение

Инцидент с данными о тарифах, о котором говорилось в начале, был выявлен вручную через 45 дней. После запуска D3 специалисты компании проконтролировали более 300 наборов данных. Время обнаружения инцидентов с данными значительно сократилось — более чем в 20 раз, в среднем до 2 дней. Было обнаружено более 6 проблем на наборах данных маркетплейс/тарифы с точностью более 95%.

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

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

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

66
1 комментарий

Спасибо, как раз искал, не только наши косячат, у нас такое же было в драйве