Задать вопрос

Каков идеальный алгоритм ротации баннеров?

Есть условно 500 баннеров. По половине известен доход с каждого баннера за 1000 показов (постоянно пересчитывается). Вторая половина - новые. Нужно запустить в ротацию.

Какой баннер показывать? Читал про weighted random sampling. Можно присвоить каждому баннеру свой "вес" в зависимости от CPM. Вероятность показа баннера в этом случае будет прямо пропорциональна весу конкретного баннера, относительно суммы весов всех баннеров, подлежащих ротации.

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

Буду благодарен за любые ссылки по этой теме.
  • Вопрос задан
  • 2215 просмотров
Подписаться 6 Оценить Комментировать
Решения вопроса 1
Arseny_Info
@Arseny_Info
R&D engineer
Очень зависит от задач конкретной баннерокрутилки: это большая рекламная сеть, внутренний ротатор, и т.п.

Общий принцип такой:
# берем список баннеров, которые могут таргетироваться на этого пользователя
banners = get_banners(session)

# большую часть показов (например, 90%) нужно откручивать тем пользователям, для которых ожидаемая полезность максимальна
if random.randint(0,100) > 10: 
    # предсказываем потенциальную прибыль
    banners = {x : predict(x) for x in banners}
    # находим баннер с максимальной прогнозной прибылью
    banner = max(banners, key=lambda k: banners[k])  
    show(banner)
# остальные показы случайные, чтобы модель могла обучаться
else:
	show(random.choice(banners))


Самое интересное — по какой модели предсказывать прибыль. И тут все зависит от особенностей задачи. В самом простом варианте обычно считается eCPM, но рационально использовать комбинированные модели, использующие машинное обучение и всякие бизнес-ограничения вроде количества показов на пользователя.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
Awake
@Awake
Рулю разработкой ;-)
ограничивать количество показов на юзера.
Ответ написан
Комментировать
Brim
@Brim
> Конкретному пользователю может быть совсем неинтересен этот баннер, хотя по всей системе его вес будет большим. Как поступать в этом случае?

Если Вы можете отслеживать интересы пользователя, то сортировок может быть 2: сначала по интересности - внутри по CPM.

С другой стороны, чем выше CPM, тем по умолчанию интереснее баннер для большинства.
Ответ написан
Комментировать
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы