Reinforcement Learning based Recommender System using Biclustering Technique
原文链接: https://arxiv.org/pdf/1801.05532.pdf
“强化学习推荐,借助双聚类biclustering减少状态和动作空间优化效率和效果”
Abstract:
推荐系统致力于在海量的信息中为用户推荐其感兴趣的内容,由于信息的爆炸式增长,推荐系统的重要性日益凸显,也产生了很多有效果的方法:其中一个方法就是将推荐系统建模成MDP问题,但是由于离散的状态动作太多,我们提出一个基于强化学习的推荐系统,将推荐系统建模成棋盘格的游戏(gridworld),利用双聚类技术以减少动作状态空间。这种方法还可以有效解决冷启动问题。
Introduction
协同过滤(CF)是常用的推荐方法,但是有两个缺陷:
1、CF有两个维度:用户user和项目item,但是无论用基于用户的协同过滤(user-based)还是基于项目的协同过滤(item-based)都是只考虑两个维度中的一维,很难捕捉到两个维度同时产生的重要影响,并且数据矩阵通常高维且稀疏。——所以利用双聚类技术
2、CF是静态的,用户的反应不能实时加入到数据中。——所以利用MDP技术
双聚类:
可见文档:http://sklearn.apachecn.org/#/docs/23
聚类和双聚类之间的巨大差异是聚类导出全局模型,而双聚类产生局部模型。Biclustering 算法对数据矩阵的行列同时进行聚类。 每一次聚类都会通过原始数据矩阵的一些属性确定一个子矩阵。算法在分配给 bicluster 行列的方式不同, 会导致不同的 bicluster 结构。 当行和列分成分区时,会发生对角线或者棋盘结构。
Biclustering 在不同的领域有很多其他名称,包括 co-clustering, two-mode clustering, two-way clustering, block clustering, coupled two-way clustering 等.有一些算法的名称,比如 Spectral Co-Clustering algorithm, 反应了这些备用名称。
Problem Definition
如图的4×4棋盘表示环境,agent相当于用户可以在棋盘中上下左右移动,棋盘上的每个格子代表状态即推荐的项目列表。
棋盘格生成(环境生成):
本文假设从全部的用户项目矩阵B=(U,I)中获得n×n个聚类结果。基于双聚类的用户向量与二维网格世界的状态之间的距离来进行映射。 然而,双聚类的用户向量并不是2D,因此使用降维技术将其转换为2D空间。现在我们的目标是通过最小化总距离将用户向量映射到2D网格世界。 在计算n×n个用户向量和gridworld之间的相似性之后,用户向量逐个映射到最近的网格世界点。(个人理解:相邻的格子一定保证是整体UI与整体UI最相近的)
状态:
棋盘中的n×n个格子代表n×n个状态。每个状态对应着n×n个聚类结果中的一个,每个状态包含一个用户集与一个项目集(相当于一个格子里就有一个UI矩阵)
动作:
agent可以选择上、下、左、右四个动作
奖励:
依据St+1状态向量与St状态向量之间的Jaccard距离(相似性的一种衡量方式),获得0~1之间的奖励值,这里看公式实际上比较的就是两个状态下用户的重合程度。如果两个状态有更多的相似用户,则reward值会越接近1。注意St这个状态向量用的是用户向量,而不是利用项目向量(一个格子里的UI矩阵,取U一整行作为一个向量)
生成推荐项目:
每个格子虽然都有可能成为初始状态,但这里并不是随机指定初始状态,而是根据给定的用户,来判断这个用户与格子里面所有状态之间的jaccard distance,这个值小即相似度高的状态会成为初始状态。然后根据e-greedy,agent移动,直到没有项目可以推荐给这个用户为止
(因为原始的B矩阵就那些项目I,而给定的用户可能看过一些项目,我们推荐的是她没有看过的,但是按照棋盘移动,可能有的格子里的项目她看过,有的没看过,推荐给她没看过的,直到没有可推荐的停止。所以按照相似度比较,肯定会推荐用户相似度高的用户看过的项目。)
更新模型:
所提出的模型的主要优点之一是用户的实时反馈可以体现在状态变化上,这会使奖励函数的值也实时发生变化,决策也会发生变化。 例如,在状态St中为用户推荐了其中的项目集,如果用户对这些项目非常满意,系统立即将该用户添加到相应状态st的UI矩阵中,则用户向量增加一个;如果用户对下一个状态里面推荐的项目也非常满意,则也将该用户加入到St+1的UI矩阵中,则用户向量增加一个,这时对于这种情况,reward值会发生变化:
整体流程
实验过程略
Discussion
作者说他忽略了几个问题,改进之处:因为聚类的效果会严重影响最后实验效果,agent的动作也可以多选几个,降到二维的棋盘结构也可以利用多维。