现在已迈入信息过载时代,从海量的信息中帮助用户发现喜好的内容或向用户推荐需要的信息,是应对信息过载问题的有效途径之一,这是个性化推荐问题[1-2]。协同过滤方法是应对个性化推荐问题最重要最普遍的策略。矩阵分解模型是协同过滤算法采用的主要数学模型之一。通常情况下,用户仅对有限的项目给出评分,矩阵中大部分元素的取值是未知的,因此使用矩阵分解模型的算法往往假设评分矩阵是低秩的,这些算法仅在这一假设下是稳定的。另外,过去的推荐算法往往将数据看作是静态的[3-5],没有考虑用户的兴趣会随时间改变,也没有考虑项目的受关注热度也会随时间改变。一些经典的协同过滤算法,如NMF(algorithms for non-negative matrix factorization)[3]、 PMF (probabilistic matrix factorization)[4]、 BPMF(Bay-esian probabilistic matrix factorization using markov chain monte carlo)[5]和近期表现突出的协同过滤算法[6],都没有考虑时间因素。大多数的协同过滤推荐算法可以分为两步:预测项目评分和依据预测评分生成推荐序列。这些推荐算法的关键是评分预测,因此很多推荐算法在训练阶段直接优化评价指标均方根误差(root-mean-square error,RMSE)[7]。这种方法简单明了且存在一定的合理性。但是应该注意到评分预测只是推荐系统的一个中间结果,推荐系统的最终目标是向用户进行项目推荐而不是预测评分。有些算法在评分预测方面表现突出,但是却不能很好地进行项目推荐[8]。
考虑到以上问题,本研究进行了改进,提出基于时间变化、优化排名结果和利用矩阵分解模型的一种局部协同过滤算法 (a local collaborative filtering algorithm on ranking recommendation tasks,LCFA)。首先,LCFA假设评分矩阵在其用户项目序偶(u,i)的近邻空间内是低秩的,从而使得本算法在不同性质的数据集合上都是稳定的。其次,LCFA充分考虑时间对推荐结果排名的影响,最近的用户项目评分序偶的近邻空间在算法的推荐过程中占有较大的比例,以前的用户项目评分序偶的近邻空间在算法的推荐过程中占的比例较小。与此同时,LCFA采用优化排名的策略,使算法更加关注于排名结果。
1 相关工作本研究工作主要包括基于矩阵分解模型的推荐算法、推荐系统中的时间因素、推荐结果的排名模式。
1.1 推荐算法基于矩阵分解模型的推荐算法,将评分矩阵M分解成低秩用户特征矩阵U和低秩项目特征矩阵V相乘:$\hat{M}=U{{V}^{\text{T}}}$,其中符号^表示该变量的值是算法计算得到的,U∈Rm×r,V∈Rr×n,r<<min(m,n)。
文献[6]提出了一个局部低秩矩阵分解(local low-rank matrix approximation,LLORMA)算法,其基本思想是:评分矩阵M可能不是低秩的,但是用户项目序偶的近邻空间是低秩的,近邻空间是指那些相似的用户项目序偶。该算法认为M可以通过若干个低秩评分矩阵${{{\hat{M}}}_{s}}$表示,其中s∈φ={(u,i):u=1,…,m; i=1,…,n},${{{\hat{M}}}_{s}}$在用户项目序偶s的近邻空间中可以很好地表示M。LLORMA算法首先随机选取q个用户项目序偶s1,…,sq∈φ,然后通过最小化平方重构误差的方法构建每个用户项目序偶近邻空间的低秩特征矩阵
$\underset{U,V}{\mathop{\arg \min }}\,\sum\limits_{\left( u,i \right)\in A}{K(({{u}^{*}},{{i}^{*}}),\left( u,i \right))}{{\left( {{\left[ U{{V}^{\text{T}}} \right]}_{_{ui}}}-{{m}_{ui}} \right)}^{2}}$ | (1) |
式中:A为训练集中所有的用户项目序偶;K((u*,i*),(u,i))是计算用户项目序偶(u,i)与(u*,i*)相似性的平滑核函数;mui为用户u对项目i的评分。
LLORMA算法将平滑核函数K((u*,i*),(u,i))分解成用户之间的平滑核函数和项目之间的平滑核函数的积K(u*,u)K(i*,i)。上述最优化问题要对q个被选中的用户项目序偶依次进行,生成q个低秩用户特征矩阵U与q个低秩项目特征矩阵V。然后使用N-W(Nadaraya-Watson)估计将其组合起来形成最后的结果
${{{\hat{M}}}_{_{ui}\text{=}}}\sum\limits_{t=1}^{q}{\frac{K\left( \left( {{u}_{t}},{{i}_{t}} \right),\left( u,i \right) \right)}{\sum\limits_{s=1}^{q}{K\left( \left( {{u}_{s}},{{i}_{s}} \right),\left( u,i \right) \right)}}}{{\left[ {{{\hat{U}}}_{t}}\hat{V}_{t}^{^{\text{T}}} \right]}_{_{ui}}},$ | (2) |
式中:(ut,it)为被选中的第t个用户项目序偶;Ut与Vt为被选中的第t个用户项目序偶近邻空间对应的低秩用户特征矩阵和低秩项目特征矩阵。
1.2 时间因素一般对推荐系统的研究往往忽略了时间特征,只是将用户的评分行为看作是静态行为进行分析和算法设计。而真实情况是,系统是动态变化的,项目受关注的热度会随时间而改变,同时,用户的兴趣也会随时间而变化。因此,对于推荐系统,时间因素是很重要的。
最近几年,很多算法考虑了时间因素[9-11]。文献[9]提出了一个改进的基于项目的协同过滤算法,该算法在计算不同项目的权重时加入了时间权重,时间权重函数随时间变化而单调递增。文献[10]为了提高基于用户的协同过滤算法的推荐效果,在其中考虑时间因素,改变了计算用户相似性的皮尔森系数方法。最近在计算用户相似度的过程中,用户项目序偶占的权重较大,而过去占的权重较小。文献[11]提出了一个应用于隐式反馈数据集合的有效协同过滤推荐算法。该算法的关键步骤是使用隐式反馈数据集合构造伪评分矩阵,在构造该伪评分矩阵的过程中,充分考虑时间因素,如用户购买或浏览某项目的时间和项目的出现时间,然后在该伪评分矩阵上使用基于用户的协同过滤算法或基于项目的协同过滤算法。
1.3 排名模式排名模式可以基于3种不同的形式进行,最简单的形式是基于点的排名模式。在这种模式中,排名可以通过训练阶段学习得到的绝对数值来实现;在信息检索中,就是学习给定查询下单个检索对象的绝对相关度[12];而在推荐系统中,就是学习用户对项目的绝对评分。该方法简单直接,但其推荐准确度存在一定的问题。排名模式的另一种形式是基于对的排名模式,该模式考虑两两项目之间的相关度[13],克服了基于点的排名模式的缺点。但是,此模式在优化过程中使用基于两两项目之间相对相关度的损失函数,与衡量排名效果的一些指标之间可能存在很大的不同,有时甚至是负相关。此外,此模式时间复杂度为O(k2),计算比较复杂。排名模式的第三种形式是基于列的排名模式[14]。在信息检索中,有些算法使用基于列的排名模式,直接考虑优化排名评价指标,取得了很好的效果[15]。近几年,出现了直接优化推荐项目序列的推荐算法。例如,算法CoFiRank(maximum margin matrix factorization for collaborative ranking)使用了矩阵分解模型[16],其优化过程中使用的目标函数是依据评价指标正规化折算累积收益NDCG (normalized discounted cumulative gain)得到的损失函数的上界。算法TFMAP(optimizing map for top-n context-aware recommendation)使用张力分解模型[17],最大化依据评价指标平均精度均值(mean average precision,MAP)得到的损失函数的下界。除此之外,还可以直接优化其他的排名评价指标[18-19]。
2 改进的局部协同过滤的排名推荐算法 2.1 关键理论倒数排名(reciprocal rank,RR)函数是一个常见的评价机制。对于推荐系统而言,如果推荐序列第1个推荐项目匹配,则分数为1;如果第n个推荐项目匹配,则分数为1/n;如果推荐序列中没有匹配的项目,则分数为0。推荐给用户u的项目推荐序列的特定用户倒数排名函数
$\text{R}{{\text{R}}_{u}}=\sum\limits_{i=1}^{N}{\frac{{{y}_{ui}}}{{{R}_{ui}}}}\prod\limits_{j=1}^{N}{(1-{{y}_{uj}}I({{R}_{uj}}<{{R}_{ui}})),}$ | (3) |
式中:N为项目数量;Rui为推荐给用户u的推荐序列中项目i的排名;yui用来表示用户u与项目i是否具有相关性,是为1,否则为0。函数I(E)是指示函数,在E为真的情况下I(E)=1,否则为0。
倒数排名函数RR是所有用户的RRu之和。式(3)主要侧重于用户与项目之间的相关性,适合于隐式反馈数据集合。而评分数据集合,不仅表示用户与项目之间是否存在相关性,还表示其相关性的大小。结合评分数据集合的实际情况,修改RRu使其更适合于评分数据集合。修改后的RRu为
$\text{R}{{\text{R}}_{u}}=\sum\limits_{i=1}^{N}{\frac{{{m}_{ui}}}{{{R}_{ui}}}}\coprod\limits_{j=1}^{N}{\left( {{m}_{\max }}-{{m}_{uj}}I({{R}_{uj}}<{{R}_{ui}}) \right)},$ | (4) |
式中:mmax为数据集合中允许用户给出的最大评分值。
从评价取值方式上,如果仅仅考虑用户项目是否相关,则数据集合中的取值是二值布尔型变量。而广义的评分数据集合中的取值是一个多值序数类型,当这种序数类型仅仅取0与1时,即mui的取值为0或1时,mmax等于1,此时式(4)就退化为式(3)。
LCFA选择随机梯度上升法直接优化评价指标RR。目标函数可微是使用该方法的前提。而式(4)是不可微的,不能将其作为优化目标,因此必须对评价指标RRu进行平滑化处理。LCFA使用平滑的损失函>数g(x)来代替指示函数
$I({{R}_{uj}}<{{R}_{ui}})\approx g\left( {{f}_{uj}}-{{f}_{ui}} \right),$ |
式中,fui为用户u对项目i的预测评分。
g(x)可以有很多的表现形式,LCFA中取g(x)=1/(1+e-x)。为了平滑化评价指标RRu,用g(fui)代替1/Rui。综上所述,可以得到平滑化的用户u的倒数排名函数
$\text{R}{{\text{R}}_{u}}\approx \sum\limits_{i=1}^{N}{{{m}_{ui}}g\left( {{f}_{ui}} \right)\coprod\limits_{j=1}^{N}{({{m}_{\max }}-{{m}_{uj}}g({{f}_{uj}}-{{f}_{ui}}))}}.$ | (5) |
式(5)是RRu平滑化后的结果,是可微的。而根据随机梯度上升法的优化步骤,对式(5)进行最优化操作非常复杂,应对式(5)进行简化。
对数函数在定义域内是单调递增的,对式(5)取对数,对最终的结果没有影响,表达式为
$\begin{align} & \underset{{{U}_{u,}}V}{\mathop{\arg \max }}\,\left\{ \text{R}{{\text{R}}_{u}} \right\}=\arg \max \left\{ 1\text{n}\left( \frac{\text{R}{{\text{R}}_{u}}}{n_{u}^{+}} \right) \right\} \\ & \underset{{{U}_{u,}}V}{\mathop{\arg \max }}\,\left\{ \text{1n}\left( \sum\limits_{i=1}^{N}{\frac{{{m}_{ui}}}{n_{u}^{+}}g\left( {{f}_{ui}} \right)\coprod\limits_{j=1}^{N}{\left( {{m}_{\max }}-{{m}_{ui}}g\left( {{f}_{uj}}-{{f}_{ui}} \right) \right)}} \right) \right\}, \\ \end{align}$ |
式中nu+ 为用户u给出评分的项目的个数。
根据对数函数的凹凸性和詹森不等式可得ln(RRu/nu+)的下界,过程为:
$\begin{align} & 1\text{n}\left( \frac{\text{R}{{\text{R}}_{u}}}{n_{u}^{+}} \right)=1\text{n}\left( \sum\limits_{i=1}^{N}{\frac{{{m}_{ui}}}{n_{u}^{+}}g\left( {{f}_{ui}} \right)\coprod\limits_{j=1}^{N}{\left( {{m}_{\max }}-{{m}_{ui}}g\left( {{f}_{ui}}-{{f}_{ui}} \right) \right)}} \right)\ge \\ & \frac{1}{\text{n}_{u}^{+}}\sum\limits_{i=1}^{N}{{{y}_{ui}}}1\text{n}\left( {{m}_{ui}}g\left( {{f}_{ui}} \right)\coprod\limits_{j=1}^{N}{\left( {{m}_{\max }}-{{m}_{ui}}g \right)\left( {{f}_{ui}}-{{f}_{ui}} \right)} \right)= \\ & \frac{1}{\text{n}_{u}^{+}}\sum\limits_{i=1}^{N}{{{y}_{ui}}}\left( 1\text{n}{{m}_{ui}}+1\text{n}\left( g\left( {{f}_{ui}} \right) \right)+\sum\limits_{j=1}^{N}{1\text{n}\left( {{m}_{\max }}-{{m}_{ui}}g\left( {{f}_{ui}}-{{f}_{ui}} \right) \right)} \right). \\ \end{align}$ | (6) |
对于式(6),可以忽略对结果没有影响的常数1/nu+。同时用户的评分是固定的,也可以忽略掉。将全部M个用户的特定用户倒数排名函数RRu的下界和设为目标函数。用户u对项目i的预测评分fui可用式(2)表示。为了防止过拟合,目标函数还要考虑正则化项,表达式为
$\begin{align} & L\left( U,V \right)=\sum\limits_{u=1}^{M}{\sum\limits_{i=1}^{N}{{{y}_{ui}}\left( 1\text{n}\left( g\left( \sum\limits_{t=1}^{q}{\frac{k\left( \left( {{u}_{t}},{{i}_{t}} \right),\left( u,i \right) \right)}{k\left( \left( {{u}_{s}},{{i}_{s}} \right),\left( u,i \right) \right)}{{\left[ {{U}_{t}}V_{_{t}}^{^{T}} \right]}_{ui}}} \right) \right) \right.}}+ \\ & \sum\limits_{i=1}^{N}{1\text{n}}\left( {{m}_{\max }}-{{m}_{ui}}g \right.\left( \sum\limits_{t=1}^{q}{\frac{k\left( \left( {{u}_{t}},{{i}_{t}} \right),\left( u,i \right) \right)}{\sum\limits_{s=1}^{q}{k\left( \left( {{u}_{s}},{{i}_{s}} \right),\left( u,i \right) \right)}}} \right.{{\left[ {{U}_{t}}{{V}_{t}} \right]}_{ui}}- \\ & \sum\limits_{t=1}^{q}{\frac{k\left( \left( {{u}_{t}},{{i}_{t}} \right),\left( u,i \right) \right)}{\sum\limits_{s=1}^{q}{k\left( \left( {{u}_{s}},{{i}_{s}} \right),\left( u,i \right) \right)}}}\left. \left. \left. {{\left[ {{U}_{t}}{{V}_{t}} \right]}_{ui}} \right) \right) \right)-\frac{\lambda }{2}\sum\limits_{t=1}^{q}{\left( {{\left\| {{U}_{t}} \right\|}^{2}}+{{\left\| {{V}_{t}} \right\|}^{2}} \right)}, \\ \end{align}$ | (7) |
式中λ为正则化系数;‖U‖为矩阵U的F范数。
同式(5)相比较,式(7)易于使用最优化模型。
对q个选中的用户项目序偶求低秩近似矩阵后,使用N-W估计将其组合起来形成最后的结果。其中LCFA在LLORMA使用的核函数的基础上,考虑了时间因素,表达式为
$K(({{u}^{*}},{{i}^{*}}),\left( u,i \right))=K({{u}^{*}},u)K({{i}^{*}},i)T({{u}^{*}},{{i}^{*}}),$ |
式中:K(u1,u2)为平滑核函数;函数T(u,i)设置为Epanechnikov核函数,T(u,i)=max{0,1-d(u,i)2/h},其中d(u,i)为用户项目序偶(u,i)的评价时间与数据集中最晚的用户项目序偶评价时间之差,为了在训练过程中使用所有数据,设置核函数宽度h=1。
通过实验,LCFA使用Epanechnikov核函数
${{K}_{E}}\left( {{u}_{1}},{{u}_{2}} \right)=\max \left\{ 0,1-d{{\left( {{u}_{1}},{{u}_{2}} \right)}^{2}}/h \right\},$ |
式中h为核函数宽度,可以认为h定义了用户项目序偶的近邻,设置h=0.8。
通过N-W估计将选取的q个用户项目序偶对应的q个低秩用户特征矩阵U与q个低秩项目特征矩阵V结合起来,得到最后的结果。
2.2 算法描述LCFA的输入为训练集评分矩阵M∈Rm×n,其中m为用户数量,n为项目数量。LCFA的输出为对用户项目序偶(u*,i*)的预测评分。
LCFA使用随机梯度上升法进行目标优化。对第t个局部模型分别求对[Ut]u和[Vt]i的偏导。结果为:
$\begin{align} & \frac{\partial L}{\partial {{\left[ {{U}_{t}} \right]}_{u}}}=\sum\limits_{i=1}^{N}{{{y}_{ui}}}\left( \frac{{g}'\left( {{f}_{ui}} \right)}{g\left( {{f}_{ui}} \right)} \right..\frac{K\left( \left( {{u}_{t,}}{{i}_{t}} \right),\left( u,i \right) \right)}{\sum\limits_{s=1}^{q}{K\left( \left( {{u}_{s}},{{i}_{s}} \right),\left( u,i \right) \right)}}{{\left[ {{V}_{t}} \right]}_{i}}+ \\ & \sum\limits_{j=1}^{N}{\frac{{{m}_{ui}}{g}'\left( {{f}_{ui}}-{{f}_{ui}} \right)}{{{m}_{\max }}-{{m}_{ui}}g\left( {{f}_{ui}}-{{f}_{ui}} \right)}}\left( \frac{K\left( \left( {{u}_{t,}}{{i}_{t}} \right),\left( u,i \right) \right)}{\sum\limits_{s=1}^{q}{K\left( \left( {{u}_{s}},{{i}_{s}} \right),\left( u,i \right) \right)}} \right) \\ & {{\left[ {{V}_{t}} \right]}_{i}}-\frac{K\left( \left( {{u}_{t,}}{{i}_{t}} \right),\left( u,i \right) \right)}{\sum\limits_{s=1}^{q}{K\left( \left( {{u}_{s}},{{i}_{s}} \right),\left( u,i \right) \right)}}\left. \left. {{\left[ {{V}_{t}} \right]}_{j}} \right) \right)-\lambda {{\left[ {{U}_{t}} \right]}_{u}}, \\ \end{align}$ | (8) |
$\begin{align} & \frac{\partial L}{\partial {{\left[ {{V}_{t}} \right]}_{i}}}=\sum\limits_{u=1}^{M}{{{y}_{ui}}}\left( \frac{{g}'\left( {{f}_{ui}} \right)}{g\left( {{f}_{ui}} \right)} \right..\frac{K\left( \left( {{u}_{t,}}{{i}_{t}} \right),\left( u,i \right) \right)}{\sum\limits_{s=1}^{q}{K\left( \left( {{u}_{s}},{{i}_{s}} \right),\left( u,i \right) \right)}}+ \\ & \sum\limits_{j=1}^{N}{{{m}_{uj}}{g}'}\left( {{f}_{ui}}-{{f}_{uj}} \right)\left( \frac{1}{{{m}_{\max }}-{{m}_{uj}}g\left( {{f}_{uj}}-{{f}_{ui}} \right)} \right..\frac{K\left( \left( {{u}_{t,}}{{i}_{t}} \right),\left( u,i \right) \right)}{\sum\limits_{s=1}^{q}{K\left( \left( {{u}_{s}},{{i}_{s}} \right),\left( u,i \right) \right)}}- \\ & \frac{1}{{{M}_{\max }}-{{M}_{ui}}g\left( {{f}_{ui}}-{{f}_{uj}} \right)}.\left. \left. \frac{K\left( \left( {{u}_{t,}}{{i}_{t}} \right),\left( u,i \right) \right)}{\sum\limits_{s=1}^{q}{K\left( \left( {{u}_{s}},{{i}_{s}} \right),\left( u,i \right) \right)}} \right) \right){{\left[ {{U}_{t}} \right]}_{u}}-\lambda {{\left[ {{V}_{t}} \right]}_{i}}, \\ \end{align}$ | (9) |
式中g′(x)为g(x)的导数。
LCFA的学习过程为:
输入:已知评分矩阵M
参数:局部模型个数q,低秩矩阵的秩r,学习速率γ,正则化系数λ,最大迭代次数itr。
输出:${{{\hat{m}}}_{u*i*}}$
(1) 随机初始化Ut、Vt,从M中随机选取用户项目序偶(ut,it)
(2) for 所有(u,i)∈M,计算wui=$\sum\limits_{t=1}^{q}{K\left( {{u}_{t}},u \right)}K\left( {{i}_{t}},i \right)T\left( {{u}_{t}},{{i}_{t}} \right)$
end for
(3)Repeat
for 所有t∈{1,…,q} 平行执行
for u=1,2,…,m 执行[Ut]u(s+1)=[Ut]u(s)+$\gamma \frac{\partial L}{\partial \left[ {{U}_{t}} \right]_{u}^{\left( s \right)}}$
for i=1,2,…,n 执行[Vt]i(s+1)=[Vt]i(s)+$\gamma \frac{\partial L}{\partial \left[ {{V}_{t}} \right]_{u}^{\left( s \right)}}$
end
end
end
s=s+1;
until s>itr 或者 curErr>preErr;//curErr表示此次迭代的误差,preErr表示上次迭代的误差
(4)${{{\hat{m}}}_{_{{{u}^{*}}{{i}^{*}}}}}=\sum\limits_{t=1}^{q}{\frac{K\left( {{u}_{t}},{{u}^{*}} \right)K\left( {{i}_{t}},{{i}^{*}} \right)T\left( {{u}_{t}},{{i}_{t}} \right)}{\sum\limits_{s=1}^{q}{K\left( {{u}_{s}},{{u}^{*}} \right)K\left( {{i}_{s}},{{i}^{*}} \right)T\left( {{u}_{s}},{{i}_{s}} \right)}}}{{\left[ {{{\hat{U}}}_{t}}\hat{V}_{t}^{\text{T}} \right]}_{u*i*}}$
3 试验为了验证算法的有效性,在数据集合MovieLens100K[20]和Netflix上进行试验。将数据集合划分成训练集和测试集。时间上前80%的数据用来进行训练,后20%的数据用来进行测试。试验中主要采用在排名问题上非常广泛的评价指标:MRR、MAP和NDCG@k。采用的试验验平台为PREA(personalized recommendation algorithms toolkit)[21],这是一个开源的Java推荐系统软件[22]。试验中将LCFA与PMF、BPMF、RSVD(regularized SVD)和LLORMA进行比较。
3.1 参数设置试验采用的算法都使用矩阵分解模型。在矩阵分解模型中,低秩矩阵的秩是一个重要参数,在一定程度上影响最终的推荐效果。试验中固定低秩矩阵的秩为10,这样可以忽略这个因素对最终结果影响。规定训练项目数量N的变化范围为{10,20,30,40,50},对每种情况分别进行试验并比较其结果。
LCFA设置局部模型数量的变化范围为{10,20,30,40,50}。LLORMA设置局部模型数量的变化范围为{10,20,30,40,50},设置核函数为Epanechnikov函数,设置核函数的宽度为0.8。试验中算法学习速率γ和正则化系数λ的值均通过交叉验证获得,为其在每个数据集合的每个评价指标的推荐效果最优情况下的值。
3.2 结果和分析表 1~3分别给出了各个算法在数据集合MovieLens100K和Netflix上评价指标MRR、MAP和NDCG@10的值,每行中粗体显示的是在相应的数据集合的相应评价指标上表现最好的算法。
由表 1可以看出:在数据集合MovieLens100K上,LCFA在用户训练项目数量为20、30和50时取得了最好的结果,且在训练项目数量为50的情形下优势比较明显,与取得次好结果的RSVD相比,性能提升6.9%。在数据集合Netflix上,LCFA在用户训练项目数量为10、40和50时取得了最好的结果,即使在训练项目数量为20时LLORMA取得最好的结果,但是LCFA还是取得次好的结果。综上所述,LCFA在10种情况下有6种情况取得了最好的结果,可见其在MRR上相较于其它推荐算法存在较大的优势。
由表 2可以看出:在数据集合MovieLens100K上,LCFA在用户训练项目数量为20、30和50时都取得了最好的结果。在用户训练项目数量为40的情况下,LCFA取得了次好的结果。在数据集合Netflix上,LCFA在用户训练项目数量为10、 40和50时取得了最好的结果,训练项目数量为20、30时下取得次好的结果。综上所述,LCFA在10种情况下有6种情况取得了最好的结果,可见其在MAP上相较于其它同类型推荐算法存在较大的优势。
由表 3可以看出,在数据集合MovieLens100K上,LCFA在用户训练项目数量为30和50时取得了最好的结果。在数据集合Netflix上,LCFA在所有情况下都取得了最好的结果。综上所述,LCFA算法在10种情况下有7种情况取得了最好的结果,可见其在NDCG@10上相较于其它同类型推荐算法存在很大的优势。
从表 1~3中可以看到,LCFA在30种情况下有19种情况取得了最好的结果,比例为63.33%。同时本部分的试验评价指标都是基于排名的,也说明LCFA在推荐排名上存在很大的优势。与LLORMA相比,LCFA优势明显,说明时间因素对推荐结果存在较大的影响。
4 结语本研究的目的是为了更好地利用评分数据集合进行推荐。为此,提出一种局部协同过滤的排名推荐算法。该算法放宽协同过滤算法的假设,假设评分矩阵在某个用户项目序偶的近邻空间内是低秩的,使得其适合更多的真实的数据集合。同时考虑了时间因素对用户和项目的影响。更为重要的是,其修改排名评价指标MRR并将其作为优化目标,使得该算法适合评分数据集合。
LCFA首先随机选取q个用户项目评分序偶,然后对每个评分序偶学习其近邻空间的近似低秩矩阵。由于q次学习是独立的,因此在学习过程中使用并行机制,以提高算法的执行效率。最后通过N-W估计将学习得到的q个低秩矩阵组合起来,形成最后的推荐结果。试验部分将LCFA与一些经典协同过滤推荐算法进行比较,结果表明LCFA在排名推荐领域有较好的表现。
LCFA虽然采用了并行化机制,但是训练时间相较其他算法较长,如何在保证算法性能的基础上减少时间复杂度是本算法值得研究的问题。
[1] | LYU L Y, MEDO M, YEUNG C H, et al. Recommender systems[J]. The Journal of Physics Reports , 2012, 519 (1) : 1-50 DOI:10.1016/j.physrep.2012.02.006 |
[2] | RICCI F, ROKACH L, SHAPIRA B, et al. Recommender systems handbook[M]. Berlin, Germany: Springer-Verlag, 2011 . |
[3] | LEE D, SEUNG H. Algorithms for non-negative matrix factorization[J]. Advances in Neural Information Processing System , 2001, 32 (6) : 556-562 |
[4] | SALAKHUTDINOV R, MNIH A. Probabilistic matrix factorization[J]. Advances in Neural Information Processing Systems , 2012 : 1257-1264 |
[5] | SALAKHUTDINOV R, MNIH A. Bayesian probabilistic matrix factorization using markov chain monte carlo[C]// Proceedings of the 25th International Conference on Machine Learning. New York, USA: ACM, 2008:880-887. |
[6] | LEE J, KIM S, LEBANON G, et al. Local low-rank matrix approximation[J]. Journal of Machine Learning Research , 2013, 28 (2) : 82-90 |
[7] | KOREN Y. Factor in the neighbors: Scalable and accurate collaborative filtering[J]. ACM Transactions on Knowledge Discovery from Data , 2010, 4 (1) : 1-24 |
[8] | CREMONESI P, KOREN Y, TURRIN R. Performance of recommender algorithms on top-n recommendation tasks[C]//Proceedings of the fourth ACM Conference on Recommender Systems. New York, USA: ACM, 2013:39-46. |
[9] | DING Y, LI X. Time weight collaborative filtering[C]//Proceedings of the 14th ACM International Conference on Information and Knowledge Management. New York, USA: ACM, 2005:485-492. |
[10] | GONG S J, CHENG G H. Mining user interest change for improving collaborative filtering[C]//Proceedings of the 2008 Second International Symposium on Intelligent Information Technology Application. Washington DC, USA: IEEE Computer Society, 2008:24-27. |
[11] | LEE T Q, PARK Y, PARK Y T. A time-based approach to effective recommender systems using implicit feedback[J]. Expert Systems with Applications , 2008, 34 (4) : 3055-3062 DOI:10.1016/j.eswa.2007.06.031 |
[12] | BURGES C, SHAKED T, RENSHAW E, et al. Learning to rank using gradient descent[C]//Proceedings of the 22nd International Conference on Machine Learning. New York, USA: ACM, 2005:89-96. |
[13] | RENDLE S, FREUDENTHALER C. Improving pairwise learning for item recommendation from implicit feedback[C]//Proceedings of the 7th ACM International Conference on Web Search and Cata Mining. New York, USA: ACM, 2014:273-282. |
[14] | CAO Z, QIN T, LIU T Y, et al. Learning to rank: from pairwise approach to listwise approach[C]//Proceedings of the 24th International Conference on Machine Learning. New York, USA: ACM, 2007:129-136. |
[15] | XU J, LIU T Y, LU M, et al. Directly optimizing evaluation measures in learning to rank[C]//Proceedings of the 31st Annual International ACM SIGIR Conference on Research and Development in Information Retrieval. New York, USA: ACM, 2008: 107-114. |
[16] | WEIMER M, KARATZOGLOU A, LE Q V, et al. CofiRank-maximum margin matrix factorization for collaborative ranking[C]//Neural Information Processing Systems. Vancouver, Canada: ACM, 2007:3-8. |
[17] | SHI Y, KARATZOGLOU A, BALTRUNAS L, et al. TFMAP: optimizing map for top-n context-aware recommendation[C]//Proceedings of the 35th International ACM SIGIR Conference on Research and Development in Information Retrieval. New York, USA: ACM, 2012:155-164. |
[18] | SHI Y, KARATZOGLOU A, BALTRUNAS L, et al. CLIMF: learning to maximize reciprocal rank with collaborative less-is-more filtering[C]//Proceedings of the Sixth ACM Conference on Recommender Systems. New York, USA: ACM, 2012:139-146. |
[19] | KABBUR S, XIA N, KARYPIS G. FISM: factored item similarity models for top-N recommender systems[C]//Proceedings of the 19th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. New York, USA: ACM, 2010: 659-667. |
[20] | GROUPLENS. Datasets Instruction[EB/OL]. [2015-04-15]. http://grouplens.org/datasets/movielens. |
[21] | LEE J, SUN M, LEBANON G. PREA [EB/OL]. (2013-06-13)[2015-04-10]. http://prea.gatech.edu/download.html#ver20. |
[22] | LEE J, SUN M, LEBANON G. PREA: personalized recommendation algorithms toolkit[J]. The Journal of Machine Learning Research , 2012, 13 (1) : 2699-2703 |