在很多最近的网站中,标签扮演了一个重要的角色。推荐系统在用户想要给某个产品打标签时向其推荐他可能会使用的标签。基于Tucker分解(TD)模型的分解模型已经显示出了较高的性能,其标签推荐质量优于其它方法如PageRank,FolkRank和协同过滤等等。TD模型的问题在于三次核张量会导致在预测和学习时候的三次方的时间复杂度。
本文我们给出分解模型PITF(Pairwise Interaction Tensor Factorization,成对交互张量分解),这是一种特殊的TD模型,但是在学习和预测时的时间复杂度是线性的。PITF可以对用户、产品和标签之间的两两交互进行准确建模。之前用于产品推荐的贝叶斯个性化排序(BPR)准则被用于学习该模型。在真实数据集上的实验表明PITF模型在运算时间上远远优于传统TD模型,甚至能得到更好的预测精度。除了本文的实验外,PITF还赢得了ECML/PKDD 2009知识发现竞赛中基于图的标签推荐的奖项。
标签推荐,张量分解,个性化,推荐系统
标签是Web 2.0时代的一个重要特征。它允许用户给产品/资源如音乐,图片和书签用关键词进行注释。标签帮助用户组织他的项目,促进浏览和搜索行为。标签推荐系统通过向用户推荐他可能用于一件产品的标签集合从而辅助用户的标记过程。个性化标签系统在推荐时会考虑到用户过去的标记行为。这意味着每个用户都被推荐一个个性化标签列表:也就是推荐的标签列表取决于用户和产品。由于不同的用户会使用不同的标签标记同一个项目因此需要进行个性化。Last.fm网站使用的是非个性化标签推荐系统,但是用户还是会使用不同的标签标记音乐。文献[18]给出了一个实证例子,表明最近的个性化标签推荐系统优于任何非个性化标签推荐系统的理论上的性能上限。
本文工作基于最近的使用分解模型的个性化标签推荐模型。这些模型如高维奇异值分解(HOSVD)和排序张量分解(RTF)都是基于Tucker分解模型。RTF已经表现出了很高的预测精度。使用完全Tucker分解模型的缺陷在于在分解维度上模型方程是三次方的。这使得TD模型较难应用于中等规模和大型数据集。本文我们介绍一种新的分解模型,该模型对用户、产品和标签之间的两两交互关系进行准确建模。该摸想的优势在于模型的计算复杂度是线性的,使得其可以在高维数据上进行计算。在统计学中,还有另外一种张量分解方法也有着线性的计算复杂度称作正规分解(canonical decomposition, CD),也称作并行因子分析(parallel factor analysis, PARAFAC)[2]。后面我们会说明我们的模型是CD和TD模型的特例。我们的实验结果也表明我们的两两交互模型在预测精度上明显优于CD模型,在运行时间上也略优于CD。此外,为了学习一般化的标签推荐模型,我们将贝叶斯个性化排序优化准则进行改进以适应标签推荐。
总体上,我们的贡献在于以下几点:
1. 我们将贝叶斯个性化排序优化准则(BPR-OPT)[17]进行了扩展以适应标签任务,并提供了一个基于bootstrap抽样的随机梯度下降学习算法。该优化准则和学习算法是通用的而不限于TD分解模型。
2. 我们提出的PTTF分解模型有着线性的预测时间复杂度,并分析了PITF模型与一般的Tucker分解模型和正规化分解模型之间的关系。
3. 我们的实验表明我们的BPR-PITF模型的性能在运行时间上优于预测质量最高的方法RTF-TF,计算复杂度从 O(k3) 降到 O(K) ——其中 k 为分解维度。此外,BPR-PITF方法在Bibsonomy数据集上跟RTF-TD效果相当,而在更大的Last.fm数据集上甚至要优于RTF-TD方法。
个性化标签推荐是推荐系统中近来的一个热门话题。Hotho等人便引进了PageRank的改进版本FolkRank[5]。
个性化标签推荐是给用户推荐一个用于注释(如,描述)某件产品的标签列表。例如,在一个音乐网站上,一个听众(用户)想要给一首音乐(产品)打上标签,系统给他推荐了他可能想要用于标记这首歌的关键词列表。为了推断这个列表,一个个性化标签推荐系统可以使用系统中的历史数据也就是过去的标记行为。例如,推荐系统可以利用用户过去给相似的产品打过的标签,或者更一般化地,利用相似用户给相似产品打过的相似标签。
为了形式化描述个性化标签推荐问题,我们使用[18]中的数学符号: U 为所有用户集合, I 是所有产品集合, T 是所有标签集合。历史标签信息由 S⊆U×I×T 给定。由于这是一个分类变量上的三元关系,因此 S 可以看作是一个三维张量(如图1所示), S 中的三元组为历史观测值。对于标签推荐而言,我们的任务是,对于向一个给定用户-产品对 (u,i) ,推荐一个标签列表。按照[7]的描述,我们称这样一个组合 (u,i) 为一个帖子 (post) ,并定义所有可观测的帖子如下:
从标签系统的数据中进行数据挖掘和机器学习的主要问题在于数据中仅有正向标签行为 S (如图1所示)。也就是说,系统仅仅知道用户会给产品打上什么标签而不知道用户不会给产品打上什么标签。而在应用机器学习算法(例如优化一个目标函数)时这样的负样本也是必须的。常见的方法[22,6,16]是将不在 S 中的所有三元组均设置为负样本。这种方法对于标签任务而言存在多种缺陷[18]。
因此,我们提出从 S 中推断成对排序约束 DS [17][18]。其基本思想是对于一个帖子 (u,i) ,我们可以假设用户更喜欢标签 tA 而不是标签 tB 当且仅当我们数据中存在 (u,i,tA) 而不存 (u,i,tB) 。如图2所示。基于成对约束的训练数据 DS 定义为:
在本节我们推导标签推荐的最优化准则BPR-OPT和学习算法LEARNBPR,该方法随后会被用于优化分解模型。注意到最优化准则和学习算法都是通用的而不是仅限于分解模型。本节的分析与[17]中用于产品推荐的的BPR-OPT和LEARNBPR的推导紧密相关。
分解模型是推荐系统中非常成功的一类模型。例如在Netflix大奖赛上表现最好的模型就是基于矩阵分解的[10,11]。此外对于产品推荐任务,分解模型[6,16,17,20]的表现也要优于最近邻协同过滤或是贝叶斯模型 URP [15]和 PLSA [4]。而对于标签推荐,最近的结果[18,22]表明分解模型可以生成比其它方法如Folkrank和改进Pagerank[7]更好的预测结果。与二维分解模型(矩阵分解)相比,在标签推荐中有多种分解数据的方法。据我们所知,在标签推荐中仅仅分析过基于Tucker分解的张量分解模型[18,22]。
接下来,我们介绍三种用于标签推荐的分解模型:Tucker分解(TD),Canonical分解(CD)和我们提出的两两交互张量分解模型(PITF)(如图4所示)。我们会介绍如何用BPR方法来学习每种模型以及三种模型的关系。
我们所有的分解模型的目的是为预测一个评分函数 Y^:U×I×T⇒R ,这个评分函数可以视作一个三维张量 Y ,记录 (u,i,t) 中的值即为评分 y^u,i,t 。这意味着为了对一对帖子推荐标签,我们需要对 y^u,i,t 进行排序。因此为了应用BPR优化,我们令:
塔克分解[23]是将一个高维立方体分解为一个核心张量和每个维度上的因子矩阵。
CD模型(正规化分解,Canonical Decomposition)是一般化Tucker分解模型的特例。
我们的模型将用户、标签和产品之间的关系分解为两两交互的关系:
我们已经说明了所提模型PITF与TD和CD模型的关系。显然这些模型的表现力关系为:
在我们的实验评价中,我们研究了所提PITF模型的学习时间和预测质量。对于运行时间,我们想通过实际比较证实计算复杂度的理论分析。对于预测质量,我们探究了CD/PITF的运行速度是否以牺牲预测质量为代价——也就是,模型是否对于预测质量和运行有一个权衡。
我们使用了三个数据集用于实验验证:Bibsonomy和Last.fm[7,18]和ECML/PKDD 2009知识发现竞赛中的数据集。所有的数据集均为p–cores
S 的p-core指的是,S的最大子集有着如下性质:每个用户,每个产品和每个标签至少出现在p个posts中。
——对于Bibsonomy数据集是5-core,对于Last.fm数据集是10-core,对于ECML/PKDD数据集是2-core。数据集特征如表1所示。
对于Bibsonomy和Last.fm数据集,我们用了文献[8,18]中同样的设置:对于每个用户,从训练集 Strain 中随机移除一个帖子并将其放入测试集 Stest 中(根据文献分析,这里随机移除一个帖子的意思是随机移除一个用户-项目对及用户在该项目上的所有标签)。对于ECML数据集,我们随机移除共计1185个帖子,将它们放入测试集中,原因在于在该数据集中很多用户只有两个帖子。此外在ECML数据集中,我们仅仅移除掉那些训练集中仍包含有2-core的帖子。
在进行上述数据集分割后,我们基于训练集训练推荐系统,然后在测试集上测试预测精度。我们使用TopN推荐列表中较为常见的评价方案F-measure。