Определяем оптимальный размер групп при множественном тестировании

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

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

Меня зовут Саша, я работаю Head of DA/DS в X5 Tech. Мы с Колей продолжаем писать серию статей по А/Б тестированию, это наша пятая статья. Первые четыре можно посмотреть тут:

  1. Стратификация. Как разбиение выборки повышает чувствительность А/Б теста

  2. Бутстреп и А/Б тестирование

  3. Проверка корректности А/Б тестов

  4. А/Б тесты с метрикой отношения. Дельта-метод

Предположим, что мы проводим множество независимых А/Б тестов, тогда типичный способ разделения пользователей на группы выглядит следующим образом:

A1

B1

A2

B2

A3

B3

A4

B4

При этом после окончания экспериментов мы будем сравнивать A_i с B_iсоответственно. Пользователи контрольных групп не подвержены влияниям экспериментов, их поведение не должно отличаться друг от друга, поэтому их можно объединить в общую контрольную группу:

A

B1

B2

B3

B4

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

Пусть у нас есть N пользователей, 1 контрольная группа, k экспериментальных групп. Положим, размер контрольной группы равен n, а размеры экспериментальных групп равны и равны m. Решается задача о нахождении оптимальных значений n и m:

A

B1

...

...

Bk

Соответствующие размеры групп:

n

m

...

...

m

Чтобы решить данную задачу, нам нужно определиться с терминами, а именно: что означает "оптимальное" разбиение? Так как мы говорим про А/Б тестирование, то наилучшим разбиением будем считать то, которое обеспечивает наименьшую дисперсию статистики. Одной из наиболее часто встречающихся статистик является t-статистика: 

t = \frac{\overline{X} - \overline{Y} }{\sqrt{\frac{\hat{\sigma}_X^2}{n} + \frac{\hat{\sigma}_Y^2}{m}}}

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

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

\frac{1}{n} + \frac{1}{m} \rightarrow \min\limits_{n, m}

Также есть условие регулярности, заключающееся в том, что распределяются все пользователи:

N = n + k * m

Решим данную задачу оптимизации:

Таким образом, если в эксперименте одна экспериментальная группа (k=1), то получаем ожидаемый результат – разбить всех пользователей на две равные группы.

Если же экспериментальных групп k больше, чем одна, то в каждую экспериментальную группу нужно выделить

m=\frac{N}{k+\sqrt{k}}

пользователей, а в контрольную

n = \frac{N}{\sqrt{k}+1}

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

k

n, %

m, %

1

50

50

2

41.4

29.3

3

36.6

21.1

4

33.3

16.7

5

30.9

13.8

10

24.0

7.6

20

18.3

4.1

50

12.4

1.8

100

9.1

0.9

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

  1. Оптимальное разбиение:

A

B1

B2

Bk

n = \frac{N}{\sqrt{k} + 1},~ m = \frac{N}{k+\sqrt{k}}
  1. Равномерное разбиение:

A

B1

B2

Bk

n = m = \dfrac{N}{k+1}
  1. Контрольная группа занимает 50% выборки:

A

B1

B2

Bk

n = \frac{N}{2}, ~m = \frac{N}{2k}

В таблице представлены значения функционала N*\Big(\frac{1}{n} + \frac{1}{m}\Big). Чем меньше, тем лучше. В последнем столбце произведён расчёт, во сколько раз меньший эффект возможно обнаружить при оптимальном разбиении относительно типичного разбиения:

k

Оптимальное разбиение

Равномерное разбиение

50/50

MDE_uniform / MDE_optimal

1

4.0

4

4

1

2

5.8

6

6

1.01

3

7.5

8

8

1.04

4

9.0

10

10

1.05

5

10.5

12

12

1.07

10

17.3

22

22

1.13

20

29.9

42

42

1.18

50

65.1

102

102

1.25

100

121.0

202

202

1.29

Так, если у вас k=10 экспериментальных групп, то при оптимальном разбиении вы бы смогли обнаружить эффект в 1.13 раз меньший, чем при ином типичном разбиении.

Как это неудивительно, при равномерном разбиении и при разбиении 50 на 50 получаются одинаковые результаты.

\frac{1}{n} + \frac{1}{m} \Bigg|_{n = \frac{1}{k+1}; m = \frac{1}{k+1}} = (k + 1) + (k + 1) = 2 +2k = \frac{1}{n} + \frac{1}{m} \Bigg|_{n = \frac{1}{2}; m = \frac{1}{2k}}

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

Источник: https://habr.com/ru/companies/X5Tech/articles/763656/


Интересные статьи

Интересные статьи

Не так давно у меня появился интерес узнать, какие вообще нынче есть подходы и отношения к Юнит тестированию. Сделано это было скорее в познавательных целях. Сравнив труды по популярности, я решил о...
При оценке требований базы данных к оборудованию требуется учет многих факторов. И здесь у Postgres есть одна интересная особенность, которая почти всегда ускользает от внимания разработчиков, потому ...
Ищете вдохновения в области тестирования программного обеспечения? Вашему вниманию список материалов от одних из самых известных экспертов в этой области. Насладитесь 14 ...
На online-митапе «LoGeek Night Automotive» можно будет послушать и обсудить три доклада: Automotive Software introduction. Специфика области и разработки Luxoft Automotive Testi...
Я прослушал книгу "Культурный код" Даниела Койла ("The Culture Code: The Secrets of Highly Successful Groups" by Daniel Coyle) после прочтения отрывка, который оставил впечатл...