Про интересные результаты A/B тестирования

Ребята из Microsoft написали отличную статью про A/B тестирование, онлайн эксперименты и вот это всё. Статья тут: http://www.exp-platform.com/documents/puzzlingoutcomesincontrolledexperiments.pdf. Короткая выжимка ниже.

Некорректные KPI

Разработчики по ошибке выкатили на Bing код, который выдавал плохие результаты поиска. Но на основных KPI был замечен большой положительный рост. Почему? Проблема в метриках, в качестве них были выбраны distinct queries per user - число уникальные запросы на пользователя (повысилась на 10%), и revenue per user - выручка от пользователя (повысилась на 30%). А произошло это потому, что поиск работает плохо и пользователям приходится часто переформулировать запрос и больше кликать на рекламу (она релевантнее того, что выдал поисковик). Лучше разложить эту метрику на составляющие и оптимизировать их отдельно. Distinct queries per month раскладывается по формуле

  1. Users/Month фиксирована в контрольной группе и в эксперименте. Ее можно проигнорировать.
  2. Sessions/Users - ключевая метрика, показывающая как часто юзер пользуется нашим поисковиком. Надо максимизировать.
  3. Distinct Queries/Sessions - число запросов на сессию, метрика, которую надо минимизировать. Если мерить ее просто в лоб, то уменьшение на самом деле может значить, что человек не нашел нужное с первых запросов и ушел. Поэтому важно всегда минимизировать ее при условии, что человек получил, что искал.

А еще лучше все считать не по сессии, а по задаче (например, человек ищет новую серию сериала), т.к. в одной сессии могут быть несколько задач. Но это в общем случае не тривиально.

Некорректный трекинг

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

Confirmation Bias

В первые дни эксперимента с новой фичей разработчики видят следующий тренд в метрике: она сначала слегка негативная, а потом в течение нескольких дней эксперимента линейно приближается к нулю. Типичное объяснение такого поведения - пользователи сначала удивились и запутались, а потом начали знакомится с фичей и активно ей пользоваться и если экстраполировать тренд, то через несколько дней результат будет позитивный. Но это объяснение не верно. Почти для всех метрик стандартное отклонение пропорционально $1/\sqrt{n}$, если построить доверительный интервал по времени для случая нулевого эффекта, он будет вокруг нуля и с каждым днем сжиматься с увеличением n. Поэтому данный тренд вызван уменьшением доверительного интервала и, скорее всего, если мы будем продолжать эксперимент, результат будет всегда около 0. Опасайтесь confirmation bias’а - желание увидеть позитивный результат там, где его нет. Поведение, когда по метрикам сначала негативный результат, а потом все стало хорошо, встречается очень редко.

Доверительные интервалы не уменьшаются

Для некоторых метрик, например, Sessions/User (кажется, это справедливо и для большинства кумулятивных метрик) доверительные интервалы не уменьшаются с течением времени, хотя размер семпла растет. Это связано с тем, что для таких метрик с течением времени стандартное отклонение будет расти быстрее, чем среднее значение. Для метрики Sessions/Users это происходит в том числе и из-за появления новых кук, у которых мало сессий, они будут растягивать стандартное отклонение.

Перенос эффекта

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

Rodion's blog

put it on the cloud and kill it with fire
Tags
Connect