您的位置:首页 > 其它

基于两两交互张量分解模型的个性化标签推荐

2016-05-08 10:14 585 查看
基于PITF的个性化标签推荐
摘要

关键词

引言

相关工作
个性化标签推荐

非个性化标签推荐

张量分解模型

成对交互模型

个性化标签推荐
形式化定义

数据分析

标签推荐的贝叶斯个性化排序BPR
BPR最优化准则

BPR学习算法

张量分解模型
塔克分解模型TDTF

规范化分解模型CDTF

成对交互张量分解模型PITF

TDCD和PITF之间的关系

实验评价
数据集

评价方法

实验结果
学习运行时间

预测质量

ECMLPKDD 2009知识发现挑战赛

结论和未来工作

基于PITF的个性化标签推荐

摘要

  在很多最近的网站中,标签扮演了一个重要的角色。推荐系统在用户想要给某个产品打标签时向其推荐他可能会使用的标签。基于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^3)降到O(K)O(K)——其中kk为分解维度。此外,BPR-PITF方法在Bibsonomy数据集上跟RTF-TD效果相当,而在更大的Last.fm数据集上甚至要优于RTF-TD方法。  

相关工作

个性化标签推荐

  个性化标签推荐是推荐系统中近来的一个热门话题。Hotho等人便引进了PageRank的改进版本FolkRank[5]。

非个性化标签推荐

张量分解模型

成对交互模型

个性化标签推荐

  个性化标签推荐是给用户推荐一个用于注释(如,描述)某件产品的标签列表。例如,在一个音乐网站上,一个听众(用户)想要给一首音乐(产品)打上标签,系统给他推荐了他可能想要用于标记这首歌的关键词列表。为了推断这个列表,一个个性化标签推荐系统可以使用系统中的历史数据也就是过去的标记行为。例如,推荐系统可以利用用户过去给相似的产品打过的标签,或者更一般化地,利用相似用户给相似产品打过的相似标签。

形式化定义

  为了形式化描述个性化标签推荐问题,我们使用[18]中的数学符号:UU为所有用户集合,II是所有产品集合,TT是所有标签集合。历史标签信息由S⊆U×I×TS\subseteq U\times I\times T给定。由于这是一个分类变量上的三元关系,因此SS可以看作是一个三维张量(如图1所示),SS中的三元组为历史观测值。对于标签推荐而言,我们的任务是,对于向一个给定用户-产品对(u,i)(u,i),推荐一个标签列表。按照[7]的描述,我们称这样一个组合(u,i)(u,i)为一个帖子(post)(post),并定义所有可观测的帖子如下:

PS:={(u,i)|∃t∈T:(u,i,t)∈S}P_S: = \left \{(u,i)| \exists t \in T:(u,i,t) \in S \right \}

PSP_S可以视作根据OR操作SS在用户/产品维度上的二维映射。

  对给定帖子(u,i)(u,i)推荐标签的任务可以形式化描述为一个排序问题,也就是预测>u,i⊂T×T>_{u,i} \subset T \times T

这意味着排序>u,i>_{u,i}必须满足:

∀t1,t2∈T:t1≠t2⇒t1>u,it2∨t2>u,it1(1)\forall t_1,t_2 \in T: t_1\neq t_2\Rightarrow t_1>_{u,i}t_2\vee t_2>_{u,i}t_1 (1)

∀t1,t2∈T:t1>u,it2∨t2>u,it1⇒t1=t2(2)\forall t_1,t_2 \in T:t_1>_{u,i}t_2\vee t_2>_{u,i}t_1 \Rightarrow t_1 = t_2 (2)

∀t1,t2,t3∈T:t1>u,it2∨t2>u,it3⇒t1>u,it3(3)\forall t_1,t_2,t_3 \in T:t_1>_{u,i}t_2\vee t_2>_{u,i}t_3 \Rightarrow t_1 > _{u,i}t_3(3)

其中(1)式为总体性,(2)为反对称性,(3)为传递性。本文所有模型都是预测一个评分函数Y^:U×I×T⇒R\hat{Y}:U \times I \times T \Rightarrow R,已得到一个满足反对称性和传递性的排序。如果评分函数对于同一个用户-产品组合的两个不同标签给出了相同的分数,那么我们随机将某个标签置于另一个标签的前面以保证总体性。

  通常我们需要约束预测标签的数量。因此我们将Top-N标签列表定义为:

Top(u,i,N):=argmaxNt∈Ty^u,i,t(4)
Top(u,i,N):=argmax_{t\in T}^{N} \hat{y}_{u,i,t}(4)

其中N为目标列表中的标签数目。

数据分析

  从标签系统的数据中进行数据挖掘和机器学习的主要问题在于数据中仅有正向标签行为SS(如图1所示)。也就是说,系统仅仅知道用户会给产品打上什么标签而不知道用户不会给产品打上什么标签。而在应用机器学习算法(例如优化一个目标函数)时这样的负样本也是必须的。常见的方法[22,6,16]是将不在SS中的所有三元组均设置为负样本。这种方法对于标签任务而言存在多种缺陷[18]。

  因此,我们提出从SS中推断成对排序约束DSD_S[17][18]。其基本思想是对于一个帖子(u,i)(u,i),我们可以假设用户更喜欢标签tAt_A而不是标签tBt_B当且仅当我们数据中存在(u,i,tA)(u,i,t_A)而不存(u,i,tB)(u,i,t_B)。如图2所示。基于成对约束的训练数据DSD_S定义为:

DS:={(u,i,tA,tB)|(u,i,tA)∈S∧(u,i,tA)∉S}D_S:=\left \{ (u,i,t_A,t_B)|(u,i,t_A)\in S \wedge (u,i,t_A)\notin S \right \}

  我们的方法的主要优势在于,应该预测出的排序>.,.>_{.,.}被视为缺失值(即图2中的问号)。其它方法如[22]在学习时假设所有这些标签都是不被喜欢的,也就是它们的偏好得分都是0。[17]中对于相关的产品推荐任务有着详细的讨论。

标签推荐的贝叶斯个性化排序(BPR)

  在本节我们推导标签推荐的最优化准则BPR-OPT和学习算法LEARNBPR,该方法随后会被用于优化分解模型。注意到最优化准则和学习算法都是通用的而不是仅限于分解模型。本节的分析与[17]中用于产品推荐的的BPR-OPT和LEARNBPR的推导紧密相关。

BPR最优化准则

BPR学习算法

张量分解模型

  分解模型是推荐系统中非常成功的一类模型。例如在Netflix大奖赛上表现最好的模型就是基于矩阵分解的[10,11]。此外对于产品推荐任务,分解模型[6,16,17,20]的表现也要优于最近邻协同过滤或是贝叶斯模型URPURP[15]和PLSAPLSA[4]。而对于标签推荐,最近的结果[18,22]表明分解模型可以生成比其它方法如Folkrank和改进Pagerank[7]更好的预测结果。与二维分解模型(矩阵分解)相比,在标签推荐中有多种分解数据的方法。据我们所知,在标签推荐中仅仅分析过基于Tucker分解的张量分解模型[18,22]。

  接下来,我们介绍三种用于标签推荐的分解模型:Tucker分解(TD),Canonical分解(CD)和我们提出的两两交互张量分解模型(PITF)(如图4所示)。我们会介绍如何用BPR方法来学习每种模型以及三种模型的关系。

  我们所有的分解模型的目的是为预测一个评分函数Y^:U×I×T⇒R\hat{Y}: U\times I\times T \Rightarrow \mathbb{R},这个评分函数可以视作一个三维张量YY,记录(u,i,t)(u,i,t)中的值即为评分y^u,i,t\hat{y}_{u,i,t}。这意味着为了对一对帖子推荐标签,我们需要对y^u,i,t\hat{y}_{u,i,t}进行排序。因此为了应用BPR优化,我们令:

  y^u,i,tA,tB=y^u,i,tA−y^u,i,tB\hat{y}_{u,i,t_A,t_B}=\hat{y}_{u,i,t_A} - \hat{y}_{u,i,t_B}  

塔克分解模型(TDTF)

  塔克分解[23]是将一个高维立方体分解为一个核心张量和每个维度上的因子矩阵。

  y^TDu,i,t=∑u~∑i~∑t~c^u~,i~,t~⋅u^u,u~⋅i^i,i~⋅t^t,t~(9)\hat{y}_{u,i,t}^{TD}=\sum_{\tilde{u}}\sum_{\tilde{i}}\sum_{\tilde{t}} \hat{c}_{\tilde{u},\tilde{i},\tilde{t}} \cdot \hat{u}_{u,\tilde{u}} \cdot \hat{i}_{i,\tilde{i}} \cdot \hat{t}_{t,\tilde{t}} (9)

或者等价于张量乘积(如图4):

Y^TD:=C^×uU^×iI^×tT^(10)\hat{Y}^{TD}:= \hat{C} \times _u \hat{U} \times _i \hat{I} \times _t \hat{T} (10)

模型参数为:

C^∈Rku×ki×kt,U^∈R|U|×ku \hat{C} \in \mathbb{R}^{k_u \times k_i \times k_t}, \hat{U} \in \mathbb{R}^{|U| \times k_u}

I^∈R|I|×ki,T^∈R|T|×kt\hat{I} \in \mathbb{R}^{|I| \times k_i}, \hat{T} \in \mathbb{R}^{|T| \times k_t}

  为了用BPR-OPT学习TD模型,各参数的梯度∂Y^TD∂Θ^\frac{\partial \hat{Y}^{TD}}{\partial \hat{\Theta}}分别如下:

∂y^TDu,i,t∂c^u~,i~,t~=u^u,u~⋅i^i,i~⋅t^t,t~
\frac{\partial \hat{y}_{u,i,t}^{TD}}{\partial \hat{c}_{\tilde{u},\tilde{i},\tilde{t}}} = \hat{u}_{u,\tilde{u}} \cdot \hat{i}_{i,\tilde{i}} \cdot \hat{t}_{t,\tilde{t}}

∂y^TDu,i,t∂u^u,u~=∑i~∑t~c^u~,i~,t~⋅i^i,i~⋅t^t,t~
\frac{\partial \hat{y}_{u,i,t}^{TD}}{\partial \hat{u}_{u,\tilde{u}}} = \sum_{\tilde{i}}\sum_{\tilde{t}} \hat{c}_{\tilde{u},\tilde{i},\tilde{t}} \cdot \hat{i}_{i,\tilde{i}} \cdot \hat{t}_{t,\tilde{t}}

∂y^TDu,i,t∂i^i,i~=∑u~∑t~c^u~,i~,t~⋅u^u,u~⋅t^t,t~
\frac{\partial \hat{y}_{u,i,t}^{TD}}{\partial \hat{i}_{i,\tilde{i}}} = \sum_{\tilde{u}}\sum_{\tilde{t}} \hat{c}_{\tilde{u},\tilde{i},\tilde{t}} \cdot \hat{u}_{u,\tilde{u}} \cdot \hat{t}_{t,\tilde{t}}

∂y^TDu,i,t∂t^t,t~=∑u~∑i~c^u~,i~,t~⋅u^u,u~⋅i^i,i~
\frac{\partial \hat{y}_{u,i,t}^{TD}}{\partial \hat{t}_{t,\tilde{t}}} = \sum_{\tilde{u}}\sum_{\tilde{i}} \hat{c}_{\tilde{u},\tilde{i},\tilde{t}} \cdot \hat{u}_{u,\tilde{u}} \cdot \hat{i}_{i,\tilde{i}}

  TD模型的一个明显的缺陷在于:预测一个元组(u,i,t)(u,i,t)的时间复杂度为O(k3)O(k^3)(其中k=min(ku,ki,kt)k=min(k_u,k_i,k_t)。因此对于即使是中等规模的分解模型,TD速度也很慢。

规范化分解模型(CDTF)

  CD模型(正规化分解,Canonical Decomposition)是一般化Tucker分解模型的特例。

y^CDu,i,t=∑fku^u,f⋅i^i,f⋅t^t,f(11)
\hat{y}_{u,i,t}^{CD}=\sum_{f}^{k} \hat{u}_{u,f} \cdot \hat{i}_{i,f} \cdot \hat{t}_{t,f} (11)

这其实是将Tucker分解模型的C^\hat{C}设置为对角张量的形式:

c^u~,i~,t~={10if u~=i~=t~else
\begin{equation}
\hat{c}_{\tilde{u},\tilde{i},\tilde{t}}=
\begin{cases}
1 &\mbox{if $\tilde{u} = \tilde{i} = \tilde{t}$}\\
0 &\mbox{else}
\end{cases}
\end{equation}

显然只有前kk个特征被用到,也就是如果特征矩阵的维度不同,那么有些特征就不会被用到,因为对于这些记录它的核心向量为0。

  这个模型的梯度为:

∂y^CDu,i,t∂u^u,f=i^i,f⋅t^t,f
\frac{\partial \hat{y}_{u,i,t}^{CD}}{\partial \hat{u}_{u,f}} = \hat{i}_{i,f} \cdot \hat{t}_{t,f}

∂y^CDu,i,t∂i^i,f=u^u,f⋅t^t,f
\frac{\partial \hat{y}_{u,i,t}^{CD}}{\partial \hat{i}_{i,f}} = \hat{u}_{u,f} \cdot \hat{t}_{t,f}

∂y^CDu,i,t∂t^t,f=u^u,f⋅i^i,f
\frac{\partial \hat{y}_{u,i,t}^{CD}}{\partial \hat{t}_{t,f}} = \hat{u}_{u,f} \cdot \hat{i}_{i,f}

  显然,CD模型的时间复杂度更低,因为模型公式不包含嵌套和,时间复杂度为O(k)O(k)。

成对交互张量分解模型(PITF)

  我们的模型将用户、标签和产品之间的关系分解为两两交互的关系:

y^u,i,t=∑fu^Tu,f⋅t^Ut,f+∑fi^Ti,f⋅t^It,f+∑fu^Iu,f⋅i^Ui,f(12)
\hat{y}_{u,i,t} = \sum_f \hat{u}_{u,f}^{T} \cdot \hat{t}_{t,f}^{U} + \sum_f \hat{i}_{i,f}^{T} \cdot \hat{t}_{t,f}^{I} + \sum_f \hat{u}_{u,f}^{I} \cdot \hat{i}_{i,f}^{U} (12)

在用BPR优化模型时我们无需考虑用户和产品的交互关系。因为给定一个帖子(u,i)(u,i),优化准则BPRBPR和排序都会忽略用户产品交互的得分。由此得到了最终的模型,我们称之为PITF(Pairwise Interaction Tensor Factorization)模型:

y^u,i,t=∑fu^u,f⋅t^Ut,f+∑fi^i,f⋅t^It,f(13)
\hat{y}_{u,i,t} = \sum_f \hat{u}_{u,f} \cdot \hat{t}_{t,f}^{U} + \sum_f \hat{i}_{i,f} \cdot \hat{t}_{t,f}^{I} (13)

模型参数为

U^∈R|U|×k,I^∈R|I|×k \hat{U} \in \mathbb{R}^{|U| \times k}, \hat{I} \in \mathbb{R}^{|I| \times k}

T^U∈R|T|×k,T^I∈R|T|×k \hat{T}^{U} \in \mathbb{R}^{|T| \times k}, \hat{T}^{I} \in \mathbb{R}^{|T| \times k}

与CD模型相同,预测一个元组(u,i,t)(u,i,t)的时间复杂度为O(k)O(k)。

  PITF模型是CD模型的一个特例:

u^CDu,f={u^u,f,1,if f≤kelse\begin{equation}
\hat{u}_{u,f}^{CD}=
\begin{cases}
\hat{u}_{u,f}, &\mbox{if $ f \leq k$}\\
1, &\mbox{else}
\end{cases}
\end{equation}

i^CDi,f={1,i^i,f−k,if f≤kelse\begin{equation}
\hat{i}_{i,f}^{CD}=
\begin{cases}
1, &\mbox{if $ f \leq k$}\\
\hat{i}_{i,f-k}, &\mbox{else}
\end{cases}
\end{equation}

t^CDu,f=⎧⎩⎨t^Ut,f,t^It,f−k,if f≤kelse\begin{equation}
\hat{t}_{u,f}^{CD}=
\begin{cases}
\hat{t}_{t,f}^{U}, &\mbox{if $ f \leq k$}\\
\hat{t}_{t,f-k}^{I}, &\mbox{else}
\end{cases}
\end{equation}

  PITF模型的梯度为:

∂y^u,i,t∂u^u,f=t^Ut,f,∂y^u,i,t∂i^i,f=t^It,f,
\frac{\partial \hat{y}_{u,i,t}}{\partial \hat{u}_{u,f}} = \hat{t}_{t,f}^U, \frac{\partial \hat{y}_{u,i,t}}{\partial \hat{i}_{i,f}} = \hat{t}_{t,f}^I,

∂y^u,i,t∂t^Ut,f=u^u,f,∂y^u,i,t∂t^It,f=i^i,f
\frac{\partial \hat{y}_{u,i,t}}{\partial \hat{t}_{t,f}^{U}} = \hat{u}_{u,f},
\frac{\partial \hat{y}_{u,i,t}}{\partial \hat{t}_{t,f}^{I}} = \hat{i}_{i,f}

学习PITF的完整BPR算法如图5所示。

TD,CD和PITF之间的关系

  我们已经说明了所提模型PITF与TD和CD模型的关系。显然这些模型的表现力关系为:

  MTD⊃MCD⊃MPITF\textit{M}^{TD} \supset \textit{M}^{CD} \supset \textit{M}^{PITF}

初看起来,我们可能认为削弱了模型的表现力可能会导致预测质量下降,也就是用质量换时间。但是实际上我们的实验表明不是这样。原因在于PI方法可以对TD和CD较难建模的结构进行刻画。特别是正则化方法如岭回归通常假设模型参数服从均值为0的正态分布Θ∼N(0,σ2ΘI)\Theta \sim \mathit{N}(\mathit{0},\mathit{\sigma_\Theta^2 I}),这种假设可能无法学习到正确的模型。因此,如果已知模型结构的先验,那么对它进行正确建模可能比学习该模型更好。

实验评价

  在我们的实验评价中,我们研究了所提PITF模型的学习时间和预测质量。对于运行时间,我们想通过实际比较证实计算复杂度的理论分析。对于预测质量,我们探究了CD/PITF的运行速度是否以牺牲预测质量为代价——也就是,模型是否对于预测质量和运行有一个权衡。

数据集

  我们使用了三个数据集用于实验验证:Bibsonomy和Last.fm[7,18]和ECML/PKDD 2009知识发现竞赛中的数据集。所有的数据集均为p–cores

SS的p-core指的是,S的最大子集有着如下性质:每个用户,每个产品和每个标签至少出现在p个posts中。

——对于Bibsonomy数据集是5-core,对于Last.fm数据集是10-core,对于ECML/PKDD数据集是2-core。数据集特征如表1所示。

评价方法

  对于Bibsonomy和Last.fm数据集,我们用了文献[8,18]中同样的设置:对于每个用户,从训练集StrainS_{train}中随机移除一个帖子并将其放入测试集StestS_{test}中(根据文献分析,这里随机移除一个帖子的意思是随机移除一个用户-项目对及用户在该项目上的所有标签)。对于ECML数据集,我们随机移除共计1185个帖子,将它们放入测试集中,原因在于在该数据集中很多用户只有两个帖子。此外在ECML数据集中,我们仅仅移除掉那些训练集中仍包含有2-core的帖子。

  在进行上述数据集分割后,我们基于训练集训练推荐系统,然后在测试集上测试预测精度。我们使用TopN推荐列表中较为常见的评价方案F-measure。

Prec(Stest,N):=avg(u,i)∈PStest|Top(u,i,N)⋂{t|(u,i,t)∈Stest}|N Prec(S_{test},N):= \underset{(u,i) \in P_{S_{test}}}{avg} \frac{|Top(u,i,N) \bigcap \left \{ t|(u,i,t) \in S_{test}\right \}|}{N}

Rec(Stest,N):=avg(u,i)∈PStest|Top(u,i,N)⋂{t|(u,i,t)∈Stest}|{t|(u,i,t)∈Stest} Rec(S_{test},N):= \underset{(u,i) \in P_{S_{test}}}{avg} \frac{|Top(u,i,N) \bigcap \left \{ t|(u,i,t) \in S_{test}\right \}|}{\left \{ t|(u,i,t) \in S_{test}\right \}}

F1(Stest,N):=2⋅Prec(Stest,N)⋅Rec(Stest,N)Prec(Stest,N)+Rec(Stest,N)F1(S_{test},N):= \frac{2 \cdot Prec(S_{test},N) \cdot Rec(S_{test},N)}{Prec(S_{test},N) + Rec(S_{test},N)}

  实验重复10次,每次抽取新的测试/训练集进行实验。我们给出的是所有次实验的结果均值。

实验结果

学习运行时间

预测质量

ECML/PKDD 2009知识发现挑战赛

结论和未来工作

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: