Базовая подготовка данных для МРБ - Быстрый старт: Многорукие бандиты в A/Б тестировании - Qpel.AI

Базовая подготовка данных для МРБ

Вы уже знаете, что такое А/Б-тестирование. Теперь давайте разберёмся, как подготовить данные для многоруких бандитов (МРБ). Это несложно, но требует внимания.

Структура данных для МРБ

Алгоритмы МРБ, такие как Thompson Sampling и UCB, работают с данными в определённом формате. Главное — знать, какая "рука" выбрана и какую "награду" она принесла.

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

  1. Идентификатор сессии/пользователя: Чтобы отслеживать уникальные взаимодействия.
  2. Идентификатор "руки" (варианта): Какой баннер показан (например, banner_A, banner_B, banner_C).
  3. Награда: Произошло ли целевое действие (например, клик). Если награда бинарная, то 1 за успех (клик) и 0 за неудачу (нет клика).

Пример таблицы данных

Вот как это выглядит в таблице:

session_idarm_idrewardtimestamp
1001banner_A02025-03-10 10:05:12
1002banner_B12025-03-10 10:06:30
1003banner_A12025-03-10 10:07:05
1004banner_C02025-03-10 10:08:15
1005banner_B02025-03-10 10:09:01

Важно: Для большинства алгоритмов МРБ, особенно с бинарными наградами, нужны агрегированные данные: сколько раз выбрана каждая "рука" и сколько раз она принесла успех.

Агрегация данных

После сбора необработанных данных их нужно агрегировать. Алгоритмы, вроде Thompson Sampling (с бета-распределением) или UCB, используют суммарные показатели успехов и попыток для каждой "руки".

Для каждой "руки" (arm_id) получите два показателя:

  • successes (успехи): Сколько раз "рука" принесла целевую награду (например, количество кликов).
  • trials (попытки): Сколько раз "рука" была показана/выбрана.

Пример агрегированных данных

Используя данные из примера выше, агрегируем их так:

arm_idsuccessestrials
banner_A12
banner_B12
banner_C01

Эти агрегированные данные — "сырьё" для алгоритмов МРБ. На их основе алгоритм решит, какую "руку" выбрать следующей.

Непрерывные награды

Если ваша награда не бинарная (например, средний чек, время на сайте), подход меняется. Вместо successes и trials вам понадобятся:

  • sum_of_rewards (сумма наград): Общая сумма всех наград, полученных этой "рукой".
  • trials (попытки): Общее количество раз, когда эта "рука" была выбрана.

На основе этих двух показателей можно рассчитать среднюю награду для каждой "руки" (sum_of_rewards / trials) и использовать их для обновления параметров распределений (например, нормального распределения для Thompson Sampling с непрерывными наградами).

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

Правильная подготовка данных — фундамент успешного эксперимента. Чистые и структурированные данные значительно упростят дальнейшую работу.

Теперь, когда вы знаете, как подготовить данные, пора выбрать инструмент для первого МРБ-эксперимента. 🚀