Перейти к основному содержимому

CUPED

CUPED (Controlled-experiment Using Pre-Experiment Data) - метод снижения дисперсии в A/B-тестах. Он использует значение той же метрики до старта эксперимента как ковариату и вычитает из экспериментальной метрики предсказуемую часть шума.

В результате p-value и доверительные интервалы считаются по скорректированной статистике. Если метрика в предпериоде хорошо коррелирует с метрикой в эксперименте, тест становится чувствительнее - при том же трафике можно увидеть меньший эффект.

Когда применяется

CUPED рассчитывается автоматически, без дополнительных настроек, если эксперимент удовлетворяет условиям:

  • Метрика входит в Целевые показатели. CUPED применяется только к ключевым метрикам. Остальные метрики отчета отображаются без CUPED-коррекции.
  • Плановая длительность не превышает 28 дней. Если эксперимент запланирован на срок дольше 28 дней, CUPED для него не рассчитывается.

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

Ковариата

Ковариата - это значение той же метрики, посчитанное до запуска эксперимента.

Период ковариаты равен плановой длительности эксперимента и заканчивается за день до старта. Например, если эксперимент рассчитан на 14 дней и стартует 15 апреля, ковариата считается за 1-14 апреля.

Участники ковариаты - все пользователи, попавшие в эксперимент, без учета флага exposed.

Оценка корреляции выполняется на агрегированных данных по бакетам. Это позволяет считать поправочный коэффициент на больших объемах данных. Теоретические детали подхода - в статье arXiv:2108.02668.

Идея расчета

Для наблюдаемой метрики YY и ковариаты XX CUPED строит скорректированную метрику:

Ycuped=YθXY_{cuped} = Y - \theta X

Коэффициент θ\theta выбирается так, чтобы минимизировать дисперсию скорректированной метрики:

θ=Cov(Y,X)Var(X)\theta = \frac{\operatorname{Cov}(Y, X)}{\operatorname{Var}(X)}

После коррекции дисперсия становится:

Var(Ycuped)=Var(Y)Cov(Y,X)2Var(X)\operatorname{Var}(Y_{cuped}) = \operatorname{Var}(Y) - \frac{\operatorname{Cov}(Y, X)^2}{\operatorname{Var}(X)}

Чем выше корреляция между предпериодом и экспериментальным периодом, тем сильнее сокращается дисперсия. Если корреляции почти нет, θ\theta близок к нулю и результат почти не отличается от обычного расчета.

Для ratio-метрик дисперсия и ковариация считаются дельта-методом. Например, для отношения R=Num/DenR = Num / Den:

Var(R)=1μden2Var(Num)2μnumμden3Cov(Num,Den)+μnum2μden4Var(Den)\operatorname{Var}(R) = \frac{1}{\mu_{den}^2} \operatorname{Var}(Num) - \frac{2\mu_{num}}{\mu_{den}^3} \operatorname{Cov}(Num, Den) + \frac{\mu_{num}^2}{\mu_{den}^4} \operatorname{Var}(Den)

Ковариация между ratio в экспериментальном периоде и ratio в предпериоде считается аналогично, через ковариации компонент. Затем используется тот же принцип:

θratio=Cov(Rexperiment,Rpre)Var(Rpre)\theta_{ratio} = \frac{\operatorname{Cov}(R_{experiment}, R_{pre})}{\operatorname{Var}(R_{pre})}

Что корректируется в Trisigma

В реализации Trisigma CUPED считается для метрик (t-stat, MoE в отчете) и их компонент (значимость Num и Den).

Скорректированная значимость

Для каждой пары тест-контроль Trisigma считает t-статистику по CUPED-скорректированной разнице:

tcuped=(YˉTYˉC)θ(XˉTXˉC)Varcupedt_{cuped} = \frac{ (\bar{Y}_T - \bar{Y}_C) - \theta(\bar{X}_T - \bar{X}_C) }{ \sqrt{\operatorname{Var}_{cuped}} }

В реализации дисперсия берется по обеим группам:

Varcuped=VarT(Y)+VarC(Y)2θ(CovT(Y,X)+CovC(Y,X))+θ2(VarT(X)+VarC(X))\operatorname{Var}_{cuped} = \operatorname{Var}_T(Y) + \operatorname{Var}_C(Y) - 2\theta\left(\operatorname{Cov}_T(Y, X) + \operatorname{Cov}_C(Y, X)\right) + \theta^2\left(\operatorname{Var}_T(X) + \operatorname{Var}_C(X)\right)

Как использовать в отчете

В фильтрах отчета есть переключатель CUPED. При его включении метрики из Целевых показателей отображаются со скорректированными статистиками (t-stat) вместо стандартных. Значения uplift, num и den не меняются.

Переключатель CUPED в фильтрах отчета

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

Что важно помнить

  • CUPED уменьшает шум, но не исправляет проблемы дизайна эксперимента: перекос трафика, неверную разметку или изменение правил остановки.
  • Предпериод фиксируется на старте и не меняется по ходу эксперимента.
  • Метод особенно полезен для метрик с заметной пользовательской стабильностью - например, когда активность пользователя до эксперимента хорошо предсказывает активность во время эксперимента.
  • Для редких или слабо коррелирующих метрик эффект от CUPED может быть небольшим либо вовсе отсутствовать.