Над статьей также работали: Адриан Лазарев, Любовь Кислинская, Александр Косов.
Авторы библиотеки Kolmogorov ABacus: Вадим Глухов, Егор Шишковец, Дмитрий Забавин.
Знакома ли вам такая ситуация: вы разработали модель машинного обучения и попытались оценить эффект, но эксперимент показал, что модель не принесла никакого экономического эффекта?
Значит ли это, что модель действительно неэффективна? Или причина низких результатов все-таки в чем-то другом? И если так, то в чем именно?
Нечто подобное случилось с командой Альфа-Банка, и мы – GlowByte Advanced Analytics – отправились к ним на помощь, захватив с собой разработанную нами библиотеку A/B-тестирования Kolmogorov ABacus (что в переводе означает “счеты”)!
Кстати – еще до того, как вы познакомитесь с достоинствами и преимуществами нашей библиотеки – рады сообщить, что на момент публикации код библиотеки уже выложен нами в open source: github.com/kolmogorov-lab/abacus. Просто выполните “pip install kolmogorov-abacus” – и ABacus в вашем распоряжении!
Кейс Альфа-Банка
Коллеги из Альфа-Банка разработали модель персонализации рекламных баннеров: в зависимости от атрибутов клиента модель ранжирует баннеры различных продуктов банка по убыванию их прогнозируемой привлекательности для клиента. На этапе обучения точность модели оказалась достаточно высокой: модели довольно точно удавалось отобрать баннеры, на которые клиент кликнет с наибольшей вероятностью. Но, когда был запущен пилот для оценки экономического эффекта от внедрения этой модели, оказалось, что по большинству баннеров он отрицателен (!), а по остальным эффекта почти нет.
Обратим еще раз внимание на этот симптом, который свидетельствует о возможном наличии ошибки в дизайне эксперимента: модель обладает приемлемой точностью на этапе обучения, но не подтверждает этой точности на этапе оценки эффекта.
Причины ошибочных результатов при проведении статистических экспериментов
1) Малая численность групп (малая мощность теста)
Во-первых, следует помнить, что статистический тест не гарантирует правильного ответа на вопрос, отличаются ли сравниваемые группы или нет. Более того, любой статистический тест предполагает, что он ТОЧНО время от времени будет ошибаться: в какой-то доле случаев он будет замечать эффект там, где его точно нет (доля таких случаев называется в статистике ошибкой первого рода), а в какой-то доле случаев не будет замечать эффект там, где он точно присутствует (доля таких случаев называется в статистике ошибкой второго рода).
Причем чем меньше численность групп, участвующих в эксперименте, тем больше вероятность того, что мы не заметим достигнутый эффект (как еще говорят, тем выше ошибка второго рода).
Правда, здесь возникает вопрос: как мы можем не заметить достигнутый эффект? Ведь если мы можем говорить, что достигли эффект, значит, мы его уже заметили. То есть мы можем либо заметить эффект, либо не заметить. Но как мы можем оценить долю случаев, когда мы “должны были заметить эффект”, но не заметили? Разве нам может быть заранее известно, будет ли в эксперименте достигнут статистически значимый эффект или нет? Этому вопросу будет посвящена отдельная статья, но краткий ответ: да. Мы можем сымитировать эксперимент: можем выделить две группы клиентов, добавить эффект к значениям метрики в одной из групп, а затем проверить: удастся ли нам заметить этот эффект или нет. Такую имитацию мы можем повторить много-много раз и вычислить ту самую долю случаев, когда нам не удалось заметить эффект, который точно присутствовал в данных.
В библиотеке ABacus такая многократная имитация эксперимента выполняется (если не считать описание конфига) одной командой.
Но подробнее об этом, как я уже обещал, – в отдельной статье.
2) Несопоставимость групп
Вторая причина ошибочных результатов эксперимента – несопоставимость групп.
Если сравниваемые в ходе эксперимента группы несопоставимы друг с другом, то результаты эксперимента могут быть какими угодно. Скажем, если в контрольной группе (которая не получает никаких воздействий) преобладают клиенты с большими средними тратами или с большей частотой покупок, то сколь бы эффективным ни было наше воздействие на клиентов тестовой группы, нам вряд ли удастся статистически значимо превзойти результаты контрольной группы. То есть сравниваемые группы должны быть сопоставимы друг с другом.
Однако даже если сравниваемые группы сопоставимы друг с другом, но несопоставимы с общей совокупностью клиентов, то воздействие, показавшее эффект в ходе эксперимента, может не показать эффекта, если попытаться применить его ко всем клиентам. А ведь по результатам такого неправильно поставленного эксперимента неэффективное маркетинговое воздействие может даже быть поставлено на регламент, то есть будет регулярно приносить убыток. Следовательно, сравниваемые группы обязательно должны быть сопоставимы как друг с другом, так и с общей совокупностью клиентов.
Итак, неправильно поставленный эксперимент может, с одной стороны, лишить нас по-настоящему эффективных способов воздействия на клиента, с другой – побудить нас регулярно совершать убыточные действия, а также тратить время и усилия на поддержку их регулярности.
Как нам удалось выяснить, в кейсе Альфа-Банка проблема состояла именно в несопоставимости сравниваемых групп. А теперь поговорим о том, как именно мы это выяснили и как нам удалось это исправить.
Как обеспечить сопоставимость групп? Подходы к формированию сопоставимых групп
1) Формирование групп случайным образом
Одним из наиболее распространенных заблуждений является уверенность в том, что при выделении групп случайным образом мы гарантированно получим сопоставимые группы.
Проверим эту гипотезу методом А/А-теста! Давайте попробуем много раз повторить случайное выделение групп, каждый раз оценивая значимость различий между сформированными группами по целевой метрике. И вычислим долю случаев, когда нам удастся заметить статистически значимое различие. Эта доля называется ошибкой первого рода (то есть это доля случаев, когда мы замечаем эффект там, где его нет). В идеале доля таких случаев не должна превышать допустимого уровня ошибки первого рода (для маркетинговых исследований индустриальным стандартом является значение alpha = 0,05). Иначе применение случайного метода при формировании групп недопустимо: это значит, что он формирует несопоставимые группы, из-за чего мы слишком часто будем замечать эффект там, где его нет.
Иллюстрация: матрица ошибок первого рода при случайном сплитовании
Как видно из приведенной таблицы, доля случаев, когда мы замечаем эффект, которого не было, при формировании групп случайным образом ведет себя крайне непредсказуемо и почти всегда превышает предельно допустимое значение – 5%. То есть случайное сплитование не позволяет сформировать сопоставимые группы для эксперимента.
2) Стратификация
Наиболее надежным методом при формировании групп для эксперимента является стратификация:
Кластерзуем клиентскую базу: выделим избыточное число кластеров. Почему избыточное? Чтобы сформировать “плотные” однородные кластеры клиентов с похожим покупательским поведением. Чтобы выделить действительно “плотные” кластеры в библиотеке ABacus, мы используем HDBScan – метод кластеризации, основанный именно на оценке плотности кластеризуемых данных. Сформированные кластеры еще иногда называют стратами, отсюда и название метода: стратификация.
Выберем из каждого кластера случайным образом фиксированную ДОЛЮ клиентов. В данном случае мы можем выбирать клиентов из кластера случайным образом, потому что в процессе кластеризации в кластеры объединены заведомо сопоставимые друг с другом клиенты. То есть каких бы клиентов из одного кластера мы ни выбрали, они будут сопоставимы друг с другом. А значит, даже выбирая клиентов из кластера случайным образом, мы не нарушаем сопоставимости групп – если только из каждого кластера мы забираем в группу строго одинаковую ДОЛЮ клиентов.
Объединим клиентов, отобранных из разных кластеров, в одну группу.
Аналогично сформируем вторую группу (без пересечения с первой).
Такой подход позволяет получить группы, сопоставимые как друг с другом, так и с общей совокупностью клиентов: численное соотношение представителей разных кластеров в обеих группах будет одинаковым – и таким же, как в общей совокупности клиентов.
В библиотеке ABacus стратификация также выполняется одной командой (опять-таки если не считать описание конфига).
Забегая вперед, скажу, что теперь все эксперименты Альфа-Банка по оценке эффективности моделей персонализации запускаются с применением стратификации из библиотеки ABacus. Но перейдем, наконец, к вопросу, как же нашей библиотеке удалось завоевать такое доверие коллег из Альфа-Банка?
Итак, в кейсе Альфа-Банка сложность состояла в том, что необходимо было не подготовить новый эксперимент, а правильно подвести итоги уже завершившегося, когда мы уже не можем повлиять на состав групп, принимавших участие в эксперименте.
3) Постстратификация
Как избежать несопоставимости групп при подготовке к эксперименту, мы разобрались. Но как же быть, если в эксперименте использовались несопоставимые группы клиентов и эксперимент уже завершился?
Для этого существует метод постстратификации: давайте в результатах эксперимента исключим из каждой страты (из каждого кластера клиентов) столько наблюдений, чтобы доля этой страты в группе совпала с долей этой страты в исходном множестве клиентов.
Именно этот метод применялся нами в кейсе Альфа-Банка. Но прежде чем показать, как именно нам удалось обеспечить сопоставимость групп в уже завершившемся эксперименте Альфа-Банка, поговорим о том, как нам удалось понять, что проблема этого эксперимента состояла именно в несопоставимости сравниваемых групп.
Как оценить, сопоставимы группы или нет?
1) Оценка алгоритма формирования групп: многократный А/А-тест
Как правило, этот вопрос решается НЕ на уровне конкретных сформированных групп, а на уровне доверия используемому алгоритму формирования групп в целом.
Аналогично тому, как мы оценивали уровень ошибки первого рода методом А/А-теста при формировании групп случайным образом, мы можем оценить уровень ошибки первого рода и для любого другого алгоритма формирования групп. В частности, выбирая то, какой метод формирования групп заложить в основу библиотеки ABacus, мы остановились именно на стратификации через HDBScan-кластеризацию, потому что этот метод зарекомендовал себя на многократных А/А-тестах: он устойчиво демонстрировал уровень ошибки первого рода ниже допустимого предела в 5%.
Но что делать, если группы участников эксперимента уже сформированы? Как оценить, сопоставимы эти группы или нет?
2) Оценка сопоставимости уже сформированных групп: А/А-тест
Самый простой способ – это применить тот же самый метод А/А-теста для сформированных групп и сравнить значения целевой метрики в этих группах в период до эксперимента (по историческим данным).
Если мы наблюдаем статистически значимое отличие сравниваемых групп еще до начала эксперимента, значит эти группы несопоставимы друг с другом.
В библиотеке ABacus при формировании групп используется метод стратификации, основанный на кластеризации клиентов, поэтому мы не сомневаемся в качестве его работы, и тем не менее каждый раз при формировании групп в библиотеке ABacus мы предусмотрели выполнение А/А-теста – для полной уверенности в сопоставимости сформированных групп.
Метод А/А-теста при сравнении сформированных групп по значениям целевой метрики на периоде “до эксперимента” чаще всего позволяет заметить изначальную несопоставимость сформированных групп. Однако даже если А/А-тест не обнаружил статистически значимого различия между сформированными группами, это еще не значит, что эти группы сопоставимы друг с другом с точки зрения стратификации.
3) Сравнение долей разных страт в сформированных группах
Более надежным является метод, основанный на сравнении долей разных страт (кластеров) в сформированных группах:
Для каждой страты вычислим, какая ее доля вошла в состав группы.
Сравним вычисленные доли для каждой из страт: если разные страты вошли в состав группы в разных долях, значит сформированная группа уже несопоставима с исходной совокупностью клиентов – и значит уже итоги эксперимента невозможно будет подвести корректно без постстратификации.
Именно такие симптомы мы обнаружили при анализе групп, принимавших участие в экспериментах Альфа-Банка. И именно это обстоятельство сразу дало нам понять, что сделанные коллегами выводы об эффективности (точнее неэффективности) разработанных ими моделей персонализации баннеров нуждаются в корректировке. Да, еще не было понятно, будет ли обнаружен эффект этих моделей после применения постстратификации, но уже было очевидно, что без постстратификации признавать эти модели неэффективными слишком рано.
Итак, вот как выглядели доли страт в группах, принимавших участие в эксперименте Альфа-Банка:
А вот как стали выглядеть доли страт в тех же группах после применения постстратификации:
Еще одной очень показательной характеристикой является средний скор модели в рамках каждой из групп:
Видно, насколько сильно постстратификация позволила выровнять средний скор между группами (ними?):
И вот, наконец, результаты эксперимента до и после применения постстратификации:
Итого, до применения пост стратификации эффект моделей выглядел статистически незначимым, но постстратификация восстановила справедливость: модели доказали свою эффективность по всем рекомендуемым ими баннерам.
P. S. Другие методы оценки сопоставимости сформированных групп
Еще одним методом оценки сопоставимости сформированных групп является pseudo labeling. Он предполагает построение модели бинарной классификации, которая обучается отличать участников контрольной группы от участников тестовой группы. Интуиция тут такова: если построенная модель будет обладать достаточной точностью (то есть если модели удалось научиться отличать участников контрольной группы от участников тестовой группы), значит, сформированные группы отличаются друг от друга, то есть они несопоставимы друг с другом.
Подробнее метод pseudo labeling мы рассматриваем в нашем курсе “Погружение в А/В-тестирование” на платформе A2NCED, соавтором и соведущим которого мне посчастливилось стать. Поэтому с радостью приглашаем всех, кому, как и нам, интересно разобрать на атомы всю методологию статистических экспериментов.
Также мы нередко выступаем с докладами на митапах сообщества NoML, где, помимо различных подходов к проверке статистических гипотез, активно обсуждаются вопросы прикладного искусственного интеллекта, продвинутой статистики, методов оптимизации и сложных архитектур на их основе. С записями предыдущих митапов вы можете познакомиться на YouTube-канале NoML. В том числе с видео-обзором возможностей библиотеки ABacus.