Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
TL;DR
Процессы разработки, развертывания и использования ML-систем во многом определяют успех ведения современного ритейл бизнеса.
Меня зовут Сергей Чекменев, я являюсь Главным аналитиком данных сектора по увеличению ценности клиента. В этой статье поделюсь нашим техническим опытом, расскажу о бизнес-задачах, успешно решаемых в Magnit Tech, проиллюстрирую подходы на одном из MLaaS проектов по таргетированию аудиторий.
На практике таргетирование может стать настоящим АТАСом для покупателей, перегруженных нерелевантными коммуникациями – но только не с нашим сервисом!
Далее расскажу, почему это так и детально поделюсь целями проекта и его технической реализацией от постановки задачи до боевого использования в проде.
Customer Value Management (CVM)
Направление CVM в Magnit Tech занимается конвертацией понимания ценностей клиента в получение как прибыли для компании, так и для создания уникального пользовательского опыта в сфере ритейла для наших покупателей.
Сегодня мы говорим об облачной платформе, задачей которой является монетизация предложений от поставщиков, желающих продвинуть свой бренд на рынке, сформировать узнаваемость бренда и повысить осведомленность целевых аудиторий о ценности предлагаемых товаров.
Платформа монетизации
Бизнес-задача: автоматизация подбора аудиторий
Как правило, поставщик хочет прорекламировать свой товар на заданную аудиторию. Для этого он предоставляет определенное вознаграждение покупателю за выполнение целевого действия (определяется условиями механик – уникальными промо-предложениями) в период действия кампании.
Общий пайплайн работы по проведению промо-кампании может быть визуализирован следующим образом:
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/484/205/021/484205021e00b85196142d04e43819ca.png)
Одним из ключевых элементов пайплайна является поиск наиболее релевантной аудитории на период проведения кампании. И здесь важен компромисс между охватом и точностью для достижения лучшего пользовательского опыта и рекламного эффекта с оптимизацией затрат на коммуникации и вознаграждения.
Поиск аудитории реализован в виде MLaaS-сервиса со следующими функциональными возможностями:
сервис доступен клиентам (бизнес аналитикам, занимающимся подбором аудиторий) в виде веб-интерфейса с любого корпоративного рабочего места
сервис позволяет задавать параметры планируемой промо-кампании, определять целевое действие, даты проведения кампании, условия механик и тп
для каждого клиента из входной аудитории сервис рассчитывает вероятность совершения целевого действия в период проведения кампании
пользование сервисом не предполагает доменных знаний из области ML & DS
сервис должен предоставлять пред рассчитанную оценку качества прогноза по кампаниям
сервис должен логировать параметры проводимых кампаний, их метрики, аудитории и т. п. для дальнейшего пост анализа
сервис должен быть высоко доступным и отказоустойчивым
все расчеты должны происходить в режиме близкому к реальному времени, результаты автоматически выгружаться в корпоративную базу данных
по мере возникновения новых требований к сервису, доработка и продактизация должны происходить в кратчайшие сроки
сам сервис и его UI должны быть написаны на Python для более быстрой разработки и сопровождения силами DS & ML инженеров без привлечения ресурса продуктовых инженеров
сервис должен быть сопряжен с системой программы лояльности
Реализация и использование сервиса решает несколько проблем:
проблему высокой плотности запусков промо-кампаний. Стратегически важно фокусировать ресурс сотрудников на решении бизнес-задач и уходить от технической рутинны сопряженной с временными издержками и ошибками, уменьшать объем внутри командных коммуникаций и согласований при решении типовых задач, автоматизировать процессы и увеличивать скорость подбора аудиторий.
инфраструктурную проблему и проблему доменных знаний. Без данного сервиса процессы подбора аудитории как правило требуют: (i) экспертных знаний (DS/ML) от аналитиков занимающихся подбором аудиторий, (ii) подготовки вычислительных ресурсов в не контролируемой среде разработки (iii) определенного количества ручных манипуляций и согласований.
проблему пост-анализа проведенных промо-кампаний и наблюдаемости пайплайна подбора аудиторий. Использование сервиса позволяет унифицировать сбор метрик, использованных параметров кампаний, контролировать версию используемого кода, проводить быстрый пост анализ и доработку функциональных возможностей сервиса, а также повышать наблюдаемость всего пайплайна подбора аудиторий.
Техническая реализация: Audience TArgeting Service (ATAS)
Технологический стек
Спрос на фреймворки для создания веб интерфейсов на питоне стремительно растет:
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/80d/b1a/376/80db1a376d8a9c0e3a23bc9bf9c1713c.png)
Для разработки UI было решено использовать новый фреймворк от создателей Pydantic - FastUI. FastUI это новый декларативный способ написания красивых и быстрых интерфейсов (используется react under-the-hood) на чистом Python вообще без какого-либо использования html, css и javascript.
FastUI совместим с любым backend фреймворком на Python, такими как Flask и FastApi. Мы использовали FastApi по причине его высокой производительности и совместимости с Pydantic моделями.
Поддержка Pydantic моделей существенно облегчает валидацию и репрезентацию данных, управление пайплайном данных, и написанием бизнес-логики приложения.
Для управления состоянием приложения использовалась Postgres DB и для работы с данными мы используем Greenplum DB. Для решения задачи моделирования применяем CatBoost, инструменты спектрального и семантического анализа временных рядов, сверточные нейронные сети и трансформеры.
Для более быстрой доставки новых версий в прод был настроен CI/CD пайплайн так, чтобы наши пользователи (аналитики данных) могли использовать самые последние доработки по мере итеративного обновления кодовой базы.
Развертка конечного решения происходит на корпоративный K8s кластер в Yandex Cloud, который обеспечивает необходимый объём вычислительных ресурсов и высокую степень доступности сервиса конечным пользователям – аналитикам занимающимся подбором аудиторий. Мониторинг системы осуществляется на стеке Prometheus / Grafana.
Схематично работу сервиса можно проиллюстрировать следующим образом:
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/ff9/00b/ea0/ff900bea0d8eb4367847ac45e52b72dc.png)
Работа с сервисом
Работа пользователей с сервисом происходит посредством веб-интерфейса. Для скоринга аудитории необходимо создать кампанию задав ее параметры и запустить ML-пайплайны сбора данных, обучения моделей и расчета прогноза как это проиллюстрировано на рисунке ниже.
FastApi предоставляет возможность использования background процессов без блокировки основного потока. Это позволяет параллелизировать одновременную работу нескольких пользователей сервиса.
FastApi/FastUI так же поддерживают обновление интерфейса в режиме реального времени посредством Server-Sent-Events out-of-the-box с минимальными затратами на разработку. Это позволяет аналитикам через интерфейс приложения пошагово отслеживать работу пайплайна и оценивать качество отработки каждого из этапов.
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/18a/2a5/6fb/18a2a56fb6ee7e1dbd5ff576eea41d81.png)
FastUI существенно облегчает работу с Pydantic моделями при отображении их в интерфейсе, а также при сборе и валидации данных от пользователя. Все это значимо ускоряет процесс разработки и сопровождения, позволяет больше сфокусироваться на бизнес логике приложения и вести разработку без привлечения frontend инженеров.
Основными источниками данных являются:
данные анкет при регистрации
транзакционные данные покупок, совершенных клиентами по карте лояльности
мобильные данные (поисковые запросы, и тд.)
В качестве способов коммуникации с клиентом используем push и sms уведомления.
Общей задачей моделирования является подбор аудитории склонной к посещению магазинов сети Магнит для покупок из целевых категорий товаров/брэнда в период действия промо-кампании.
Дальше условия механик направлены на целевую аудиторию для:
возвращения клиентов из оттока в категорию/бренд (персональные более выгодные условия покупки на период акции для тех, кто совершал целевые покупки в прошлом, но не совершал последние N-дней)
увеличения трат лояльных к категории/брэнду клиентов (персональные более выгодные условия на период акции при покупке количества товара больше обычного)
Задачей ML подходов в данном случае является определение сегментов клиентов склонных к выполнению условий механик в период проведения кампании. В нашем представлении это клиенты с историей целевых (категория/брэнд) покупок на горизонте определенного количества времени как правило это последние 30-60-90 дней.
Решение этой задачи осложнено рядом факторов:
Сложность воздействия на покупателей в оффлайн продажах. Во-первых, как правило покупатель делает более взвешенный выбор при оффлайн покупках; во-вторых, существует временной лаг от момента коммуникации до совершения физической покупки; в-третьих, от покупателя требуется определенная сосредоточенность в торговом зале оставаться в фокусе, не отвлекаясь на другие предложения.
Схожесть потребительских корзин. Клиенты в основной своей массе делают очень схожий набор покупок и существует определённая сложность в дифференциации клиентов для рекомендации в участии в промо-кампаниях.
Неполнота данных. Покупатель может совершать покупки в других сетях, оплата может происходить без карты лояльности или с чужой картой лояльности, возможны закупки на одну карту лояльности группой людей.
Подбор аудиторий со значительным временным упреждением до даты проведения кампании. Количество клиентов всегда ограничено и существует проблема внутренней конкуренции между смежными командами за использование клиентов в период акции для тестирования гипотез на не пересекающихся сегментах. Поэтому определенную ценность всегда имеет возможность строить прогнозы с как можно с большим упреждением от планируемой даты проведения кампании.
Ограничения на размер входной аудитории. Изначальный размер входной аудитории бывает ограничен тем, что брэнд мало представлен на рынке, или представлен в небольшом количестве торговых локаций, возможны ограничения на типы коммуникаций и т. д.
Данную задачу решаем методом supervised learning (обучение с учителем) с использованием бинарной классификации. Модель обучается на данных о поведении и покупках пользователей за определенный период времени перед началом кампании. Обученная модель используется для расчета вероятности совершения пользователями целевых покупок во время проведения кампании.
Целевой переменной служит бинарный признак, указывающий, совершит ли пользователь целевую покупку в заданных категориях‑брендах во время проведения кампании.
Аудитория для обучения и скоринга подбирается на основе бизнес‑правил применимых ко всей клиентской базе. Обучающий период совпадает по длительности с периодом проведения кампании. Модель обучается на выборке для обучения и валидации и затем используется для построения прогноза.
Визуально постановку ML‑задачи можно проиллюстрировать следующим образом:
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/241/888/102/2418881027998d835b36cb1d9eb5a81d.png)
Решение ML задачи
Применяли несколько подходов для анализа поведения пользователей и рекомендации сегмента, склонного к выполнению условий механик в период проведения кампании.
При выборе решения важным требованием являлось время обучения модели и построения прогноза. Весь ML пайплайн включающий в себя сбор признаков, обучение модели и прогноз должен происходить в режиме близкому к режиму реального времени.
Анализ агрегированных данных
В этом подходе использовали всевозможные агрегированные статистики временных рядов целевых или около-целевых транзакций (такие как энтропия целевых покупок, доля трат на целевые покупки, количество дней с последней целевой покупки и тд), пользовательские атрибуты (такие как пол, возраст, география и тд), пользовательские предпочтения (такие как любимый формат магазина, приверженность к определенным направлениям покупок и ценовым сегментам, и тд.) и влияние внешних факторов (праздничный или будний день, сезонность и тд.).
Для построения модели применяли библиотеку Catboost от Яндекса, которая дает хорошую точность и генерализацию, не требует значительного файн-тюнинга и устойчива к переобучению. Все это очень важно, для сокращения суммарного времени обучения модели в проде по запросу пользователя (аналитика данных) и построения прогноза для входного сегмента покупателей.
Анализ временных рядов
В этом подходе проводили анализ мультимодальных одномерных временных рядов покупок и поведения покупателей в мобильном приложении для дальнейшего подбора аудитории.
Применяли как 1D CNNs к «сырым» входным мультимодальным сигналам, так и 2D CNNs для анализа скейлограмм, полученных непрерывным вейвлет преобразованием (CWT) входных данных.
Примерами одномерных входных сигналов могут быть абсолютные значения трат на целевые/около-целевые бренд-категории товаров, схожесть купленных товаров с целевыми брэнд-категориями, семантическая близость поисковых запросов в мобильном приложении к целевым бренд-категориям в пред-периоде проведения промо-кампании, и тд.
Пример временной последовательности покупок в целевых категориях и соответствующее CWT проиллюстрировано на рисунке ниже. Паттерны временного сигнала декомпозированы на разных шкалах/частотах. Суперпозиция транзакций и их амплитуда формируют специфические частотно-временные образы на CWT плоскости – скейлограмме:
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/cc8/e79/b20/cc8e79b2056f487f4a0159039d195583.png)
Такое представление в виде набора скейлограмм описывающих совокупное (мультиканальное и в нашем случае мультимодальное) поведение клиента в пред-периоде рекламной кампании напрямую подается на вход CNN на этапе обучения и предсказания:
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/c0d/6ea/f8a/c0d6eaf8ad384263eaf5cbfb8be51cb9.png)
Экспериментировали с архитектурами MobileNetV3, VGG-16, ResNet-50, а также с in-house архитектурами.
В ближайших планах попробовать Vision Transformers (ViT) на подходе с мультиканальными данными и провести оценку слияния решений (decision fusion) основанных на разных подходах.
В этой обзорной статье мы поделились нашим техническим опытом, рассказали о бизнес-задачах успешно решаемых в MagnitTech, проиллюстрировали подходы на одном из MLaaS проектов – сервисе подбора целевой аудитории для проведения маркетинговых кампаний в облачной CVM платформе монетизации предложений от поставщиков.
Детально рассказали о целях проекта и его технической реализации от постановки задачи до боевого использования в проде.
Реализация и использование сервиса помогает нам решать несколько подзадач в общей задаче создания лучшего пользовательского опыта и маркетингового эффекта:
проблему высокой плотности запусков промо-кампаний. Стратегически важно фокусировать ресурс сотрудников на решении бизнес-задач и уходить от технической рутинны сопряженной с временными издержками и ошибками, уменьшать объем внутри командных коммуникаций и согласований при решении типовых задач, автоматизировать процессы и увеличивать скорость подбора аудиторий.
инфраструктурную проблему и проблему доменных знаний. Без данного сервиса процессы подбора аудитории как правило требуют: (i) экспертных знаний (DS/ML) от аналитиков занимающихся подбором аудиторий, (ii) подготовки вычислительных ресурсов в не контролируемой среде разработки (iii) определенного количества ручных манипуляций и согласований.
проблему пост анализа проведенных рекламных кампаний и наблюдаемости пайплайна подбора аудиторий. Использование сервиса позволяет унифицировать сбор метрик, использованных параметров кампаний, контролировать версию используемого кода, проводить быстрый пост анализ и доработку функциональных возможностей сервиса, а также повышать наблюдаемость всего пайплайна подбора аудиторий.
P.S. В следующих статьях мы подготовим детальный обзор использованных DS подходов, включая математическую часть и реализацию на Python.
Побольше поговорим о работе с данными и стратегиях инжиниринга признаков, обсудим сложности использования алгоритмов в проде, и сравним результаты разных подходов в разрезе ML и бизнес метрик.
Не переключайтесь, будет интересно :)