BPR: Bayesian Personalized Ranking from Implicit Feedback


论文链接:https://arxiv.org/abs/1205.2618

Abstract

  项目推荐是预测一组项目(例如网站、电影、产品)的个性化排名的任务。在本文中,我们研究了最常见的隐性反馈场景(例如点击、购买)。隐式反馈的项目推荐有很多方法,如矩阵分解(MF)或自适应k近邻(kNN)。尽管这些方法是为个性化排名的项目预测任务而设计的,但没有一种方法是直接针对排名进行优化的。在本文中,我们提出了一种用于个性化排序的通用优化准则BPR-Opt,它是从问题的贝叶斯分析中导出的最大后验估计。我们还提供了一种通用学习算法,用于优化与BPR-Opt相关的模型。该学习方法基于随机梯度下降和自助采样。我们展示了如何将我们的方法应用于两个最先进的推荐模型:矩阵分解和自适应kNN。我们的实验表明,对于个性化排序任务,我们的优化方法优于MF和kNN的标准学习技术。结果表明,为正确的标准优化模型的重要性。


1. Introduction

  推荐内容是许多信息系统中的一项重要任务。例如,像亚马逊这样的在线购物网站为每个客户提供用户可能感兴趣的个性化产品推荐。其他例子还有像YouTube这样的视频门户网站,向客户推荐电影。个性化对内容提供商和客户都很有吸引力,内容提供商可以增加销售额或浏览量,客户可以更容易地找到有趣的内容。在本文中,我们主要关注项目推荐。项目推荐的任务是为一组项目创建用户特定的排名。用户对物品的偏好是从用户过去与系统的交互中得知的,例如他的购买历史、查看历史等。
  推荐系统是一门活跃的研究课题。大多数最近的工作是关于用户提供显式反馈的场景,例如在评级方面。然而,在现实世界中,大多数反馈不是显式的,而是隐式的。隐式反馈是自动跟踪的,如监控点击、查看时间、购买等。因此,收集更容易,因为用户不必明确表达自己的品味。事实上,几乎任何信息系统都可以使用隐式反馈——例如,web服务器在日志文件中记录任何的页面访问。
  在本文中,我们提出了一种学习个性化排名模型的通用方法。这项工作的贡献包括:

  1. 我们提出了从最佳个性化排序的最大后验估计导出的通用优化准则BPR-Opt。我们展示了BPR-Opt与ROC曲线下面积最大化的相似性。
  2. 为了最大化BPR-Opt,我们提出了基于训练三元组自助采样的随机梯度下降的通用学习算法LearnBPR。我们表明,我们的算法对于优化BPR-Opt优于标准梯度下降技术。
  3. 我们展示了如何将LearnBPR应用于两类最先进的推荐模型。
  4. 我们的实验经验表明,对于个性化排名任务,使用BPR学习模型优于其他学习方法。

2. Related Work

  推荐系统最流行的模型是k近邻(kNN)协同过滤。传统上,kNN的相似度矩阵是通过启发式方法(例如皮尔逊相关法)计算的,但在最近的工作中,相似度矩阵被视为模型参数,并专门针对任务进行学习。最近,矩阵分解(MF)在隐式和显式反馈的推荐系统中非常流行。在早期的工作中,奇异值分解(SVD)被提出用于学习特征矩阵。SVD学习到的MF模型很容易过度拟合。因此,提出了正则化学习方法。对于项目预测,Hu等人和Pan等人提出了具有事件权重的正则化最小二乘优化(WR-MF)。事件权重可用于减少负样例的影响。Hofmann提出了一种用于项目推荐的概率潜在语义模型。Schmidt-Thieme将该问题转化为多分类问题,并使用一组二分类器来解决。尽管上面讨论的所有项目预测工作都是在个性化排名数据集上进行评估的,但这些方法都没有直接针对排名优化其模型参数。与之相反,他们会针对预测某个项目是否被用户选中来进行优化。在我们的工作中,我们推导出了基于项目对(即两个项目的用户特定顺序)的个性化排序的优化标准。我们将展示像MF或自适应kNN这样的最新模型如何根据该标准进行优化,以提供比常规学习方法更好的排序质量。第5节详细讨论了我们的方法与Hu等人和Pan等人的WR-MF方法以及最大间隔矩阵分解之间的关系。在第4.1.1节中,我们还将讨论优化标准与AUC优化之间的关系。
  在本文中,我们着重于模型参数的离线学习。MF已经研究了将学习方法扩展到在线学习场景(例如,添加了一个新用户,他的历史记录从0增加到1、2、……)的评分预测的相关任务。同样的折叠策略也可用于BPR。
  也有学习使用非协同模型进行排名的相关工作。一个方向是对排列上的分布进行建模。Burges等人使用梯度下降优化神经网络模型进行排名。所有这些方法只学习一个排名——即它们是非个性化的。与此相反,我们的模型是学习个性化排名的协同模型,即每个用户一个单独的排名。在我们的评估中,根据经验表明,在典型的推荐者设置中,我们的个性化BPR模型甚至优于非个性化排名的理论上限。


3. Personalized Ranking

  个性化推荐任务是要给用户提供一个项目的排名列表。这也称作项目推荐。一个例子就是电商想推荐一个用户可能想购买的项目的个性化排名列表。在本文中,我们研究了必须根据用户的隐性行为(例如,过去的购买)来推断排名的场景。关于隐式反馈系统的有趣之处在于,只有正向的观察结果可用。未观察到的用户-物品对(例如,用户尚未购买物品)是真实的负面反馈(用户对购买物品不感兴趣)和缺失值(用户可能希望在未来购买物品)的混合。

3.1 Formalization

  设 UUU 为全部用户的集合,III 为全部项目的集合。在我们的场景中,隐式反馈 S⊆U×IS\subseteq U\times IS⊆U×I 是可用的(见图1左侧)。此类反馈的例子包括在线商店中的购买、视频门户中的浏览或网站上的点击。现在推荐系统的任务是为用户提供所有项目的个性化的总排名 >u∈I2>_u\in I^2>u​∈I2,其中 >u>_u>u​ 必须满足如下的属性:
∀i,j∈I:i≠j⇒i>uj∨j>ui(完全性)\forall i,j\in I:i\neq j\Rightarrow i>_uj\vee j>_ui \tag{完全性} ∀i,j∈I:i=j⇒i>u​j∨j>u​i(完全性)
∀i,j∈I:i>uj∧j>ui⇒i=j(反对称性)\forall i,j\in I:i>_uj\wedge j>_ui\Rightarrow i=j \tag{反对称性} ∀i,j∈I:i>u​j∧j>u​i⇒i=j(反对称性)
∀i,j,k∈I:i>uj∧j>uk⇒i>uk(传递性)\forall i,j,k\in I:i>_uj\wedge j>_uk\Rightarrow i>_uk \tag{传递性} ∀i,j,k∈I:i>u​j∧j>u​k⇒i>u​k(传递性)
为了方便,我们还定义了:
Iu+:={i∈I:(u,i)∈S}I^+_u:=\{i\in I:(u,i)\in S\} Iu+​:={i∈I:(u,i)∈S}
Ui+:={u∈U:(u,i)∈S}U^+_i:=\{u\in U:(u,i)\in S\} Ui+​:={u∈U:(u,i)∈S}

图1:左侧显示了观测数据S。直接从S学习是不可行的,因为只观察到正反馈。通常,通过用0值填充矩阵来生成负数据。

3.2 Analysis of the problem setting

  正如我们之前指出的,在隐式反馈系统中,只观察到正类。剩下的数据是实际负值和缺失值的混合物。处理缺失值问题的最常见方法是忽略所有这些问题,但典型的机器学习模型无法学习任何东西,因为它们无法区分负向反馈和缺失值这两者。
  项目推荐通常的方法是预测反映用户对项目偏好的项目的个性化得分 x^ui\hat{x}_{ui}x^ui​。然后根据得分对项目进行排序。项目推荐的机器学习方法通常通过给对 (u,i)∈S(u,i)\in S(u,i)∈S 赋予正类标签,所有其他 (U×I)∖S(U\times I)\setminus S(U×I)∖S 中的组合赋予负类标签(见图1)来创建训练数据。然后将模型拟合到该数据。这意味着模型是以预测 SSS 中元素的值1,其余元素的值为0的目的来优化的。这种方法的问题是,所有应该由模型在未来排序的元素 ((U×I)∖S)((U\times I)\setminus S)((U×I)∖S) 在训练期间作为负反馈呈现给学习算法。这意味着一个具有足够表现力的模型(可以精确地拟合训练数据)根本无法排名,因为它预测的只有0。这种机器学习方法能够预测排名的唯一原因只有防止过拟合的策略,比如正则化。
  我们使用了一种不同的方法,将项目对用作训练数据,并针对项目对的正确排序进行优化,而不是对单个项目进行评分,这比用负值替换缺失值更能代表问题。从 SSS 中,我们尝试为每个用户重构 >u>_u>u​ 的部分。如果用户 uuu 查看了项目 iii,即 (u,i)∈S(u,i)\in S(u,i)∈S,然后我们假设用户比起所有其他未观察到的项目更喜欢这个项目。例如在图2中,用户 u1u_1u1​ 查看了项目 i2i_2i2​,但没有查看项目 i1i_1i1​,因此我们假设该用户比起 i1i_1i1​ 更喜欢项目 i2i_2i2​:i2>ui1i_2>_ui_1i2​>u​i1​。对于用户都看到的项目,我们无法推断出任何偏好。对于用户尚未看到的两个项目(例如,用户 u1u_1u1​ 的项目 i1i_1i1​ 和 i4i_4i4​)也是如此。为了使其形式化,我们通过以下方式创建训练数据 DS:U×I×ID_S:U\times I\times IDS​:U×I×I:
DS:={(u,i,j)∣i∈Iu+∧j∈I∖Iu+}D_S:=\{(u,i,j)|i\in I^+_u\wedge j\in I\setminus I^+_u\} DS​:={(u,i,j)∣i∈Iu+​∧j∈I∖Iu+​}
(u,i,j)∈DS(u,i,j)\in D_S(u,i,j)∈DS​ 的语义是假设用户 uuu 相比 jjj 更喜欢 iii。由于 >u>_u>u​ 是反对称的,所以负样例会被隐式地认出。

图2:左侧显示了观测数据 SSS。我们的方法在一对项目之间创建用户特定的成对偏好 i>uji>_uji>u​j。在右侧,加号 (+)(+)(+) 表示用户更喜欢项目 iii 而不是项目 jjj;负号 (–)(–)(–) 表示他更喜欢 jjj 而不是 iii。

  我们的方法有两个优势:

  1. 我们的训练数据包括正负对和缺失值。两个未观察到的项目之间的缺失值正是未来必须排序的项目对。这意味着从成对的角度来看,训练数据 DSD_SDS​ 和测试数据是不相交的。
  2. 训练数据是为排名的实际目标而创建的,即,将观察到的 >u>_u>u​ 的子集 DSD_SDS​ 作为训练数据。

4. Bayesian Personalized Ranking (BPR)

  在本节中,我们推导出了解决个性化排名任务的通用方法。它包括个性化排序的一般优化标准BPR-Opt,该标准将通过使用 p(i>uj∣Θ)p(i>_uj|\Theta)p(i>u​j∣Θ) 的似然函数和模型参数 p(Θ)p(\Theta)p(Θ) 先验概率对问题进行贝叶斯分析得出。我们展示了与排名统计AUC(ROC曲线下的面积)的类比。对于与BPR-Opt相关的学习模型,我们提出了LearnBPR算法。最后,我们展示了如何将BPR-Opt和LearnBPR应用于两种最先进的推荐算法,矩阵分解和自适应kNN。使用BPR优化后,这些模型能够比使用常规的训练方法生成更好的排名。

4.1 BPR Optimization Criterion

  为所有项目 i∈Ii\in Ii∈I 找到正确的个性化排名的贝叶斯公式是最大化以下后验概率,其中 Θ\ThetaΘ 表示任意模型类的参数向量(例如矩阵分解)。
p(Θ∣>u)∝p(>u∣Θ)p(Θ)p(\Theta|>_u)\propto p(>_u|\Theta)p(\Theta) p(Θ∣>u​)∝p(>u​∣Θ)p(Θ)
在这里,>u>_u>u​ 是用户 uuu 的期望但潜在的偏好结构。所有用户都被假定为彼此独立。我们还假设对于一个特定用户的每对项目 (i,j)(i,j)(i,j) 的排序独立于每对其他项目的排序。因此,上述用户特定似然函数 p(>u∣Θ)p(>_u|\Theta)p(>u​∣Θ) 可以首先重写为单个密度的乘积,然后对所有用户 u∈Uu\in Uu∈U 进行组合。
∏u∈Up(>u∣Θ)=∏(u,i,j)∈U×I×Ip(i>uj∣Θ)δ((u,i,j)∈DS)⋅(1−p(i>uj∣Θ))δ((u,i,j)∉DS)\prod _{u\in U}p(>_u|\Theta)=\prod _{(u,i,j)\in U\times I\times I}p(i>_uj|\Theta)^{\delta((u,i,j)\in D_S)}\cdot (1-p(i>_uj|\Theta))^{\delta((u,i,j)\notin D_S)} u∈U∏​p(>u​∣Θ)=(u,i,j)∈U×I×I∏​p(i>u​j∣Θ)δ((u,i,j)∈DS​)⋅(1−p(i>u​j∣Θ))δ((u,i,j)∈/DS​)
其中 δ\deltaδ 为指示函数:
δ(b):={1if bis true0else\delta(b):=\begin{cases} 1 & \text{if $b$ is true} \\ 0 & \text{else} \end{cases} δ(b):={10​if b is trueelse​
由于完全性和反对称性,上式可化简为:

∏u∈Up(>u∣Θ)=∏(u,i,j)∈DSp(i>uj∣Θ)\prod _{u\in U} p(>_u|\Theta)=\prod _{(u,i,j)\in D_S} p(i>_uj|\Theta) u∈U∏​p(>u​∣Θ)=(u,i,j)∈DS​∏​p(i>u​j∣Θ)

到目前为止,通常无法保证获得个性化的总顺序。为了这一点,需要满足前面提到的所有特性(完全性、反对称性和传递性)。为此,我们将用户比起项目 jjj 更喜欢项目 iii 的个人概率定义为:

p(i>uj∣Θ):=σ(x^uij(Θ))p(i> _uj|\Theta):=\sigma(\hat{x} _{uij}(\Theta)) p(i>u​j∣Θ):=σ(x^uij​(Θ))

其中 σ\sigmaσ 为logistic sigmoid:

σ(x):=11+e−x\sigma(x):=\frac{1}{1+e^{-x}} σ(x):=1+e−x1​

这里的 x^uij(Θ)\hat{x} _{uij}(\Theta)x^uij​(Θ) 是模型参数向量 Θ\ThetaΘ 的任意实值函数,它捕获了用户 uuu、项目 iii 和项目 jjj 之间的特殊关系。换句话说,我们的通用框架将 uuu、iii 和 jjj 之间的关系建模任务委托给底层模型类,如矩阵分解或自适应kNN,它们负责估计 x^uij(Θ)\hat{x} _{uij}(\Theta)x^uij​(Θ)。因此,对个性化总排序 >u>_u>u​ 进行统计建模变得可行。为了方便起见,下面我们将省略 x^uij\hat{x} _{uij}x^uij​ 的参数 Θ\ThetaΘ。
  到目前为止,我们只讨论了似然函数。为了完成个性化排序任务的贝叶斯建模方法,我们引入了一个一般的先验密度 p(Θ)p(\Theta)p(Θ),它是一个具有零均值和方差-协方差矩阵 ΣΘ\Sigma _{\Theta}ΣΘ​ 的正态分布。

p(Θ)∼N(0,ΣΘ)p(\Theta)\sim N(0,\Sigma _{\Theta}) p(Θ)∼N(0,ΣΘ​)

在下文中,为了减少未知超参数的数量,我们设 ΣΘ=λΘI\Sigma _{\Theta}=\lambda _{\Theta}IΣΘ​=λΘ​I。现在,我们可以公式化最大后验估计,以推导出个性化排序BPR-Opt的通用优化准则。

BPR-Opt:=ln p(Θ∣>u)=ln p(>u∣Θ)p(Θ)=ln ∏(u,i,j)∈DSσ(x^uij)p(Θ)=∑(u,i,j)∈DSln σ(x^uij)+ln p(Θ)=∑(u,i,j)∈DSln σ(x^uij)−λΘ∥Θ∥2\begin{aligned}\text{BPR-Opt}&:=\text{ln } p(\Theta|>_u) \\ &=\text{ln }p(>_u|\Theta)p(\Theta) \\ &=\text{ln }\prod _{(u,i,j)\in D_S}\sigma(\hat{x} _{uij})p(\Theta) \\ &=\sum _{(u,i,j)\in D_S}\text{ln }\sigma(\hat{x} _{uij})+\text{ln }p(\Theta) \\ &=\sum _{(u,i,j)\in D_S}\text{ln }\sigma(\hat{x} _{uij})-\lambda _{\Theta}\lVert\Theta\rVert ^2 \end{aligned} BPR-Opt​:=ln p(Θ∣>u​)=ln p(>u​∣Θ)p(Θ)=ln (u,i,j)∈DS​∏​σ(x^uij​)p(Θ)=(u,i,j)∈DS​∑​ln σ(x^uij​)+ln p(Θ)=(u,i,j)∈DS​∑​ln σ(x^uij​)−λΘ​∥Θ∥2​

其中 λΘ\lambda _{\Theta}λΘ​ 是模型特定的正则化参数。

4.1.1 Analogies to AUC optimization

  有了贝叶斯个性化排序(BPR)方案的这个公式,现在很容易理解BPR和AUC之间的类比。每个用户的AUC通常被定义为:

AUC(u):=1∣Iu+∣∣I∖Iu+∣∑i∈Iu+∑j∈∣I∖Iu+∣δ(x^uij>0)\text{AUC}(u):=\frac{1}{\lvert I^+_u\rvert \lvert I\setminus I^+_u\rvert}\sum _{i\in I^+_u}\sum _{j\in \lvert I\setminus I^+_u\rvert}\delta(\hat{x} _{uij}>0) AUC(u):=∣Iu+​∣∣I∖Iu+​∣1​i∈Iu+​∑​j∈∣I∖Iu+​∣∑​δ(x^uij​>0)

因此,平均AUC为:

AUC:=1∣U∣∑u∈UAUC(u)\text{AUC}:=\frac{1}{\lvert U\rvert}\sum _{u\in U}\text{AUC}(u) AUC:=∣U∣1​u∈U∑​AUC(u)

用我们的 DSD_SDS​ 符号,可以写为:

AUC(u)=∑(u,i,j)∈DSzuδ(x^uij>0)\text{AUC}(u)=\sum _{(u,i,j)\in D_S}z_u\delta(\hat{x} _{uij}>0) AUC(u)=(u,i,j)∈DS​∑​zu​δ(x^uij​>0)

其中 zuz_uzu​ 为归一化常数:

zu=1∣U∣∣Iu+∣∣I∖Iu+∣z_u=\frac{1}{\lvert U\rvert \lvert I^+_u\rvert \lvert I\setminus I^+_u\rvert} zu​=∣U∣∣Iu+​∣∣I∖Iu+​∣1​

(1)式和BPR-Opt之间的类比很明显。除了归一化常数 zuz_uzu​ 之外,它们只在损失函数上有所不同。AUC使用与Heaviside函数相同的不可微损失 δ(x>0)\delta(x>0)δ(x>0):

δ(x>0)=H(x):={1x>00else\delta (x>0)=H(x):=\begin{cases} 1 & x>0 \\ 0 & \text{else} \end{cases} δ(x>0)=H(x):={10​x>0else​

  相反,我们使用可微损失ln σ(x)\sigma(x)σ(x)。在优化AUC时,常用的做法是替换不可微的Heaviside函数。通常,替换的选择是启发式的,并使用类似于 σ\sigmaσ 的函数(见图3)。在本文中,我们推导出了由MLE替代ln σ(x)\sigma(x)σ(x) 的激励。

图3:用于优化AUC的损失函数。不可微Heaviside H(x)H(x)H(x) 通常由sigmoid σ(x)\sigma(x)σ(x) 近似。我们的MLE推导建议使用ln σ(x)\sigma(x)σ(x) 代替

4.2 BPR Learning Algorithm

  在最后一节中,我们推导出了个性化排名的优化标准。由于该准则是可微的,显然会选择基于梯度下降的算法进行最大化。但正如我们将看到的,标准梯度下降并不是解决问题的正确选择。为了解决这个问题,我们提出了LearnBPR,一种基于训练三元组自助采样的随机梯度下降算法(见图4)。

图4:基于自助的随机梯度下降的BPR优化模型。具有学习率 α\alphaα 和正则化参数 λΘ\lambda _{\Theta}λΘ​。

  首先,BPR-Opt相对于模型参数的梯度为:

∂BPR-Opt∂Θ=∑(u,i,j)∈DS∂∂Θln σ(x^uij)−λΘ∂∂Θ∥Θ∥2∝∑(u,i,j)∈DS−e−x^uij1+e−x^uij⋅∂∂Θx^uij−λΘΘ\begin{aligned} \frac{\partial\text{BPR-Opt}}{\partial\Theta}&=\sum _{(u,i,j)\in D_S}\frac{\partial}{\partial\Theta}\text{ln }\sigma(\hat{x} _{uij})-\lambda _{\Theta}\frac{\partial}{\partial\Theta}\lVert\Theta\rVert ^2 \\ &\propto \sum _{(u,i,j)\in D_S}\frac{-e^{-\hat{x} _{uij}}}{1+e^{-\hat{x} _{uij}}}\cdot \frac{\partial}{\partial\Theta}\hat{x} _{uij}-\lambda _{\Theta}\Theta \end{aligned} ∂Θ∂BPR-Opt​​=(u,i,j)∈DS​∑​∂Θ∂​ln σ(x^uij​)−λΘ​∂Θ∂​∥Θ∥2∝(u,i,j)∈DS​∑​1+e−x^uij​−e−x^uij​​⋅∂Θ∂​x^uij​−λΘ​Θ​

  梯度下降的两种最常见算法是完全梯度下降或随机梯度下降。在第一种情况下,在每个步骤中,计算所有训练数据的全梯度,然后用学习率 α\alphaα 更新模型参数:

Θ←Θ−α∂BPR-Opt∂Θ\Theta\leftarrow\Theta -\alpha\frac{\partial\text{BPR-Opt}}{\partial\Theta} Θ←Θ−α∂Θ∂BPR-Opt​

通常,这种方法会导致在“正确”方向上下降,但收敛速度较慢。由于 DSD_SDS​ 中有 O(∣S∣∣I∣)O(\lvert S\rvert\lvert I\rvert)O(∣S∣∣I∣) 个训练三元组,因此在每个更新步骤中计算全梯度是不可行的。此外,对于使用全梯度下降优化BPR-Opt,训练对中的偏斜也会导致较差的收敛。想象一个项目 iii 通常是正向的。然后因为对于许多用户 uuu,项目 iii 要与所有负项目 jjj(支配类)进行比较,我们在损失中有许多形式为 x^uij\hat{x} _{uij}x^uij​ 的部分。因此,依赖于 iii 的模型参数的梯度将在很大程度上决定梯度。这意味着必须选择非常小的学习率。其次,由于梯度差异很大,正则化很困难。
  另一种流行的方法是随机梯度下降。在这种情况下,对于每个三元组 (u,i,j)∈DS(u,i,j)\in D_S(u,i,j)∈DS​ 执行更新。

Θ←Θ+α(−e−x^uij1+e−x^uij⋅∂∂Θx^uij+λΘΘ)\Theta\leftarrow\Theta +\alpha(\frac{-e^{-\hat{x} _{uij}}}{1+e^{-\hat{x} _{uij}}}\cdot \frac{\partial}{\partial\Theta}\hat{x} _{uij}+\lambda _{\Theta}\Theta) Θ←Θ+α(1+e−x^uij​−e−x^uij​​⋅∂Θ∂​x^uij​+λΘ​Θ)

总的来说,这是一个很好的解决偏斜问题的方法,但遍历训练对的顺序至关重要。遍历数据项或用户项的典型方法将导致较差的收敛,因为在同一个用户-项目对上存在太多的连续更新,即,对于一个用户-项目对 (u,i)(u,i)(u,i),有许多 jjj 满足 (u,i,j)∈DS(u,i,j)\in D_S(u,i,j)∈DS​ 中。
  为了解决这个问题,我们建议使用随机梯度下降算法,随机(均匀分布)选择三元组。使用这种方法,在连续的更新步骤中选择相同用户-项目组合的机会很小。我们建议使用带替换的自助采样方法,因为可以在任何步骤执行停止。在我们的情况下,放弃数据的全周期的想法是非常有用的,因为示例的数量非常多,并且对于收敛来说,通常一个全周期的一小部分就已经足够了。根据观察到的正反馈 SSS 的数量,我们线性地选择评估中单步的数量。
  图5显示了典型的用户随机梯度下降与我们带有自助的LearnBPR方法的比较。该模型为16维BPR-MF。正如所看到的,LearnBPR的收敛速度比用户的梯度下降快得多。

图5:典型的用户随机梯度下降与我们的LearnBPR算法的自助采样收敛性的经验比较。

4.3 Learning models with BPR

  在下文中,我们描述了两类最先进的项目推荐模型,以及如何使用我们提出的BPR方法学习它们。我们选择了两个不同的矩阵分解模型类,并学习了k近邻。这两类都试图对用户对项目的隐藏偏好进行建模。他们的预测是每个用户-项目对 (u,l)(u,l)(u,l) 有一个实数 x^ul\hat{x} _{ul}x^ul​。
  因为在我们的优化中,我们有三元组 (u,i,j)∈DS(u,i,j)\in D_S(u,i,j)∈DS​,我们首先分解预估器 x^uij\hat{x} _{uij}x^uij​ 并将其定义为:

x^uij:=x^ui−x^uj\hat{x} _{uij}:=\hat{x} _{ui}-\hat{x} _{uj} x^uij​:=x^ui​−x^uj​

现在我们可以应用任何预测 x^ul\hat{x} _{ul}x^ul​ 的标准协同过滤模型。
  值得注意的是,尽管我们使用了与其他工作相同的模型,但我们还是根据另一个标准对它们进行了优化。因为我们的标准对于排名任务是最佳的,所以会导致更好的排名。我们的标准不试图将单个预测值 x^ul\hat{x} _{ul}x^ul​ 回归单个数字,而是试图对两个预测值的差异 x^ui−x^uj\hat{x} _{ui}-\hat{x} _{uj}x^ui​−x^uj​ 进行分类。

4.3.1 Matrix Factorization

  预测 x^ui\hat{x} _{ui}x^ui​ 的问题可以看作是估计矩阵 X:U×IX:U\times IX:U×I 的任务。通过矩阵分解,目标矩阵 XXX 由两个低阶矩阵 W:∣U∣×kW:\lvert U\rvert\times kW:∣U∣×k 和 H:∣U∣×kH:\lvert U\rvert\times kH:∣U∣×k 相乘得到:

X^:=WHt\hat{X} :=WH^t X^:=WHt

其中 kkk 是近似的维数/秩。WWW 中的每一行 wuw_uwu​ 可以被视为描述用户 uuu 的特征向量,类似地 HHH 的每一行 hih_ihi​ 描述了项目 iii。因此,预测公式可以被写为:

x^ui=⟨wu,hi⟩=∑f=1kwuf⋅hif\hat{x} _{ui}=\langle w_u,h_i \rangle=\sum ^k _{f=1}w _{uf}\cdot h _{if} x^ui​=⟨wu​,hi​⟩=f=1∑k​wuf​⋅hif​

除了点积 ⟨⋅,⋅⟩\langle\cdot ,\cdot\rangle⟨⋅,⋅⟩ 之外,一般来说,任何核都可以像"Online updating regularized kernel matrix factorization
models for large-scale recommender systems."中那样使用。矩阵分解的模型参数为 Θ=(W,H)\Theta =(W,H)Θ=(W,H)。模型参数也可以被视为潜在变量,对用户未观察到的品味和物品未观察到的特性进行建模。
  通常,通过奇异值分解(SVD)实现 X^\hat{X}X^ 到 XXX 相对于最小二乘的最佳近似。对于机器学习任务,已知SVD过拟合,因此提出了许多其他矩阵分解方法,包括正则化最小二乘优化、非负分解、最大间隔分解等。
  对于排名任务,即估计用户是否更喜欢一个项目比起另一个项目,更好的方法是根据BPR-Opt准则进行优化。通过使用我们提出的算法LearnBPR可以实现。如前所述,使用LearnBPR进行优化时,只需知道 x^uij\hat{x} _{uij}x^uij​ 相对于每个模型参数 Θ\ThetaΘ 的梯度。对于矩阵分解模型,导数为:

∂∂Θx^uij={(hif−hjf)if Θ=wuf,wufif Θ=hif,−wufifΘ=hjf,0else\frac{\partial}{\partial\Theta}\hat{x} _{uij}= \begin{cases} (h _{if}-h _{jf}) & \text{if }\Theta=w _{uf}\text{,} \\ w _{uf} & \text{if }\Theta=h _{if}\text{,} \\ -w _{uf} & \text{if}\Theta=h _{jf}\text{,} \\ 0 & \text{else} \end{cases} ∂Θ∂​x^uij​=⎩⎨⎧​(hif​−hjf​)wuf​−wuf​0​if Θ=wuf​,if Θ=hif​,ifΘ=hjf​,else​

此外,我们使用三个正则化常数:一个 λW\lambda _WλW​ 用于用户特征 WWW;对于项目特征 HHH,我们有两个正则化常数,用于对 hifh _{if}hif​ 进行正更新的 λH+\lambda _{H^+}λH+​ 和对 hjfh _{jf}hjf​ 负面更新的 λH−\lambda _{H^−}λH−​。

4.3.2 Adaptive k-Nearest-Neihbor

  最近邻方法在协同过滤中非常流行。它们依赖于项目(基于项目)或用户(基于用户)之间的相似性度量。在下文中,我们描述了基于项目的方法,因为它们通常提供更好的结果,基于用户的方法的工作原理与之类似。其想法是,用户 uuu 和项目 iii 的预测取决于 iii 与用户过去看到的所有其他项目的相似性,即 Iu+I^+_uIu+​。通常只考虑 Iu+I^+_uIu+​ 中 kkk 个最相似的项目——k个最近的邻居。如果仔细选择项目之间的相似性,也可以与 Iu+I^+_uIu+​ 中的所有项目进行比较。对于项目预测,基于项目的k最近邻模型为:

x^ui=∑l∈Iu+∧l≠icil\hat{x} _{ui}=\sum _{l\in I^+ _u\wedge l\neq i}c _{il} x^ui​=l∈Iu+​∧l=i∑​cil​

其中 C:I×IC:I\times IC:I×I 是对称的项目相关性/项目相似性矩阵。因此,kNN的模型参数为 Θ=C\Theta =CΘ=C。
  选择 CCC 的常用方法是应用启发式相似性度量,例如余弦向量相似性:

ci,jcosine:=∣Ui+∩Uj+∣∣Ui+∣⋅∣Uj+∣c^{\text{cosine}}_{i,j}:=\frac{\lvert U^+_i\cap U^+_j\rvert}{\sqrt{\lvert U^+_i\rvert\cdot\lvert U^+_j\rvert}} ci,jcosine​:=∣Ui+​∣⋅∣Uj+​∣​∣Ui+​∩Uj+​∣​

  更好的策略是通过学习来使相似性度量 CCC 适应问题。这可以通过直接使用 CCC 作为模型参数来实现,或者如果项目数量太大,可以学习 CCC 的分解 HHt,H:I×KHH^t,H:I\times KHHt,H:I×K。在下的内容和我们的评估中,我们使用了第一种直接学习 CCC 而不进行分解的方法。
  同样,为了优化用于排名的kNN模型,我们应用BPR优化标准并使用LearnBPR算法。对于应用算法,x^uij\hat{x} _{uij}x^uij​ 相对于模型参数C的梯度为:

∂∂Θx^uij={+1if Θ∈{cil,cli}∧l∈Iu+∧l≠i,−1if Θ∈{cjl,clj}∧l∈Iu+∧l≠i,0else\frac{\partial}{\partial\Theta}\hat{x} _{uij}= \begin{cases} +1 & \text{if }\Theta\in \{c _{il},c _{li}\}\wedge l\in I^+ _u\wedge l\neq i\text{,} \\ -1 & \text{if }\Theta\in \{c _{jl},c _{lj}\}\wedge l\in I^+ _u\wedge l\neq i\text{,} \\ 0 & \text{else} \end{cases} ∂Θ∂​x^uij​=⎩⎨⎧​+1−10​if Θ∈{cil​,cli​}∧l∈Iu+​∧l=i,if Θ∈{cjl​,clj​}∧l∈Iu+​∧l=i,else​

我们有两个正则化常数,λ+\lambda _+λ+​ 用于更新 cilc _{il}cil​,λ−\lambda −λ− 用于 cjlc _{jl}cjl​ 的更新。


5. Relations to other methods

  我们讨论了我们提出的排名方法与另外两个项目预测模型的关系。

5.1 Weighted Regularized Matrix Factorization (WR-MF)

  Pan等人和Hu等人都提出了一种用于隐式反馈项目预测的矩阵分解方法。因此,模型类与我们在第4.3.1节中描述的相同,即 x^:=WHt\hat{x}:=WH^tx^:=WHt,其中矩阵为 W:∣U∣×kW:\lvert U\rvert\times kW:∣U∣×k 和 H:∣U∣×kH:\lvert U\rvert\times kH:∣U∣×k。优化标准和学习方法与我们的方法有很大不同。他们的方法是SVD的自适应,使平方损失最小化。它们的扩展是正则化以防止过拟合,并在误差函数中加权以增加正反馈的影响。总的来说,它们的优化标准是:

∑u∈U∑i∈Icui(⟨wu,hi⟩−1)2+λ∥W∥f2+λ∥H∥f2\sum _{u\in U}\sum _{i\in I}c _{ui}(\langle w _u,h _i\rangle -1)^2+\lambda\lVert W\rVert ^2 _f+\lambda\lVert H\rVert ^2 _f u∈U∑​i∈I∑​cui​(⟨wu​,hi​⟩−1)2+λ∥W∥f2​+λ∥H∥f2​

其中 cuic_{ui}cui​ 不是模型参数,而是每个元组 (u,i)(u,i)(u,i) 的先验给定权重。Hu等人有额外的数据来估计正反馈的 cuic_{ui}cui​,将其余的设置为 cui=1c_{ui}=1cui​=1。Pan等人建议将正反馈设置为 cui=1c_{ui}=1cui​=1,其余设置为较低的常数。
  首先,很明显,这种优化是在实例级(一项),而不是像BPR那样的对级(两项)。除此之外,它们的优化是最小平方,已知其对应于正态分布随机变量的MLE。然而,项目预测的任务实际上不是回归(定量),而是分类(定性),因此logistic优化更合适。
  WR-MF的一个优点是它可以在 O(iter(∣S∣k2+k3(∣I∣+∣U∣)))O(\text{iter}(\lvert S\rvert k^2+k^3(\lvert I\rvert+\lvert U\rvert)))O(iter(∣S∣k2+k3(∣I∣+∣U∣))) 的时间复杂度内学习,前提是 cuic_{ui}cui​ 对于非正对是常数。我们的评估表明,LearnBPR通常在 m⋅∣S∣m\cdot\lvert S\rvertm⋅∣S∣ 个单更新步骤的子样本之后收敛,尽管有更多的三元组可供学习。

5.2 Maximum Margin Matrix Factorization (MMMF)

  Weimer等人使用最大间隔矩阵分解法(MMMF)进行顺序排序。他们的MMMF设计用于在评分方面有显式反馈的场景。尽管他们的排名MMMF不适用于隐式反馈数据集,但我们可以将其应用于我们的场景中,将所有未观察到的项目的“评级”设为0,将观察到的项设为1(见图1)。通过这些修改,其最小化的优化标准将非常类似于应用于矩阵分解的BPR:

∑(u,i,j)∈DSmax(0,1−⟨wu,hi−hj⟩)+λw∥W∥f2+λh∥H∥f2\sum _{(u,i,j)\in D_S}\text{max}(0,1-\langle w_u,h_i-h_j \rangle)+\lambda _w\lVert W\rVert ^2_f+\lambda _h\lVert H\rVert ^2_f (u,i,j)∈DS​∑​max(0,1−⟨wu​,hi​−hj​⟩)+λw​∥W∥f2​+λh​∥H∥f2​

  一个区别是误差函数不同——我们的铰链损失是平滑的,并由MLE驱动。此外,我们的BPR-Opt标准是通用的,可以应用于多个模型,而它们的方法是针对MF的。
  除此之外,他们的MMMF学习方法与我们的通用方法LearnBPR不同。他们的学习方法被设计用于处理稀疏的显式数据,即他们假设有许多缺失的值,因此他们假设与隐式设置相比有更少的对。但是,当他们的学习方法应用于隐式反馈数据集时,必须如上所述使数据密度增加,并且训练对 DSD_SDS​ 的数量为 O(∣S∣∣I∣)O(\lvert S\rvert\lvert I\rvert)O(∣S∣∣I∣)。我们的方法LearnBPR可以通过从 DSD_SDS​ 引导来处理这种情况(参见第4.2节)。


6. Evaluation

  在我们的评估中,我们将用BPR学习的方法与其他学习方法进行了比较。我们选择了矩阵分解(MF)和k近邻(kNN)这两个流行的模型类。已知MF模型在协同评分预测的相关任务中优于许多其他模型,包括贝叶斯模型URP和PLSA。在我们的评估中,通过三种不同的方法学习矩阵分解模型,即SVD-MF、WR-MF和BPR-MF。对于kNN,我们将余弦向量相似性(Cosine-kNN)与使用BPR方法优化的模型(BPR-kNN)进行了比较。此外,我们报告了最流行的基准算法的结果,它独立于用户对每个项目进行加权,例如:x^uimost-pop:=∣Ui+∣\hat{x} ^\text{most-pop}_{ui}:=\lvert U^+ _i\rvertx^uimost-pop​:=∣Ui+​∣ 。此外,我们给出了任何非个性化排序方法的AUC(npmax\text{np} _\text{max}npmax​)的理论上界。

6.1 Datasets

  我们使用两个不同应用程序的两个数据集。Rossmann数据集来自一家在线商店。它包含了10000名用户对4000件商品的购买历史。总共记录了426612次购买。任务是预测用户接下来想要购买的物品的个性化列表。第二个数据集是Netflix的DVD租赁数据集。该数据集包含用户的评分行为,其中用户为某些电影提供1到5颗星的明确评分。当我们想解决隐式反馈任务时,我们从数据集中删除了评分。现在的任务是预测用户是否可能对电影进行评分。我们感兴趣的还是一个从最有可能被评分的电影开始的个性化的排行榜。对于Netflix,我们创建了一个包含10000个用户,5000个项目,565738个评分动作的子样本。通过设计子样本,以使每个用户至少有10个项目 (∀u∈U:∣Iu+∣≥10)(\forall u\in U:\lvert I^+_u\rvert\geq 10)(∀u∈U:∣Iu+​∣≥10),每个项目至少有10个用户:∀i∈I:∣Ui+∣≥10\forall i\in I:\lvert U^+_i\rvert\geq 10∀i∈I:∣Ui+​∣≥10。

6.2 Evaluation Methodlogy

  我们使用留一法的评估方案,其中我们从每个用户的历史记录中随机删除一个动作(一个用户-项目对),即每个用户 uuu 从 Iu+I^+ _uIu+​ 中删除一个条目。这导致了不相交的训练集 StrainS _\text{train}Strain​ 和测试集 StestS _\text{test}Stest​。然后在 StrainS _\text{train}Strain​ 上学习模型,并通过平均AUC统计在测试集 StestS _\text{test}Stest​ 上评估其预测的个性化排名:

AUC=1∣U∣∑u1∣E(u)∣∑(i,j)∈E(u)δ(x^ui>x^uj)\text{AUC}=\frac{1}{\lvert U\rvert}\sum _u\frac{1}{\lvert E(u)\rvert}\sum _{(i,j)\in E(u)}\delta(\hat{x} _{ui}>\hat{x} _{uj}) AUC=∣U∣1​u∑​∣E(u)∣1​(i,j)∈E(u)∑​δ(x^ui​>x^uj​)

其中每个用户 uuu 的评估对为:

E(u):={(i,j)∣(u,i)∈Stest∧(u,j)∉(Stest∪Strain)}E(u):=\{(i,j)|(u,i)\in S _{\text{test}}\wedge (u,j)\notin (S _{\text{test}}\cup S _{\text{train}})\} E(u):={(i,j)∣(u,i)∈Stest​∧(u,j)∈/(Stest​∪Strain​)}

AUC值越高表示质量越好。随机猜测方法的平凡AUC为0.5,最佳可实现质量为1。
  我们通过在每一轮中重新分割训练/测试集来重复所有实验10次。所有方法的超参数在第一轮中通过网格搜索进行优化,然后在剩余的9次重复中保持不变。

6.3 Results and Discussion

  图6显示了两个数据集上所有模型的AUC质量。首先,可以看到这两种BPR优化方法在预测质量方面优于所有其他方法。相同的模型之间相互比较可以看出优化方法的重要性。例如,所有MF方法(SVD-MF、WR-MF和BPR-MF)共享完全相同的模型,但它们的预测质量相差很大。尽管已知SVD-MF相对于元素最小二乘法在训练数据上产生最佳拟合,但它对于机器学习任务来说是一种糟糕的预测方法,因为它会导致过拟合。可以看作是SVD-MF的质量随着维数的增加而降低。WR-MF是一种更成功的排名学习方法。由于正则化,它的性能不会下降,而是随着维数的增加而稳步上升。但在两个数据集的排名任务中,BPR-MF明显优于WR-MF。例如,在Netflix上,由BPR-MF优化的具有8个维度的MF模型实现了与由WR-MF优化的具有128个维度的MV模型相当的质量。

图6:Rossmann数据集和Netflix子样本的ROC曲线下面积(AUC)预测质量。我们将矩阵分解BPR-MF和k近邻BPR-kNN的BPR优化与加权正则化矩阵分解(WR-MF)、奇异值分解(SVD-MF)、k近邻(Cosine-kNN)和最流行的模型进行了比较。对于分解方法BPR-MF、WR-MF和SVD-MF,模型维数从8维增加到128维。最后,npmax\text{np}_\text{max}npmax​ 是任何非个性化排名方法的理论上限。
  总之,我们的结果表明了将模型参数优化到正确标准的重要性。实验结果表明,LearnBPR学习的BPR-Opt标准优于其他最先进的隐式反馈个性化排名方法。通过对问题的分析(第3.2节)和来自MLE中的BPR-Opt的理论推导,证明了结果的合理性。

6.4 Non-personalized ranking

  最后,我们将个性化排名方法的AUC质量与最佳的非个性化排名方法进行了比较。与我们的个性化排名方法不同,非个性化排名方法为所有用户创建相同的排名 >>>。我们通过优化测试集 StestS _{\text{test}}Stest​ 上的排名 >>> 来计算任何非个性化排名方法的理论上限 npmax\text{np} _\text{max}npmax​。图6显示,即使是简单的个性化方法,如Cosine-kNN,也在很大程度上优于上限 npmax\text{np} _\text{max}npmax​,因此也优于所有非个性化方法。


7. Conclusion

  在本文中,我们提出了一种用于个性化排序的通用优化准则和学习算法。优化准则BPR-Opt是从问题的贝叶斯分析中推导出的最大后验估计量。对于与BPR-Opt相关的学习模型,我们提出了基于随机梯度下降和自助采样的通用学习算法LearnBPR。我们已经演示了这种通用方法如何应用于矩阵分解和自适应kNN这两种最先进的推荐模型。在我们的评估中,我们根据经验表明,对于个性化排名任务,BPR学习的模型优于根据其他标准优化的相同模型。我们的结果表明,预测质量不仅取决于模型,而且在很大程度上取决于优化准则。我们的理论和实证结果都表明,BPR优化方法是个性化排名这一重要任务的正确选择。

【论文阅读】 BPR: Bayesian Personalized Ranking from Implicit Feedback相关推荐

  1. 【论文阅读+实现】BPR: Bayesian Personalized Ranking from Implicit Feedback

    1.BPR是什么? BPR 的全称是贝叶斯个性化排序(Bayesian Personalized Ranking),它是一种排序算法,做的是TopN任务. 适用于隐性反馈数据,当然显性反馈数据把评分变 ...

  2. 【论文阅读】BPR: Bayesian personalized ranking from implicit feedback

    Rendle S, Freudenthaler C, Gantner Z, et al. BPR: Bayesian personalized ranking from implicit feedba ...

  3. BPR: Bayesian Personalized Ranking from Implicit Feedback 论文笔记

    有什么问题欢迎讨论呀! 论文标题:BPR: Bayesian Personalized Ranking from Implicit Feedback BPR 主要采用用户的隐式反馈(如点击.收藏等), ...

  4. 论文笔记:BPR-Bayesian Personalized Ranking from Implicit Feedback | 推荐系统BPR算法分析

    BPR:Bayesian Personalized Ranking from Implicit Feedback 论文链接:BPR:Bayesian Personalized Ranking from ...

  5. 论文阅读 6 | Bayesian Meta-Learning for the Few-Shot Setting via Deep Kernels

    基于深度核的少样本设置的贝叶斯元学习 摘要 1 简介 1.1 动机 2 背景 2.1 Few-shot Learning 2.2 Kernels 3 方法说明 3.1 回归 3.2 分类 4 相关工作 ...

  6. 论文阅读——个性化实体推荐: 一种异构信息网络方法

    论文名称:<Personalized Entity Recommendation: A Heterogeneous Information Network Approach> 作者:Xia ...

  7. 【推荐系统->论文阅读】Dynamic Graph Neural Networks for Sequential Recommendation(用于序列推荐的动态图神经网络)

    Dynamic Graph Neural Networks for Sequential Recommendation(用于序列推荐的动态图神经网络) Mengqi Zhang, Shu Wu,Mem ...

  8. 知识图谱论文阅读【十二】【KDD2020】 使用贝叶斯图卷积神经网络推荐精确和多样化项目的框架【看不懂,待续】

    题目: A Framework for Recommending Accurate and Diverse Items Using Bayesian Graph Convolutional Neura ...

  9. 推荐系统论文阅读——Factorizing Personalized Markov Chains for Next-Basket Recommendation

    转自博客:https://blog.csdn.net/stalbo/article/details/78555477 论文题目:Factorizing Personalized Markov Chai ...

最新文章

  1. 面试官:有了 for 循环 为什么还要 forEach ?
  2. mysql和hbase优缺点_hbase优缺点
  3. sql: TRIGGER
  4. Android多媒体开发:照相机
  5. 疾病相关数据查找,Our world in data使用指南
  6. 蓝桥杯 - 垒骰子(动态规划+矩阵快速幂优化)
  7. 【caffe】找不到gpu/mxGPUArray.h
  8. Flash如何为文字描边
  9. 常用播放器替换解码器实现播放10bit编码方式的高清视频
  10. android 耗电量分析,使用能耗性能剖析器检查耗电量
  11. KL距离-Kullback-Leibler Divergence
  12. 技术书籍也香艳-《Head First设计模式》第二版即将出版
  13. 2019仿笔趣阁小说网站源码(PC版+手机版+APP+采集器+教程)下载
  14. Excel复制粘贴出现复制区域与粘贴区域形状不同问题的解决办法
  15. python一元线性回归算法,代码及参数更新动图展示
  16. C#数据结构与算法总结
  17. 【运筹优化】求解二维矩形装箱问题的算法合辑 + Java代码实现
  18. STM32 HAL库获取系统时钟与标准库获取系统时钟
  19. 关于File()中的pathname的路径
  20. java取得对象占用的内存大小

热门文章

  1. 求int所能表示的最大整数
  2. 一个账号多路由器拨号失败服务器无响应,PPPoE拨号失败 PPPoE拨号失败服务器无响应怎么办?...
  3. 两用图片视频压缩软件
  4. linux之进程观察命令:ps和top
  5. 毕业设计 STM32老人防摔倒报警系统 - 物联网 嵌入式 单片机
  6. css篇-盒子模型理解
  7. MCAL中PORT配置
  8. freertos和ucos的区别
  9. jsp webuploader上传文件夹
  10. 路由器什么牌子好?游戏宅强推