Перейти к содержанию
Innovialabs

Многорукий бандит или A/B-тест: что и когда использовать

Продвинутое4 мин

Коротко

Многорукий бандит подходит, когда нужно заработать максимум за короткий тест (акции, заголовки, креативы); классический A/B-тест — когда нужен надёжный ответ, какой вариант лучше и насколько.

Коротко

A/B-тест и многорукий бандит решают разные задачи.

  • A/B-тест делит трафик в фиксированных пропорциях до самого конца, а затем говорит, какой вариант лучше и насколько можно доверять результату. Его цель — узнать.
  • Бандит постоянно сдвигает трафик к варианту, который сейчас работает лучше. Его цель — заработать прямо во время теста.

Если результат определяет долгосрочное решение, запускайте A/B-тест. Если окно короткое и каждая потерянная конверсия стоит денег, бандит обычно уместнее.

Компромисс «исследование — использование»

Название пришло из задачи об игроке перед несколькими игровыми автоматами («однорукими бандитами») с неизвестной отдачей. Каждый раз нужно выбирать:

  • Explore (исследовать) — дёрнуть автомат, о котором мало известно, чтобы узнать его отдачу.
  • Exploit (использовать) — дёрнуть тот, что пока выглядит лучшим, и забрать выигрыш.

Только исследование тратит деньги на плохие автоматы. Только использование рискует закрепить лидера, которому просто повезло в начале. Классический A/B-тест — это чистое исследование, а потом чистое использование: равный сплит до конца, затем 100% победителю. Бандит смешивает оба режима непрерывно.

Как бандит перераспределяет трафик

Три распространённых подхода — от простого к более адаптивному:

АлгоритмКак выбираетКомпромисс
Epsilon-greedyНебольшую фиксированную долю трафика (epsilon) отдаёт случайным вариантам, остальное — текущему лидеруПросто, но продолжает тратить ту же долю на явно плохие варианты
UCB (Upper Confidence Bound)Выбирает вариант с самой высокой оптимистичной оценкой: наблюдаемая конверсия плюс бонус за неопределённостьДетерминирован, исследует меньше по мере накопления данных
Thompson samplingДля каждого варианта берёт правдоподобную конверсию из апостериорного распределения и показывает вариант с максимальным значениемИсследует пропорционально неопределённости; часто используется на практике

Минимальный шаг Thompson sampling для конверсий:

import random

def choose(arms):
    # arms: {"A": {"conv": 30, "views": 1000}, "B": {...}}
    draws = {
        name: random.betavariate(1 + a["conv"], 1 + a["views"] - a["conv"])
        for name, a in arms.items()
    }
    return max(draws, key=draws.get)

Чем больше данных говорит в пользу варианта, тем чаще он выигрывает розыгрыш и тем больше трафика получает — автоматически.

Где бандит лучше A/B-теста

  • Короткие акции. У распродажи на выходные или праздничного баннера нет «после теста» — возможность заканчивается вместе с кампанией. Ждать статистической значимости — значит потерять большую часть окна.
  • Заголовки и обложки. Медиа и контентные сайты тестируют много заголовков с коротким сроком жизни. Бандит быстро сосредоточит трафик на сильнейшем.
  • Рекламные креативы. Рекламные платформы и так ротируют креативы адаптивно; та же логика работает, когда ротацией управляете вы.
  • Много вариантов. При пяти-десяти вариантах равный сплит тратит много трафика на очевидных аутсайдеров. Бандит быстро их отсекает.
  • Постоянная оптимизация. Блоки рекомендаций или темы писем, где «лучший» вариант со временем меняется.

Почему бандит хуже для оценки причинного эффекта

Бандит максимизирует результат, а не знание. У этого есть цена:

  • Неравные выборки. Проигрывающие варианты получают мало трафика, их оценки остаются шумными. Вы знаете, что победитель вероятно лучше, но не знаете насколько.
  • Смещённые оценки. Распределение зависит от прошлых результатов, поэтому «наивные» конверсии по вариантам смещены. Обычные t-тесты и доверительные интервалы напрямую не применимы.
  • Подмешиваются эффекты времени. Если лидер получает основной трафик в выходные, а остальные — в будни, эффект дня недели может выглядеть как эффект варианта.
  • Отложенные конверсии ломают логику. Если покупка происходит через несколько дней после клика, алгоритм перераспределяет трафик по неполным данным.
  • Вторичные метрики трудно читать. Сравнивать удержание, возвраты или средний чек при перекошенных выборках ненадёжно.

Для продуктовых изменений, цен, редизайна оформления заказа и всего, что останется на месяцы, эти слабости важнее конверсий, сэкономленных во время теста.

Как выбрать

Ответьте на четыре вопроса:

  1. Решение будет жить долго после теста? Да — A/B-тест. Нет — рассмотрите бандит.
  2. Нужен размер эффекта для бизнес-обоснования или прогноза? Да — A/B-тест.
  3. Обратная связь быстрая (клики, регистрации в рамках сессии)? Бандиту нужны быстрые награды.
  4. Сколько вариантов? Много вариантов при ограниченном трафике — аргумент за бандит.

Частая гибридная схема: бандитом отсеять много креативов, а затем подтвердить двух лучших полноценным A/B-тестом перед долгосрочным внедрением.

Частые ошибки

  • Запустить бандит, а потом отчитаться «вариант B поднял конверсию на X%», как будто это результат A/B-теста.
  • Оптимизировать клики, когда настоящая цель — выручка: бандит охотно найдёт кликбейт.
  • Использовать бандит для метрики с большой задержкой.
  • Настроить epsilon или априорные значения так агрессивно, что алгоритм выбирает победителя после нескольких конверсий.
  • Не следить за контрольными метриками — отказами, возвратами.

Частые вопросы

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

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.