← Назад к вопросам

Что такое multi-armed bandit и когда его использовать вместо A/B теста?

2.2 Middle🔥 111 комментариев
#A/B тестирование#Machine Learning

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Ответ: Multi-Armed Bandit и его применение

Что такое Multi-Armed Bandit

Multi-Armed Bandit (MAB) — это математическая модель из теории вероятностей и статистики, которая решает проблему выбора между несколькими вариантами ("рукавами игровых автоматов") с целью максимизировать общее вознаграждение при неполной информации.

Название происходит из аналогии с игроком перед несколькими игровыми автоматами, каждый из которых имеет неизвестную вероятность выигрыша. Игрок должен решить, какой автомат использовать, чтобы максимизировать прибыль.

Как работает MAB

Основная дилемма: Exploration vs Exploitation

  • Exploration — исследование, проверка новых вариантов, чтобы получить информацию об их эффективности
  • Exploitation — использование известного лучшего варианта для максимизации текущего вознаграждения

МАВ автоматически находит оптимальный баланс между этими двумя стратегиями.

Популярные алгоритмы MAB

1. Epsilon-Greedy

С вероятностью ε выбирает случайный вариант (exploration), с вероятностью (1-ε) выбирает лучший (exploitation).

import numpy as np

class EpsilonGreedy:
    def __init__(self, n_arms, epsilon=0.1):
        self.n_arms = n_arms
        self.epsilon = epsilon
        self.counts = np.zeros(n_arms)
        self.values = np.zeros(n_arms)
    
    def select_arm(self):
        if np.random.random() < self.epsilon:
            return np.random.randint(self.n_arms)  # Explore
        else:
            return np.argmax(self.values)  # Exploit
    
    def update(self, arm, reward):
        self.counts[arm] += 1
        self.values[arm] += (reward - self.values[arm]) / self.counts[arm]

2. Thompson Sampling (Байесовский подход)

Использует вероятностное распределение для каждого варианта, выбирая стохастически.

3. UCB (Upper Confidence Bound)

Выбирает вариант с максимальной верхней границей доверительного интервала.

import math

class UCB:
    def select_arm(self, t):
        ucb_values = self.values + math.sqrt(math.log(t) / (self.counts + 1e-10))
        return np.argmax(ucb_values)

Когда использовать MAB вместо A/B теста

A/B тест — традиционный подход:

  • Фиксированное распределение трафика (50/50 или другое)
  • Проверяет гипотезу (победитель/проигравший) в конце эксперимента
  • Может потерять много конверсий, отправляя трафик на плохой вариант
  • Требует больше времени и трафика
  • Например: 50% трафика на A, 50% на B — даже если B явно хуже

MAB — адаптивный подход:

  • Динамическое распределение — больше трафика идёт на хороший вариант
  • Быстрая конвергенция — минимизирует потери на плохих вариантах
  • Непрерывное обучение — не требует ждать конца периода
  • Требует меньше трафика и времени
  • Например: если вариант B хуже, трафик распределяется как 20% B и 80% A

Практические примеры использования

Рекомендуется MAB:

  • Оптимизация рекомендаций на главной (выбор между 3-5 вариантами макетов)
  • Оптимизация push-уведомлений (выбор между разными текстами)
  • Выбор цены для вновь добавленного товара
  • A/B/n тесты с большим количеством вариантов (>2)
  • Когда потери от плохого варианта критичны (потеря доходов, отток пользователей)

Рекомендуется A/B тест:

  • Проверка принципиально новых гипотез (дизайн переделка)
  • Когда нужна статистическая значимость и чистая результат
  • Долгосрочные, стратегические решения
  • Когда трафика достаточно, а скорость не критична

Сравнительная таблица

КритерийA/B тестMAB
Распределение трафикаФиксированноеАдаптивное
Скорость сходимостиМедленнаяБыстрая
Потери на плохых вариантахВысокиеНизкие
Количество вариантов22+ (лучше 3+)
Требуемый трафикБольшойМеньше
Статистическая строгостьВысокаяНиже

Выводы

МАВ — это не замена A/B тестам, а дополнение. Используй MAB когда:

  1. Много вариантов для выбора
  2. Потери от плохого варианта критичны
  3. Нужна быстрая оптимизация
  4. Трафика или времени на тест недостаточно

Для стратегических решений и подтверждения гипотез всё равно нужны A/B тесты с правильной статистикой.

Что такое multi-armed bandit и когда его использовать вместо A/B теста? | PrepBro