Data Science
Experimentation и A/B Testing
Booking.com проводит 1000+ A/B тестов одновременно. 10% из них показывают значимый результат. Если бы они останавливали каждый при p<0.05 - запустили бы 50 ложных изменений в год. Строгая экспериментальная методология - это то, что отличает data-driven компанию от компании с иллюзией data-driven.
- Netflix: 250+ A/B тестов одновременно. Тест thumbnails изображений показал +25% click-through - но OEC учитывает completion, не только клики
- Airbnb: тест новой формы бронирования на 5% пользователей 4 недели (sequential testing) выявил +3.2% conversion при отсутствии degradation guardrail метрик
- LinkedIn: Multi-Armed Bandit для персонализации email subject lines - Thompson Sampling выбирает заголовок под каждого пользователя, lift +15% CTR
Sample Size: сколько нужно данных для теста
Недостаточный sample size = тест без мощности: не обнаружит реальный эффект (false negative). Избыточный = долго ждать. Power analysis до запуска теста: определить MDE (Minimum Detectable Effect), задать alpha (0.05) и beta (0.2), рассчитать N.
Типичная ошибка: запустить тест, смотреть p-value каждый день, остановить когда p < 0.05. Это p-hacking: при многократных проверках alpha накапливается, false positive rate растёт. Решение: зафиксировать длительность теста до запуска или использовать sequential testing.
Power = 0.8 в A/B тесте означает:
Multi-Armed Bandit: адаптивное тестирование
Классический A/B тест: жёсткое разделение 50/50, ждать полного sample. Multi-armed bandit: адаптивно увеличивать трафик на лучший вариант по ходу теста. Tradeoff: exploration (изучение вариантов) vs exploitation (использование лучшего). Алгоритмы: epsilon-greedy, Thompson sampling, UCB.
Thompson Sampling в production: Google AdSense, Microsoft Azure, Netflix используют MAB для оптимизации контента. Преимущество перед A/B: меньше потерь от 'плохого' варианта (regret minimization). Недостаток: сложнее статистически доказать победителя для stakeholders привыкших к p-value.
Главное преимущество Multi-Armed Bandit перед классическим A/B тестом:
Sequential Testing: безопасный early stopping
Sequential testing позволяет смотреть на результаты в процессе и останавливать тест досрочно при сильном сигнале - без p-hacking. Методы: Sequential Probability Ratio Test (SPRT), mSPRT, Always Valid Inference. Используется Optimizely, VWO.
Почему проверка p-value каждый день и остановка при p<0.05 - это p-hacking?
Metric Design: выбор правильной метрики эксперимента
Goodhart's Law: 'Когда метрика становится целью, она перестаёт быть хорошей метрикой'. Метрика должна быть sensitive (улавливает изменения), measurable (быстро считается), aligned (коррелирует с бизнес-ценностью). OEC (Overall Evaluation Criterion) - композитная метрика при конфликте.
Netflix OEC: hours watched per member - изменился после анализа что completion rate > 85% = engagement, но completion 100% = boring short content. LinkedIn North Star: sessions per member оказался ложной метрикой - fake/spam постили много. Заменили на professional connections made. Выбор метрики - стратегическое решение.
Зачем нужны guardrail метрики в A/B тесте помимо основной?
Ключевые идеи
- Power analysis до запуска: MDE + alpha + power = sample size. Фиксировать длительность теста до старта.
- Multi-Armed Bandit: адаптивная аллокация трафика - меньше regret, сложнее объяснить stakeholders.
- Metric design: guardrail метрики защищают от побед 'за счёт'; OEC объединяет конфликтующие цели.
Связанные темы
Экспериментирование - часть полного data science workflow:
- Data Science Case Studies — A/B тестирование - стандартный инструмент в product analytics case studies на собеседовании
- ML Pipeline: от notebook к production — Feature flags + MLflow experiments - основа для online A/B тестирования ML моделей в production
Вопросы для размышления
- Как проводить A/B тест если разные пользователи видят разные версии и взаимодействуют друг с другом (marketplace, social)?
- Когда имеет смысл запускать тест с 10% трафика вместо 50/50 несмотря на более долгое время?
- Как Goodhart's Law применяется к метрике 'ежедневные активные пользователи' для мессенджера?