Контекстные бандиты VW: исторические данные и онлайн-обучение

Я хочу протестировать CB для задачи электронной коммерции: рекомендации по личным предложениям (например, «последний шанс купить», «похожие позиции», «потребители рекомендуют», «бестселлеры» и т. Д.). Моя задача - заказать их (более актуальный вопрос выше в списке рекомендаций).

Итак, есть 5 возможных предложений. У меня есть некоторые исторические данные, собранные без использования какой-либо модели: контекст (функции пользователя и веб-сеанса), идентификатор действия (одно из моих 5 предложений), вознаграждение (1, если пользователь щелкнул это предложение, 0 - не щелкнул). Итак, у меня есть N пользователей и 5 предложений с известной наградой, всего 5 * N строк в моих исторических данных.

Ex:

1:1:1 | user_id:1 f1:... f2:... 2:-1:1 | user_id:1 f1:... f2:... 3:-1:1 | user_id:1 f1:... f2:...

Это означает, что пользователь 1 видел 3 предложения (1,2,3), стоимость 1 предложения равна 1 (не нажимал), пользователь нажимает на предложения 2 и 3 (стоимость отрицательная -> вознаграждение положительное) . Вероятности равны 1, так как все предложения были показаны и мы знаем награды.

Глобальная задача - увеличить CTR. Я хотел бы использовать эти данные для обучения CB, а затем улучшить модель с помощью политик исследования / эксплуатации. Я установил вероятности равными 1 в этих данных (правильно?). Но теперь я бы хотел установить порядок предложений по наградам.

Следует ли мне использовать для этого теплый старт в VW CB? Будет ли это правильно работать с данными, собранными без использования CB? Может, посоветуете более подходящие методы в CB для этих данных и задачи?

Большое спасибо.


person nadrey    schedule 20.05.2020    source источник


Ответы (1)


Если есть только 5 возможных предложений и если у вас (как указано) есть данные в форме «У меня N пользователей и 5 предложений с известным вознаграждением, всего 5 * N строк в моих исторических данных». тогда ваши исторические данные будут контролироваться многозначными данными, и будет применяться функция горячего старта; убедитесь, что вы используете чувствительная к стоимости версия, чтобы учесть многозначный аспект ваших исторических данных (т. е. существует более одного предложения, которое приведет к клику).

Будет ли это правильно работать с данными, собранными без использования CB?

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

Может, посоветуете более подходящие методы в CB для этих данных и задачи?

Первый абзац начинается с «если», потому что более типичный случай: 1) существует много возможных предложений и 2) пользователи исторически видели лишь некоторые из них.

В таком случае у вас есть комбинация вырожденной политики ведения журнала и раскрытия нескольких наград. Если существует k возможных действий, но каждый пользователь исторически видел только n ‹= k, тогда вы можете попытаться создать n строк для каждого пользователя, как вы это делали. Теоретически это не обязательно работает, но на практике может помочь.

Готово: измените данные

Если данные, которые у вас есть, были собраны в результате выполнения существующей политики, то альтернативой может быть начало рандомизации решений, принимаемых этой системой, для сбора набора данных, который соответствует CB. Например, используйте свою текущую систему, чтобы выбрать «лучшее» действие в 96% случаев, а одно из других 4 действий - случайным образом в 4% случаев, и зарегистрировать вероятность вместе с вознаграждением (0,96 или 0,01 в зависимости от считался ли он лучшим), а затем настроил надлежащий обучающий набор в стиле CB для vw. При этом вы также можете контрфактически оценить ценность как вашей текущей политики, так и политики, которую генерирует vw, и переключаться на vw только тогда, когда она выигрывает.

Самый быстрый способ реализовать последний абзац - просто начать использовать APS < / а>.

person Paul Mineiro    schedule 15.06.2020