Наука о данных

Тема 8: Модуль 8: A/B-тестирование

Урок 1: Как проверить модель «в бою»

  • Видео
  • Тренажер
  • Теория
Заметили ошибку?

Генеральная репетиция: модель машинного обучения против «как было раньше»

 

Итак, вы прогнали модель через дополнительные тестовые наборы данных, чтобы избежать переобучения и стабилизировать качество ее прогнозов. Кажется, она справилась отлично. Но это еще ничего не значит — модель должна начать работать на реальных данных и доказать свою эффективность на них. Настало время провести сравнительное тестирование в условиях, приближенных к боевым.

 

В этом нам поможет A/B-тест. Сегодня редкое изменение внедряется сразу без предварительной оценки его эффективности. Маркетологи и менеджеры продуктов в ИТ быстро пришли к тому, что не стоит тиражировать непроверенное улучшение на всю аудиторию продукта, ведь не все новшества одинаково полезны. Поэтому изменения сначала проверяют на части пользователей, а затем сравнивают ключевые метрики с показателями контрольной группы — теми людьми, кто в то же время взаимодействовал с вашим продуктом «по старинке».

 

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

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

 

Вредный совет

Пример и объяснение

Тестировать несколько изменений сразу

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

 

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

 

Поэтому при проведении A/B-теста рекомендуется вносить одно точечное изменение, чтобы избежать погрешностей и искажений.

Менять процесс целиком, а не встраивать модель в существующий

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

 

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

 

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

Останавливать тестирование слишком рано

Представьте ситуацию: вы показали изменение 1 000 человек и записали их реакцию, в то же время сайт без изменений просмотрели еще 1 200 посетителей. Новая версия показала лучший результат по дополнительным покупкам за счет рекомендаций — на целых 8%. Хочется зафиксировать победный счет и праздновать, но рано. Потому что затем сложно будет объяснить проседание до 0,3%, которое может случиться на отметке в 10 000 человек. Аналогично не стоит расстраиваться, если поначалу модель не проявит себя (время и статистически значимое число показов, реакций или иных взаимодействий все расставят по своим местам).

 

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

Анализировать результат по не тем показателям

Вы уже знаете о важности выбора метрик. Иногда изменение может положительно отразиться на сиюминутном показателе, но «обвалить» долгосрочный, и наоборот. Например, новая система рекомендаций может повлиять на размер чека покупателя — тот может набрать товаров на меньшую сумму, чем ожидалось. Но благодаря рекомендациям он может начать покупать чаще — и в перспективе сумма, которую компания получит с него, вырастет. Следом вырастет и выручка — значит, бизнес-цель будет решена, хотя по первым показателям модель справлялась «не очень».

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

Сколько участников нужно для A/B-тестирования, чтобы мы могли верить его результатам

 

Мы упомянули статистическую значимость, без которой результаты теста нельзя будет считать надежными. Наверняка у вас возник вопрос: «А сколько человек в конкретном случае должны увидеть продукт без изменений и, наоборот, с изменениями, чтобы результаты исследования были достоверными и значимыми?» Давайте научимся оценивать объем выборки.

 

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

 

Как правило, вам потребуется указать 4 значения:

 

Среднее значение показателя, на который вы хотите повлиять

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

Размер эффекта (как должен измениться показатель)

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

 

Помните: чем меньший эффект вы хотите обнаружить, тем больший объем выборки вам нужен.

Вероятность ошибки первого рода (изменений по факту нет, но мы почему-то считаем, что они есть)

Выдавать желаемое за действительное — одна из особенностей человека. Например, по каким-то причинам мы можем посчитать, что конверсия страницы Б превышает конверсию страницы А, но на самом деле статистически две цифры не различаются.

 

Эта вероятность заложена в формулу расчета выборки и называется уровнем значимости и обозначается греческой буквой α. Вы сами определяете его значение (обычно это 0.1, 0.05 и 0.001 — чем меньше уровень значимости, тем реже ошибочно отвергается нулевая гипотеза).

 

Помните: чем меньше ошибок первого рода вы хотите допустить, тем больший объем выборки вам нужен.

Вероятность ошибки второго рода (изменения по факту есть, но мы их не заметили или проигнорировали)

Ошибка второго рода рассматривает обратную ситуацию. Обычно ее вероятность обозначают как мощность или 1-ß, а рекомендованное стандартное значение — 0.2.