📕 Propensity Score Matching или как оценить эксперимент без А/B теста (Часть 1)
Давайте сразу на чистоту: A/B тесты вообще эталонный способ определения причинно-следственного эффекта в экспериментах (на англ. casual inference).
Но есть нюанс: не всегда есть возможность провести классический A/B тест и вот почему:
🔘Технические или этические ограничения, при которых мы просто не может раскатить на часть пользователей новый функционал, а на других оставить старый. Либо под капотом нашей техники возникнут проблемы, либо пользователи из контроля негативить начнут (а может и все вместе)
🔘Мы ожидаем, что наш новый функционал потрогает очень маленькая доля клиентов. Такое часто бывает с промо: раскатил новую рассылку, а ее открыли только 3% клиентов в тестовой группе — представляете, какой размытый эффект мы увидим, когда сравним весь тест со всем контролем. Тем не менее даже при таком случае, лучше не отказываться от идеи провести АБ-тест, если есть такая возможность.
Как это работает?
Концепцию PSM я покажу на примере из области геймификации, буквально моя тема 💼
Представим, что мы хотим протестировать мини-игру в нашем приложении. Катимся без A/B теста и видим, что в нашу игру поиграли 10% клиентов. Какой есть соблазн? А давайте сравним вот эти 10% с остальными 90%, которые в игру не поиграли, и замерим эффект. Но так делать нельзя.
Дело в том, что эти 10% скорее всего сами по себе более активные и заряженные ребята, поэтому нам нельзя сравнивать их со всеми подряд. Здесь очень много конфаундеров (с англ. confounder), то есть каких-то факторов, которые мы не наблюдаем, но они повлияли на то, что ребята поиграли в игру.
Поэтому, чтобы не получить bias из-за конфаундеров, нам надо сравнивать наших игроков с такими же активными ребятами, но которые в игру не поиграли. Нам надо найти "близнецов" наших 10% игроков, чтобы честно сравнить.
Догадываетесь, зачем в PSM тогда слово Matching?) Нам надо по ряду признаков смэтчить нашу аудиторию игроков с аудиторией неигроков, чтобы они были максимально похожими, и это уже ML задача. Искать близнецов можно признакам типа пола, возраста, активности в приле и тд. Не буду сильно погружаться в теорию, в конце оставлю много интересных ссылочек.
А результат такой же, как в A/B тестах?
Эффект, который мы находим в PSM != эффекту в A/B тестах.
▶️В A/B тестах мы находим ATE (average treatment effect). Объявляя результаты теста я говорю: мы сравнили средний ARPU в тесте и в контроле, и увидели, что наша игра растит средний ARPU в группе на 100 рублей.
▶️В PSM мы находим ATT (average treatment effect on the treated). В этом случае я скажу: мы увидели, что у тех, кто поиграл в нашу игру, ARPU увеличился на 150 рублей по сравнению с теми, кто не поиграл.
Почувствовали разницу? В PSM я оцениваю эффект от механики на играющего, а в случае A/B теста оцениваю эффект на всю группу (и играющих, и не играющих). Очень часто, бизнесу будет даже интереснее узнать ATT эффект, так как он менее зашумленный.
Что дальше?
Для меня PSM как никак актуален, так как мы прямо сейчас будем пытаться использовать эту методику в своих экспериментах на реальных данных. Пока что как дополнительную в рамках пробы пера: нам важно, чтобы методике можно было доверять и не завышать ошибку 1-го рода. И надо обнаружить все подводные камни (а их будет много, уверен). Если получится круто, то будем чаще считать ATT эффект в своих тестах.
Так что обязательно вернусь к вам с апдейтом, как у нас получилось.
Ну а пока ссылочки!
🔘Хабр: Как оценивать маркетинговые кампании, если невозможно провести A/B тесты
🔘Хабр: Эксперимент без A/B тестирования?
🔘A Beginner’s Guide to Propensity Score Matching (вместе с кодом!)
🔘Как методу применяли в Яндексе Маркете
🔘ML методы Casual Inference (пролистай до раздела Propensity Score) (вместе с кодом!)