# A/B-тесты и продуктовые метрики

> Оффлайн-метрики выросли — но выиграет ли от этого продукт? Единственный честный способ узнать — контролируемый эксперимент на живых пользователях. Здесь — как его спроектировать и не обмануть самого себя статистикой.

Раздел: [Продакшн и качество](https://ml-book.com/s/production/) · Страница темы: https://ml-book.com/t/ab-testing/ · Обновлено: 2026-09-16 · Источник: ml-book.com, учебник делается сообществом

## Интуиция

Новая модель рекомендаций подняла NDCG на 3% на исторических данных. Радоваться рано: оффлайн ≠ онлайн. Исторические данные собраны под старой моделью; новая изменит поведение пользователей — а значит и сами данные. Прокси-метрика (NDCG, accuracy) — не бизнес-метрика (выручка, удержание): связь между ними бывает слабой и даже обратной. Поэтому запускаем A/B-тест: случайно делим пользователей на контроль (A, старая версия) и тест (B, новая) и сравниваем метрики. Случайность рандомизации гарантирует, что группы отличаются только версией продукта — любое различие в метриках можно приписать изменению, а не «в группе B случайно оказались активные».

## Дизайн эксперимента

- **Гипотеза заранее:** «новая модель поднимет конверсию в покупку минимум на 1%» — а не «запустим и посмотрим, что вырастет».
- **Единица рандомизации (randomization unit):** обычно пользователь, а не сессия или запрос — иначе один человек увидит обе версии, и эффекты смешаются.
- **Одна метрика решения (decision metric)** плюс guardrail-метрики — «предохранители», которые не должны просесть: латентность, жалобы, отток. Рост конверсии за счёт удвоившейся задержки — не победа.
- **Длительность и размер выборки — заранее,** из расчёта мощности. Правило большого пальца для нужного числа пользователей на группу:

`n ≈ 16 × σ² / Δ²`

где Δ — минимальный эффект, который хотим поймать, а σ² — дисперсия метрики. Ключевое следствие: выборка растёт как 1/Δ² — эффект вдвое меньше требует вчетверо больше пользователей.

## Минимум статистики без зауми

Нулевая гипотеза (null hypothesis, H_0): «разницы между A и B нет». **[P-value](https://ml-book.com/t/p-value/)** — вероятность увидеть такую или ещё более экстремальную разницу, *если H_0 верна*. Это НЕ «вероятность, что H_0 верна» и не «вероятность ошибки» — частая ловушка на собеседовании. При пороге α = 0.05 мы согласны в 5% случаев кричать «эффект есть!», когда его нет (ложное срабатывание, ошибка I рода).

**Мощность (power)** — вероятность обнаружить эффект, когда он действительно есть (обычно целятся в 80%). Маленькая выборка + маленький эффект = низкая мощность: реальное улучшение утонет в шуме. **[Доверительный интервал](https://ml-book.com/t/confidence-intervals/) (confidence interval)** полезнее точечной оценки: «+1.2% [−0.3%; +2.7%]» честно показывает, что результат совместим и с нулём, и с большим ростом — точка «+1.2%» создаёт ложную уверенность.

> **💡 Ключевая мысль**
>
> A/B-тест — измерительный прибор с ограниченной разрешающей способностью. До запуска посчитай, какой минимальный эффект он способен разглядеть при твоём трафике, — иначе получишь «незначимо», которое означает не «эффекта нет», а «прибор слепой».

> 🎛 Интерактивная визуализация — на странице темы: https://ml-book.com/t/ab-testing/

## Смертные грехи экспериментатора

- **Подглядывание (peeking).** Проверять p-value каждый день и останавливать тест при первом p < 0.05 — значит многократно бросать монетку до удобного результата: реальная доля ложных срабатываний вырастает с 5% до десятков процентов. Длительность фиксируется до запуска (или используются честные последовательные методы).
- **Множественные сравнения.** Смотришь 20 метрик — одна окажется «значимой» чисто случайно. Поэтому метрика решения одна, остальные — с поправками или как сигналы для новых гипотез.
- **Пропущенная SRM-проверка (sample ratio mismatch).** Ждали деление 50/50, получили 52/48 — рандомизация сломана (баг трекинга, фильтрация ботов в одной группе), и результатам верить нельзя, каким бы красивым ни было p-value.

## A/B для ML-систем

Сравнение двух моделей — тот же эксперимент: модель A против модели B, метрика решения продуктовая, guardrail — латентность и стоимость инференса. Перед A/B новую модель полезно прогнать в shadow-режиме (см. [мониторинг](https://ml-book.com/t/monitoring-drift/)). Для ранжирования есть более чувствительный инструмент — интерливинг (interleaving): результаты двух ранкеров перемешиваются в одну выдачу, и по кликам видно, чьи документы предпочитают. Каждый пользователь сравнивает обе модели сразу, поэтому эффект ловится на порядки меньшем трафике.

> **⚠️ Подводный камень**
>
> Статистическая значимость ≠ практическая важность. На выборке в 10 млн пользователей «значимым» станет прирост в 0.01%, который не окупит и серверов для новой модели. Смотри на размер эффекта и доверительный интервал, а не только на p < 0.05 — и заранее договорись, какой минимальный прирост вообще стоит внедрения.

> **🎤 На собеседовании**
>
> - «Что такое p-value?» — вероятность получить такой или более экстремальный результат при верной H_0. Не вероятность, что H_0 верна — за эту формулировку снимают баллы.
> - «Оффлайн-метрика выросла, онлайн — нет. Почему?» — оффлайн-данные собраны под старой моделью, прокси-метрика ≠ бизнес-метрика, сдвиг поведения пользователей.
> - «Почему нельзя останавливать тест при первом p < 0.05?» — peeking раздувает ошибку I рода; длительность фиксируется заранее.
> - «Тест не показал значимости — эффекта нет?» — не обязательно: возможно, не хватило мощности. Смотрим доверительный интервал и расчёт размера выборки.

## Связанные темы

- [P-value и проверка гипотез](https://ml-book.com/t/p-value/)
- [Доверительные интервалы](https://ml-book.com/t/confidence-intervals/)
- [Мониторинг и дрифт данных](https://ml-book.com/t/monitoring-drift/)
- [Дизайн ML-систем на собеседовании](https://ml-book.com/t/ml-system-design/)

---

Интерактив, тест из 12 вопросов и карточки терминов — на странице темы: https://ml-book.com/t/ab-testing/
Весь учебник в markdown: https://ml-book.com/llms-full.txt · Оглавление для агентов: https://ml-book.com/llms.txt
