HypEx и мэтчинг. Эксперимент без A/B-тестирования?

8ee6c19fa208be77e9631aec503ef8c8.png

Привет, Хабр! Меня зовут Дмитрий Тихомиров, я работаю в блоке «Финансы» в команде разработки HypEx (Hypotheses and Experiments) — open source-библиотеки для Python. Наша команда хотела придумать ёмкое название для фреймворка, чтобы оно отражало суть происходящего и помогало раскрыть наш инструмент, который буквально помогает работать с гипотезами и проводить эксперименты.

40945153d265557241055921142878ff.jpg

В интернете уже очень много статей и инструментов про А/B-тестирование: как его правильно проводить, какие метрики использовать и всё-всё-всё. Однако что делать, когда забыли провести дизайн пилот необходимо протестировать гипотезу, но применение А/B-тестов невозможно из-за юридических, этических или практических ограничений? Допустим, как узнать, в каких категориях клиенты начинают тратить больше после получения кредита? Провести классическое А/B-тестирование здесь невозможно: мы не можем заставить одних людей брать кредит, а других — нет.

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

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

Теоретические основы мэтчинга

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

939a0ea97393ef34a4c7378cef7ad8e9.png

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

Как работает метод мэтчинга?

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

Далее, для каждого участника экспериментальной группы стремимся найти наиболее подходящего «близнеца» из контрольной группы. Мы ищем с помощью различных алгоритмов, включая nearest-neighbor matching, propensity score matching и другие методы.

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

В чём отличие мэтчинга от A/B-тестирования?

adfeba72149e02c54536b6ded80a8be0.png

Традиционное A/B-тестирование обычно включает в себя случайное разделение аудитории на две или более групп: экспериментальную и контрольную. В идеальном случае эти группы должны быть схожи по ключевым параметрам, что позволяет приписывать любые различия в результатах введённым изменениям. Однако на практике достичь идеального сходства групп бывает сложно, особенно когда используются методы, отличные от полностью случайного разбиения, например стратификация.

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

Примеры применения мэтчинга в различных областях

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

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

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

Почему мэтчинг непросто?

Мэтчинг — это мощный инструмент в анализе данных, но его эффективное применение требует учёта ряда сложностей и нюансов:

  • Подбор соответствующих пар. Одна из ключевых задач сопоставления — это поиск подходящих пар из контрольной группы для каждого участника экспериментальной группы. Несмотря на большие объёмы данных, найти «идеальное совпадение» для каждого индивида может быть крайне сложно, особенно в условиях высокой уникальности характеристик.

  • Высокая размерность данных. С увеличением количества переменных, которые необходимо учитывать, пространство для сравнения становится значительно сложнее. Это может привести к снижению точности сопоставления, или даже сделать его невозможным из‑за «проклятия размерности».

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

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

Почему мэтчинг хорош?

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

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

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

А как считать-то?

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

Эксперимент: влияние новой банковской программы на клиентов

Цель: оценить влияние новой банковской программы, направленной на увеличение лояльности клиентов, на две ключевые метрики: удовлетворённость клиентов (target_1) и их финансовую активность (target_2).

Первым делом установите библиотеку HypEx и импортируйте необходимые модули. Это базовый шаг для начала работы.

74cfd684b93afbf0d180f4f6c3d5ea82.png

Затем загрузите набор данных или создайте его с помощью специального класса в HypEx.

2b290dde3ab3186756d8ad27569c4bc7.png

Набор данных:

  • info_1, info_2: идентификаторы и дополнительные метаданные клиентов (например, тип клиентского счёта).

  • feature_1feature_4: различные характеристики клиентов, включая демографические данные (пол, возраст), типы вкладов, историю транзакций и т. д.

  • treatment: индикатор участия клиента в новой программе (1 — участвовал, 0 — не участвовал).

  • target_1, target_2: целевые переменные, отражающие удовлетворённость клиентов и их финансовую активность соответственно.

Важно определить целевые переменные и маркер воздействия на пользователя (treatment). Для удобства анализа и сравнения результатов эксперимента в HypEx предусмотрен параметр info_col, куда можно поместить второстепенные колонки, такие как user_id, которые не участвуют в мэтчинге.

56897db520a7133105637aa99e0a008d.png

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

Получив набор данных с размеченным параметрами, остаётся это всё положить в Matcher и вызвать метод для подсчёта всех результатов:

8f8a944482e98ab12d47f98447e29232.png

Закидываем всё это в модель, и-и-и-и (тут все пользователи Causal Inference напряглись, потому что приготовились ждать долго, но…) сразу же смотрим результаты по каждой целевой переменной.

bcc4342e20d27c9c5b8b387ad09812f2.png

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

Просмотр пар. Хотите визуально сравнить сопоставленные пары? HypEx позволяет просматривать и сравнивать характеристики сопоставленных объектов.

f6a26f6f50f168bb559a3097da084b65.png

Оценка качества мэтчинга. Для проверки качества сопоставления в HypEx доступны различные тесты и метрики, включая PSI, тест Колмогорова-Смирнова, анализ разницы средних и количество повторов. Эти результаты представлены в переменной quality_results.

И что, всё?

В рамках повышения точности и надёжности нашего подхода мы внедрили в HypEx три ключевых метода проверки результатов:

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

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

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

050975e5cba82e2696ca9d825c49b64d.png

Многие специалисты, знакомые с анализом причинно-следственных связей, могут заметить: «Подожди, но библиотека Causal Inference делает то же самое». И, в определённом смысле, они будут правы. Однако наша библиотека предлагает целый ряд уникальных преимуществ:

  • Скорость работы. HypEx оптимизирована для быстрой обработки больших объёмов данных, значительно ускоряя время анализа.

  • Обработка больших объемов данных. Наш инструмент эффективно работает как с малыми, так и с крупными наборами данных, обеспечивая качественное сравнение.

  • Множество метрик. В дополнение к стандартным метрикам HypEx предлагает PSI‑test, тест Колмогорова‑Смирнова, SMD‑тест, и учитывает количество повторов.

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

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

  • Возможность задать веса характеристикам. HypEx позволяет придать дополнительное значение определённым характеристикам в вашем исследовании.

  • Автоматический Feature Selection. Если вы не уверены, какие характеристики необходимы для вашего исследования, наша библиотека предлагает решения для автоматического отбора наиболее релевантных характеристик. На практике, в ряде экспериментов это помогало увидеть, что множество характеристик, которые мы изначально считали важными, — избыточны.

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

  • Сопоставление без повторов. Эффективное выравнивание групп с учётом новых факторов, обеспечивая точность и справедливость сравнения без риска искажения результатов.

Сравнение скорости сопоставления в Сausal Inference и HypEx (на основе Google Colab):

Causal Inference

HypEx

(100 000, 5)

300 секунд

30 секунд

(500 000, 5)

4 часа

2 минуты

(1 000 000, 5)

Не считает

20 минут

(5 000 000, 5)

Не считает

1 час 10 минут

Что-то тут не так. В чём секрет?

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

Как выглядит конвейер под капотом HypEx?

  1. Базовая предобработка данных. Очистка и подготовка данных для анализа.

  2. Автоматический подбор характеристик. При желании пользователя применяется LAMA для оптимального отбора характеристик.

  3. Поворот пространства характеристик. Используется разложение Холецкого для преобразования L2-расстояния в расстояние Махаланобиса.

  4. Поиск «близнецов» через Faiss. Поиск аналогов в контрольной группе для целевой и наоборот.

  5. Коррекция смещения. Расчет bias для учёта возможного смещения в данных.

  6. Расчет ключевых метрик. Включая ATE, ATT и ATC.

  7. Статистический анализ. Детальное изучение полученных данных.

  8. Проверка результатов. С помощью методов замены воздействия, добавления случайной характеристики и перерасчёта на подвыборке мы дополнительно подтверждаем корректность расчётов.

Что в планах

Уже сейчас в нашей библиотеке реализована базовая функциональность для A/B-тестирования, включая A/A-тесты и основные расчёты для A/B-экспериментов. Вы можете ознакомиться с этими возможностями на нашем GitHub. Но наши планы гораздо шире: мы активно работаем над добавлением новых инструментов и улучшением существующих.

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

Кроме того, на основе HypEx мы разрабатываем специализированную платформу для A/B-тестирования в Сбере. Она будет обеспечивать быстрое и удобное проведение экспериментов любого типа, будь то A/B-тестирование или мэтчинг. Мы стремимся сделать процесс экспериментирования максимально эффективным и доступным для всех пользователей.

Выводы

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

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

© Habrahabr.ru