Вы уже знаете, что такое А/Б-тестирование. Теперь давайте разберёмся, как подготовить данные для многоруких бандитов (МРБ). Это несложно, но требует внимания.
Структура данных для МРБ
Алгоритмы МРБ, такие как Thompson Sampling и UCB, работают с данными в определённом формате. Главное — знать, какая "рука" выбрана и какую "награду" она принесла.
Представьте, что вы собираете данные о показах баннеров на сайте. Для каждого показа вам нужны:
- Идентификатор сессии/пользователя: Чтобы отслеживать уникальные взаимодействия.
- Идентификатор "руки" (варианта): Какой баннер показан (например,
banner_A,banner_B,banner_C). - Награда: Произошло ли целевое действие (например, клик). Если награда бинарная, то
1за успех (клик) и0за неудачу (нет клика).
Пример таблицы данных
Вот как это выглядит в таблице:
session_id | arm_id | reward | timestamp |
|---|---|---|---|
| 1001 | banner_A | 0 | 2025-03-10 10:05:12 |
| 1002 | banner_B | 1 | 2025-03-10 10:06:30 |
| 1003 | banner_A | 1 | 2025-03-10 10:07:05 |
| 1004 | banner_C | 0 | 2025-03-10 10:08:15 |
| 1005 | banner_B | 0 | 2025-03-10 10:09:01 |
Важно: Для большинства алгоритмов МРБ, особенно с бинарными наградами, нужны агрегированные данные: сколько раз выбрана каждая "рука" и сколько раз она принесла успех.
Агрегация данных
После сбора необработанных данных их нужно агрегировать. Алгоритмы, вроде Thompson Sampling (с бета-распределением) или UCB, используют суммарные показатели успехов и попыток для каждой "руки".
Для каждой "руки" (arm_id) получите два показателя:
successes(успехи): Сколько раз "рука" принесла целевую награду (например, количество кликов).trials(попытки): Сколько раз "рука" была показана/выбрана.
Пример агрегированных данных
Используя данные из примера выше, агрегируем их так:
arm_id | successes | trials |
|---|---|---|
banner_A | 1 | 2 |
banner_B | 1 | 2 |
banner_C | 0 | 1 |
Эти агрегированные данные — "сырьё" для алгоритмов МРБ. На их основе алгоритм решит, какую "руку" выбрать следующей.
Непрерывные награды
Если ваша награда не бинарная (например, средний чек, время на сайте), подход меняется. Вместо successes и trials вам понадобятся:
sum_of_rewards(сумма наград): Общая сумма всех наград, полученных этой "рукой".trials(попытки): Общее количество раз, когда эта "рука" была выбрана.
На основе этих двух показателей можно рассчитать среднюю награду для каждой "руки" (sum_of_rewards / trials) и использовать их для обновления параметров распределений (например, нормального распределения для Thompson Sampling с непрерывными наградами).
Совет: Начните с бинарных наград. Их проще понять и реализовать. Освоившись, переходите к сложным типам наград.
Правильная подготовка данных — фундамент успешного эксперимента. Чистые и структурированные данные значительно упростят дальнейшую работу.
Теперь, когда вы знаете, как подготовить данные, пора выбрать инструмент для первого МРБ-эксперимента. 🚀