Онлайн-оценка: A/B и off-policy (Фаза 14)
Весь учебник упирался в потолок офлайн-метрик — здесь живёт финальный судья. A/B: рандомизация, шум против истины, цена маленьких эффектов, дисциплина остановки, interleaving. Off-policy: оценить новую политику по чужим логам — DM / IPS / SNIPS / DR против точной истины, и что именно ломается, когда нет exploration и propensities.
⚠ Секции 1–5 — синтетический симулятор с известной истиной: у каждого пользователя есть сегмент вкуса, и p(клик | показан айтем) задана точно. Это осознанно: только так видно, какой оценщик сходится к истине, а какой врёт. Числа иллюстрируют механику методов, а не какой-либо реальный продукт. Секция 6 — наоборот, живой замер на реальных моделях этого сервиса.
1 · A/B-эксперимент: шумная оценка против точной истины
Контроль — «глобальный топ всем», тритмент — персонализация по сегменту вкуса. Симулятор знает истинный эффект, поэтому видно то, что в реальном A/B скрыто: насколько измеренный uplift пляшет вокруг истины и когда z-тесту хватает выборки.
загрузка A/A-симуляции…
3 · Сколько пользователей нужно: MDE-таблица
Обратная сторона шума из §1: чем меньше эффект, который хочется поймать (MDE — minimal detectable effect), тем квадратично больше выборка. Это главный планировочный расчёт до запуска теста (α=0.05, мощность 80%).
4 · Interleaving: чувствительная альтернатива для ранжирований
Team-draft: обе политики по очереди «драфтят» айтемы в одну выдачу, клики атрибутируются команде-владельцу, по каждому пользователю определяется победитель. Каждый пользователь видит обе системы сразу — поэтому обычно хватает заметно меньшей выборки, чем A/B.
5 · Off-policy: оценить новую политику по чужим логам
Логи пишет ε-greedy «глобальный топ» (propensities известны по построению — мы сами контролируем рандомизацию). Вопрос: чему равна ценность персональной политики, не запуская её? Четыре оценщика против точной истины, 30 повторов → среднее ± разброс.
6 · accuracy ≠ бизнес-метрика: на наших реальных моделях
Финальный аргумент — не из симулятора, а из этого сервиса: все 7 моделей учебника, офлайн-accuracy рядом с прокси того, что видит бизнес. Лучшее значение каждой колонки подсвечено — и лидеры не совпадают.
Теория простым языком
Офлайн-метрики отвечают «похожа ли модель на прошлое», и весь учебник мы честно упирались в их потолок. Финальный судья — онлайн: рандомизированный эксперимент. А когда эксперимент дорог или невозможен — off-policy оценка по логам, у которой есть жёсткие предусловия.
▸Зачем A/B и off-policy, если есть офлайн-метрики
A/B: почему рандомизация, и что мешает
Сравнивать «до/после» или «кто сам включил фичу» нельзя — эти группы различаются не только политикой (сезонность, self-selection). Случайное назначение веток разрывает все такие связи: единственное систематическое различие между A и B — сама политика. Дальше остаётся статистика: эффект против шума (§1 лаборатории), план выборки под MDE (§3), и дисциплина остановки (§2 — подглядывание). Практика зрелых платформ: north-star + guardrails (E2), недельные циклы (сезонность дней), учёт novelty-эффекта (первые дни любая новизна кликается лучше), и снижение дисперсии типа CUPED (ковариата = поведение пользователя до эксперимента).
Off-policy: оценить политику, не запуская её
Ценность политики — ожидание награды при её действиях. Логи писала другая политика , но если она рандомизировала и мы знаем вероятности её действий (propensities), ожидание можно переписать:
▸Формулы: IPS, SNIPS, DM, DR
Несмещённо, пока везде, где (support). Дисперсия взрывается, когда target выбирает то, что логирующая политика показывала редко — веса становятся огромными.
SNIPS нормирует веса — меньше дисперсия, лёгкое смещение. DM подменяет награду моделью — стабильно, но наследует все её ошибки.
Doubly Robust комбинирует reward-модель и IPS-поправку: при наличии support он состоятелен, если корректно специфицирована хотя бы одна из двух частей — модель наград или propensities. На практике finite-sample поведение зависит от обеих, а без support DR не спасает (в §5 при ε=0 он оседает рядом с DM). Дисперсия ниже IPS, потому что веса умножаются на остатки, а не на сырые награды. Важно: обучают кросс-фиттингом или на отдельных данных — насыщенная модель, обученная на том же логе, зануляет поправку и DR вырождается в DM.
Предусловия — не мелкий шрифт, а суть (мы упирались в них весь учебник: D2a, B7, E3): propensities должны быть залогированы в момент решения, и в системе должно быть randomized exploration, иначе у новой политики нет support и никакой оценщик не спасёт — §5 лаборатории показывает это ползунком ε→0. К произвольным историческим логам IPS «просто применить» нельзя.
Как это соотносится с остальным учебником
Петля замкнулась: B1 объяснял, что писать в лог (позиции, propensities, ветку эксперимента — колонки experiment_id и model_version в его схеме); B2 и /metrics — потолок офлайна; E2 требовал у каждого дизайна онлайн-стадию; E3 честно её пропустил (нет трафика). Этот модуль — та самая онлайн-стадия: симулятор вместо трафика, зато с точной истиной и контролируемыми propensities — единственный честный способ практиковать механику без продакшена. А §6 замыкает аргумент на реальных моделях сервиса: лидер по NDCG не лидирует ни по одному бизнес-прокси — офлайн-метрики не складываются в одну цифру, и именно поэтому финальное слово за экспериментом.
⚠️ Что может пойти не так
- Останавливать A/B при первом p<0.05 — подглядывание умножает ложные прокрасы (§2); длительность фиксируется до запуска либо используется sequential-дизайн.
- «Не значимо» читать как «эффекта нет» — при малой выборке тест просто слеп (§1); смотри CI и мощность, а не только p-value.
- Запускать тест без расчёта MDE — если детектируемый эффект больше реалистичного, тест не мог ничего найти ещё до старта (§3).
- Считать interleaving заменой A/B — он даёт предпочтение по кликам, но не uplift north-star, guardrails и долгосрочные эффекты (§4).
- Применять IPS к логам без propensities и exploration — оценка молча смещена; SNIPS при нарушенном support выглядит стабильнее лишь потому, что нормализуется на покрытой части логов — это covered-slice estimate, а не ценность полной политики (§5, ε=0).
- Верить DM без проверки reward-модели — он стабилен и уверенно врёт ровно там, где модель слепа (§5: сегментов не видит → персонализацию не ценит).
- Забыть про novelty-эффект и сетевые утечки между ветками (шеринг, инвентарь маркетплейса) — рандомизация по пользователям не изолирует всё.
🧠 Проверь себя: Логи писала детерминированная политика (ε=0). Что честно сказать про IPS-оценку новой политики?
Где это в дорожной карте
Это Фаза 14 — онлайн-оценка, замыкающая senior-ядро (production evaluation + debugging). Дальше по интересу: bandits/RL (Фаза 12) — exploration как часть самой политики, sequential (Фаза 9), multi-task (Фаза 11).