Я хочу создать простую систему рекомендаций, основанную на обучении с подкреплением, используя kerasRL
и OpenAI Gym
.Я хочу сказать, что я уже создал Agent
для изучения среды Cartpole
, и теперь я хочу настроить свою собственную среду, чтобы тренироваться против нее.
В моем DataFrame
есть типичные столбцы[user, item, relevance, timestamp]
но я не знаю, как обращаться с последовательностями действий, которые нужно показать Agent
, и с вознаграждением, которое ему дается.
Мой подход состоит в том, чтобы предоставить идентификатор пользователя в качестве входных данных длясделайте его вложение и выведите его в виде мягкого максимума размера количества предметов, чтобы сделать ранжирование, и умножьте число на ndcg
числа единиц (так как это означает, что пользователь купил предмет) минусndcg
от числа ceros (поскольку это означает, что пользователь просмотрел элемент, а не купил его).
Проблема в том, что таким образом Agent
научится рекомендовать элементы, которыеПользователь уже купил (не полезно) и не рекомендовать предметы, которые уже видел (полезно).Я надеюсь создать систему, которая могла бы порекомендовать некоторые товары, которые пользователь не собирается покупать (чем меньше, тем лучше) в надежде максимизировать, что пользователь приобретает отдельный товар позже (так что timestamp
очень важен).
Другая проблема - способ отображения данных.Понятно, что я должен показать его в порядке отметки времени, но уместно ли это раньше заказывать данные пользователем?Где я могу рассчитать вознаграждение?
Есть ли у кого-нибудь идеи или критики в отношении этого подхода?Могу ли я сделать это с kerasRL
и Gym Environment
?Есть ли у кого-нибудь статья или видео, полезные для этой проблемы?
Надеюсь, я правильно выразился и заранее благодарю.