我想基于简单的推荐系统,使用kerasRL
和OpenAI Gym
进行强化学习。我的观点是,我已经创建了一个Agent
来学习Cartpole
环境,现在我想建立自己的环境来对其进行训练。
我的DataFrame
具有[user, item, relevance, timestamp]
的典型列,但是我不知道如何处理显示给Agent
的动作序列以及给予它的奖励。
我的方法是给用户id作为输入以对其进行嵌入,并将输出作为项目数大小的softmax进行排名,并将ndcg
的数字乘以数量(因为这意味着用户已经购买了该商品)减去ceros数量的ndcg
(因为这意味着用户已经查看了该商品但没有购买)。
问题在于,Agent
将通过这种方式推荐用户已经购买的商品(无用),而不推荐已经看到的商品(有用)。我希望制作一个可以推荐一些用户不打算购买的商品的系统(越少越好),希望最大程度地使用户以后购买不同的商品(因此timestamp
非常重要)。 / p>
另一个问题是显示数据的方式。显然,我必须按时间戳显示它,但是,之前按用户对数据进行排序是否有意义?我在哪里计算奖励?
有人对此方法有任何想法或批评吗?我可以使用kerasRL
和Gym Environment
吗?有没有论文或视频对此问题有用?
希望我能正确表达自己,并预先感谢您。