Зачем нужна метрика для стратификации
Что проверяют
Понимаете ли вы, зачем в A/B-тестах пользователей делят на страты и по какому признаку это делать. Интервьюер ждёт связи с дисперсией: удачный признак уменьшает шум, и тот же эффект виден на меньшей выборке. Следом спрашивают про CUPED и можно ли стратифицировать по данным, собранным во время теста.
Как отвечать
Стратификация делит выборку на однородные группы по признаку, известному заранее: платформа, регион, новый или старый пользователь, траты до теста. Эффект оценивают внутри страт и складывают с весами:
- стратифицированное среднее:
Σ w_k · mean_k, гдеw_kэто доля страты в генеральной совокупности; - выигрыш в дисперсии: общая дисперсия метрики раскладывается на внутригрупповую и межгрупповую. Стратификация убирает межгрупповую часть, поэтому выигрыш тем больше, чем сильнее различаются средние целевой метрики между стратами;
- два способа: стратифицированное распределение при запуске, чтобы в контроле и тесте была одинаковая доля каждой страты, или постстратификация на этапе анализа.
Отсюда ответ: признак нужен, чтобы объяснить часть разброса целевой метрики. Требований три: он сильно связан с метрикой, измерен до эксперимента и не зависит от воздействия. Если связи нет, дисперсия не уменьшится, только расчёт станет сложнее.
Продолжение темы это CUPED: вместо дискретных страт берут непрерывную ковариату, обычно ту же метрику за период до теста, и дисперсия умножается на (1-ρ²), где ρ это корреляция между периодами.
В ML то же слово значит другое: train_test_split(stratify=y) и StratifiedKFold сохраняют долю классов в каждой части выборки. Если контекст неясен, уточните его.
Где спотыкаются
Стратифицируют по признаку, который меняется от самого эксперимента, например по активности за время теста. Это вносит смещение, и оценка эффекта становится неверной.
Делают слишком мелкие страты. На десятках пользователей среднее внутри страты шумное, и выигрыш съедается.
Распределяют по стратам, а считают обычный t-тест по всей группе. Оценка корректная, но консервативная, и смысл стратификации теряется: дисперсию нужно считать по стратифицированной формуле.