Привет, Хабр! Сегодня поговорим о проверке гипотез и сложностях, которые могут возникнуть в процессе работы. В Сбере постоянно проводятся эксперименты по улучшению пользовательского опыта и ключевых метрик бизнеса. Это может быть улучшение приложений или оптимизация работы сети отделений. И конечно, мы должны видеть, где был реальный эффект, а где нет. Так как экспериментов много, нужно оперативно понимать, что улучшает результат, а что нет. Также нельзя руководствоваться экспертным мнением, решения нужно принимать исключительно на основе исходных данных. Под разные задачи могут требоваться разные подходы. Например, когда речь идёт о приложении, можно использовать стандартный А/Б-подход: сформировать группы; эффект, который хотим получить; сформулировать гипотезу; рассчитать длительность эксперимента. А после подсчитать результаты правильным статистическим тестом или ускорить проведение эксперимента с помощью разных техник, например CUPED.
Но что, если мы хотим изменить дизайн отделений Сбера или создать новый формат, или даже закрыть какую-то часть отделений и понять, как это влияет на поведение клиента и ключевые метрики? В таком случае мы имеем дело с офлайн-точками и не можем просто взять и разбить пользователей на две группы. Придётся изменить методологию оценки эффекта и пользоваться другими методами, которые позволяют получить p-value и оценить итоговый эффект. Давайте посмотрим, как всё это реализовать.
Приступаем к экспериментам
В таких экспериментах у нас часто задана группа А от бизнеса: это может быть отделение банка или группа отделений банка, какая-то точка с маркетинговой активностью или предполагаемые места открытия новых форматов. Иногда группа А может быть и не задана, и мы должны также подобрать её оптимально.
В рамках этой статьи предположим, что мы уже подобрали группу А или она задана нам от бизнеса. Как нам подобрать группу Б и что такое группы в данном случае? Под группой А мы понимаем всех клиентов локации А. Это могут быть все клиенты, посетившие отделение банка А за какой-то промежуток времени, или все клиенты с транзакционной активностью в локации, зависит от задачи. В итоге мы хотим сравнивать клиентские метрики и понимать, повлияло ли какое-то изменение офлайн-точки на денежные показатели клиента или на его активность в приложениях экосистемы?
Проблема здесь в том, что клиенты в локации могут быть с определёнными свойствами, и мы должны подобрать похожих к ним для группы Б. Что такое похожесть – это большой вопрос, обсудим его далее. Для этой задачи можно использовать разные подходы: искать похожие локации с точки зрения какой-то метрики, обучить ML-модель look-a-like и искать похожих клиентов на заданный сегмент или же использовать подход matching. Ещё неплохо было бы получить наиболее похожего клиента для каждого клиента из группы А. Поэтому сконцентрируемся на подходе матчинга.
Матчинг как он есть
Итак, мы имеем некую группу А клиентов, хотим подобрать для каждого клиента похожего. Для начала надо понять, на основе чего подбирать? Сначала требуется зафиксировать факторы, на основе которых будем считать похожих. Часть таких факторов может быть задана от бизнеса, часть нужно аккуратно подобрать своими силами. Это могут быть показатели транзакционной активности, число визитов в отделения банка, значения кредитных показателей за разные временные периоды.
Для отбора можно использовать разные методы. Если есть ключевая метрика, то можно отобрать важные признаки по корреляциям. Например, построить объясняющую модель и отобрать факторы на основе модели или различными методами рекурсивного отбора; отобрать признаки, минимизировав расстояния до объектов из группы А. Также нельзя забывать, что в результате нужно получить такую группу Б, значения ключевой метрики которой не отличаются статистически от группы А до эксперимента, чтобы заведомо не получить неправильный результат.
Предположим, понять, какие признаки оказывают влияние на ключевые метрики, удалось. Но как теперь подобрать похожего и что такое похожесть? Похожесть мы должны определить как расстояние от одного клиента до другого по какой-то метрике расстояния. То есть получены факторы для одного клиента из группы А и есть много других клиентов. Между каждой такой парой теперь можно посчитать расстояние и выбрать похожего как самого ближайшего.
Вопрос в том, какую метрику расстояния выбрать. Если выбрать Евклидову метрику, то похожими окажутся одни клиенты. Если выбрать метрику Махаланобиса, то другие. И так далее.
Вывод такой: если необходимо сконцентрироваться на дисперсии и ковариациях, стоит воспользоваться метрикой Махаланобиса. Она поможет выбрать точки с меньшей дисперсией распределения. Кроме этого, расстояние Махаланобиса подразумевает, что точки находятся вокруг некоторого центра масс. В итоге требуется посчитать матрицу ковариаций, а затем узнать расстояние между всеми точками. И вот после расчёта и выбора максимально близких мы можем получить группу Б.
На текущем этапе при помощи матчинга удалось подобрать группу Б к группе А. Теперь необходимо убедиться в том, что:
Группы не различаются до эксперимента по ключевой метрике.
Группы действительно похожи по каждому выбранному признаку.
Группы не пересекаются между собой.
В первом случае потребуется проверить статистическим тестом, что группы действительно не отличаются до эксперимента. Что мы не ловим эффект там, где его нет.
Во втором – появляется возможность оценить статистически или попытаться посчитать какие-нибудь доли, как часто отклоняются значения друг от друга.
Ну и в третьем – для точной гарантии следует исключать клиентов группы А из подбора, а также заведомо задать город или другие факторы, если нужно выполнить проверку в рамках одного города или других срезов.
Ура, проверка гипотезы!
Да, на текущем этапе необходимо проверить гипотезу. Это нужно сделать подходящим статистическим тестом на основе метрики и распределения или воспользоваться подходом causal inference. По сути, иногда уже задана группа А, потом к ней подбираем группу Б, то есть делаем в какой-то степени синтетический тест. В таком случае можно смоделировать контрфактическое значение, пытаясь ответить на вопрос «Что было бы, если бы переформатировали на самом деле офис из группы Б, а не из А?». После таких расчётов уже можно получить p-value и понять, есть эффект или нет на заданном уровне значимости.
В целом, это всё, о чём хотелось рассказать. На всякий случай приведём краткий алгоритм проверки гипотезы, если нет возможности разбить клиентов на группы. Процесс состоит из следующих шагов:
Понять, какие факторы влияют на ключевую метрику.
Определить метрику похожести.
Подсчитать расстояния между объектами и найти ближайших.
Убедиться, что группы похожи, не различаются до эксперимента, не пересекаются между собой.
Проверить гипотезу статистически.
Подвести итоги и сформулировать рекомендации.
Profit!
Также хочется заметить, что в таких тестах есть большой простор для ML. Машинное обучение даёт возможность подобрать факторы для матчинга, используя любимую модель машинного обучения: линейную модель, деревья или ансамбли. Дальше уже моделируется поведение группы Б. Ну и ML ещё позволяет применить CUPED, рассматривая в качестве метрики разницу значений во время эксперимента и до него.
Ну а теперь точно всё. Если есть вопросы, задавайте, постараемся оперативно ответить.