
Всем привет! Меня зовут Вячеслав Назаров, я лид аналитики промо в СберМаркете. В этой статье я расскажу, как оценивать маркетинговые кампании, если провести A/B-тесты нельзя. Еще обсудим логику в Propensity Score Matching (PSM), и то, какую пользу инструмент может принести вашему бизнесу. А в конце статьи покажу, как достаточно просто можно развернуть такую штуку у себя.
Промо в Сбермаркете

Для нас существует линейная зависимость: чем больше промо — тем больше ответственность за привлечение новых клиентов и сохранение доверия уже выбравших нас. Поэтому нам крайне важно оценивать эффективность акций и коммуникаций.
Казалось бы — что сложного? Есть «золотой стандарт» индустрии аналитики — A/B-тестирование, бери его, да и применяй к своим данным. Но в какой-то момент мы уперлись в потолок: бизнес рос, а с ним команда и маркетинговые бюджеты. Маркетинговые механики становились всё сложнее, а бизнес стал взаимодействовать с пользователями сразу по нескольким направлениям. В общем, A/B-тестирования нам стало мало.
Почему нам не хватило A/B тестирования
Невероятно, но и такое бывает 🙂 Было четыре основных причины:
-
Затратно с позиции ресурсов команды. При дизайне А/B тестов часто задействованы сразу несколько команд: разработчики, продакты, аналитики и др. Много ресурсов уходит на синхронизацию, обсуждение гипотез и выбор метрик.
-
Дорого с точки зрения недополученной прибыли. Каждое A/B тестирование нам необходимо определить контрольную группу, на которую мы потенциально не будем воздействовать. А значит, эти пользователи не будут задействованы в маркетинговых коммуникациях, и, конверсии для этой группы будут ниже.
-
Сложно разделить эффекты при параллельных акциях. У нас достаточно большой отдел маркетинга, а значит, и много разных кампаний, которые могут быть хитро переплетены между собой. Отделить оценку эффекта параллельных акций друг от друга — тоже достаточно нетривиальная задача для A/B тестирования.
-
Не получаем «дивиденды» с уже накопленного опыта. A/B тесты — это всегда как бы взгляд в будущее, а у нас есть большой пласт уже накопленных данных, которыми можно воспользоваться.
При этом хочу отметить важный нюанс — я не предлагаю отказаться от A/B тестирования, эта статья скорее про то, как расширить функционал проверки гипотез, а не о том, чтобы полностью заменить A/B тесты.
Propensity Score Matching
Начнём со сложного определения: Propensity Score Matching (PSM) — это статистический метод, который используют, чтобы уменьшить искажения в оценках причинного воздействия. Он позволяет сравнить группы на основе вероятности, что они будут подвергнуты определённому воздействию.
Теперь немного проще. Основная идея PSM: для пользователя, получившего тритмент (например, пуш с купоном на скидку), необходимо подобрать максимально похожего «пользователя-близнеца» на основе истории взаимодействия с нашим продуктом, то есть с похожей историей поведения у нас в сервисе. При этом «близнец» не должен быть подвергнут тритменту. После этого можно сравнить метрики между «близнецами», и оценить полученный от рассылки эффект.

Теперь подробнее:
-
Собираем матрицу признаков по нашим пользователям. Добавляем флаг принадлежности пользователя к тестовой или контрольной группе. Если пользователь получил взаимодействие (пуш) — он в тестовой группе. Из оставшихся пользователей будет сформирована потенциальная контрольная группа. Отдельно отмечу, что мы собираем матрицу признаков за продолжительный исторический период до даты тритмента, например, 100 дней до начала акции.
-
На втором этапе нам необходимо определить вероятность отношения пользователя к тестовой группе. Для этого необходимо использовать базовые алгоритмы машинного обучения. Можно использовать, как простые модели типа логистической регрессии, так и более сложные типа градиентного бустинга. После работы модели к матрице признаков добавляем полученное значение вероятностей.
-
Оставляем наиболее близких друг к другу по вероятности пользователей из тестовой и контрольной групп. Для решения этой задачи можно использовать «метод k ближайших соседей». По итогу на каждого пользователя из тестовой группы, которые получили пуш, останется один самый похожий на него пользователь из контрольной группы.
-
Итак, у нас получилось две группы, тестовая и контрольная, и далее мы сравниваем метрики между ними и оцениваем статистическую значимость изменения этих метрик.
Чтобы масштабировать PSM, можно внедрить инструменты для always-on оценки эффектов от запускаемых кампаний. Но их надо часто тестировать, чтобы убедиться, что вы получаете не ложноположительный результат.
В моем случае времени и ресурса на это не было, поэтому я создал self-service на базе jupyter notebook, где любой сотрудник может запустить код в работу с помощью простого набора виджетов. Этот сервис мы отдали коллегам в отдел маркетинга, они самостоятельно запускали его и получали оценки эффективности маркетинговых коммуникаций.

Плюсы self-сервиса
Благодаря self-сервису мы смогли кратно увеличить количество оцениваемых акций, быстро дорабатывать PSM, и повышать синхронизацию между командой аналитиков и отделом маркетинга.
И самый главный плюс — мы улучшили показатели data-driven’ности компании, потому что начали охватывать большой объем маркетинговых бюджетов, и точнее понимать, какие механики дают больший прирост GMV и увеличивают лояльность пользователей.
Теперь в цифрах:
-
4 основных отдела в маркетинге используют PSM регулярно;
-
70% запускаемых акций и механик имеют always-on оценку;
-
>2 млн юзеров нашли свои пары;
-
100+ сотрудников учитывают оценки PSM для планирования своих OKR.
Особенности, на которые мы обратили внимание при реализации PSM
-
Отбор фичей в модель — ответственный процесс. Чтобы оценить разные механики потребуется собирать, соответственно, разные признаки для обучения модели.
-
Чем больше данных об истории взаимодействия пользователя с вашим сервисом, тем лучше. Например, мы собираем историю за 100+ дней для каждой оцениваемой акции.
-
Первые действия пользователя могут быть импульсивными, и искажать статистику. Поэтому мы не используем PSM для новых пользователей.
-
Дисбаланс классов — не баг. Тестовая группа всегда сильно меньше всей базы, и получается, что на одного пользователя из тестовой группы приходится 10-15 человек из контрольной. Это дает возможность подбирать наиболее схожего «близнеца» для сравнения.
-
Важно следить, чтобы модель определения вероятности на первом этапе не подстроилась под один признак и не переобучилась.
-
Нужно удостовериться, что тестовая и контрольная группа получились похожими, для этого на пре-периоде оцениваем доверительные интервалы этих групп по основным метрикам.
Бонус: Pymatch
Если хочется попробовать PSM, можно перейти по ссылке в библиотеку Pymatch — пакетное решение на Python.
Буду рад ответить на вопросы в комментариях!
Product&data команда СберМаркета ведет соцсети с новостями и анонсами. Если хочешь узнать, что под капотом высоконагруженного e-commerce, следи за нами в Telegram и на YouTube. А также слушай подкаст «Для tech и этих» от наших it-менеджеров.
ссылка на оригинал статьи https://habr.com/ru/articles/804875/
Добавить комментарий