1、引入
电影评分问题是推荐系统的一个应用之一,根据不同用户对于不同电影的评分来判断用户的电影类型喜好,从而有选择地给用户推荐用户未曾观看过的电影。如下图所示:
之后首先定义一系列符号,方便后续介绍:令 nu表示用户的数量;nm表示影片的数量; r(i,j)=1表示用户 j j j对影片 i进行了打分; y(i,j)表示用户j给影片 i打的具体分数值。
2、基于内容的推荐
基本思想是对每一个用户 j j j都拟合一个参数 θj,之后根据拟合的线性方程来估计用户对于没有观看过影片i的打分 θjTx(i),其中, x(i)表示某个影片i的特征向量。
下面定义 θ(j)表示用户j的参数向量;定义 x(i)表示影片 i的特征向量;定义 m(j)表示用户 j打过分的影片的数量;推荐系统下,参数预测的目标函数如下所示:
3、协同过滤
如下图所示,假如现在知道辽一些用户对于一些电影的评分 ,但是不知道每部电影具体特征向量的值,但是获得了每个用户对于,每个特征的评分向量 θ(j),则可以反推出每部电影的特征向量的值 x(i)。
特征向量的值 x(i)的优化算法和向量θ(j)的优化算法类似,只是将自变量变为了x(i),如下所示:
3.1 协同过滤算法-Collaborative Filtering optimization
根据上述介绍,当有电影的特征向量时,可以使用已知信息训练用户的参数向量;当得到用户的参数向量之后,又可以利用一直信息反过来训练电影的特征向量。除了单独对上述两个向量进行训练,协同过滤算法对他们进行同时优化,其目标函数如下所示:
协同过滤算法的流程如下所示:注意在这里不使用附加特征 x0,则也没有参数θ0。
3.2 低秩分解
将协同过滤算法使用矩阵形式表示的方法如下所示,这种矩阵表示方式也称为低秩分解
寻找相似电影的方法为:通过计算不同电影之间的特征向量之间的差距来衡量不同电影之间的相似程度: ∣x(i)−x(j)∣∣。
3.3 均值规范化
再进行推荐算法之前,首先对用户对电影的评分进行规范化,将某一步电影的每一个评分分别减去所有用户对于这个电影的评分均值;之后再进行推荐算法进行参数θ和 x的学习。最后在进行 θ值预测时,最后需要将每一行的均值再重新添加回每一个用户的评分上。这样做可以使得完全缺失信息的用户最后对于每个电影的评分为平均水平,也是make sense的。