Holdouts (Холдауты)
О возможностях
Определение
Holdout (холдаут) – это псевдо-эксперимент, раскатанный на небольшом траффике, на который не действуют никакие эксперименты, кроме него самого. В холдауте не подразумевается делать какие-либо изменения. Можно воспринимать холдаут как одну большую контрольную группу для всех привязанных экспериментов.
Механизм работы схож с концепцией слоёв (layers), но имеет следующую иерархию: Холдаут → Слой → Эксперимент.
Основное преимущество холдаутов перед слоями заключается в возможности оценки чистого эффекта от всех A/B-тестов на метрике. Это достигается за счёт того, что часть пользователей попадает в холдаут-группу (контрольную), а часть — в экспериментальные группы. Таким образом, пользователи из холдаут группы и экспериментальных групп никак не пересекаются.
Мотивация и use-cases
В качестве примера применения холдаутов можно привести следующие кейсы:
- Квартальное/годовое оценивание вклада A/B-тестов в общую экономику
 - Возможность оценивания аддитивного и мультипликативного эффекта (т.е. индивидуальных и “грязных” эффектов от множества экспериментов) по какой-либо фиче на сайте или в приложении
 
Иерархия распределения траффика
Схема
На схеме показано как определяется пользователь в эксперимент и холдаут. На ней можно заметить, что холдаут имеет приоритет выше над слоями и настройками эксперимента.
К примеру, если пользователь был записан в “Принудительный список холдаута”, то дальнейшие правила в цепочке игнорируются.
Как использовать Holdout'ы
Создание Holdout'а в интерфейсе Sigma
- Перейдите в раздел Холдауты и нажать Создать
 - Определить необходимые настройки (Тип идентификатора, Платформа и т.п.)
 - Выбрать э ксперименты, которые будут взаимодействовать с холдаутом во вкладке “Включенные эксперименты”
 - Запустить холдаут
 
Технические детали и ограничения
- Группы: нельзя создавать. Всегда только одна группа
 - Аллокация: Можно выбрать любое значение от 0% до 100%
 - Тип единицы рандомизации (тип идентификатора): аналогичный другим экспериментам (profileid, userid, deviceid). Нельзя использовать разные типы идентификаторов у экспериментов и холдаута. Типы идентификаторов всегда должны быть одинаковыми.
 - Платформа: Нельзя определять эксперименты в холдаут, если у них выбраны разные платформы. Исключением является тип ALL (Все платформы).
 - Подключение к слоям: Слои не поддерживаются в холдауте
 - Фича-флаги: Фича-флаги пока не поддерживаются. Только в эксперименте.
 - Целевые аудитории: Поддерживаются аналогично другим экспериментам
 - Запуск и остановка: Аналогично другим экспериментам. При остановке холдаута с активными экспериментами показывается предупреждение, действие не блокируется.
 - Принудительные списки: Если пользователь включен в эксперименты и в холдаут, приоритет будет у холдаута.
 
Совмещение экспериментов и холдаутов: анализ на примере данных из Sigma
Запуская эксперименты и холдауты в Sigma, вы получаете удобную отправную точку для анализа данных и оценки влияния изменений. Рассмотрим типичный пример:
Допустим, у вас запущено:
- 2 эксперимента, привязанных к одному холдауту (например, 
exp_1иexp_2); - 1 эксперимент, который не привязан к холдауту (
exp_3). 
Итого: 3 эксперимента и 1 холдаут.
Исходные данные: структура таблицы
В Sigma таблица с пользователями может выглядеть так (если вы использовали метода
sigma.getAllUserExperiments()):
| userId | experiments | 
| 1 | exp_1.0|exp_2.0|exp_3.1 | 
| 2 | exp_1.1|exp_2.0|exp_3.0 | 
| 3 | holdout_1|exp_3.1 | 
| 4 | exp_1.1|exp_2.1 | 
| 5 | holdout_1 | 
Каждое значение exp_X.Y означает, что пользователь участвует в эксперименте X и находится в
группе Y, где 0 — контрольная группа, 1 — тестовая.