推荐系统论文阅读——BPR Bayesian Personalized Ranking from Implicit Feedback

原创 2017年10月20日 15:13:12

此系列为个人关于推荐系统的学习笔记(仅供参考)
论文题目:BPR Bayesian Personalized Ranking from Implicit Feedback
参考资料:http://www.datalearner.com/paper_note/content/300025
     http://blog.csdn.net/cht5600/article/details/54381011


BPR Bayesian Personalized Ranking from Implicit Feedback

基于项目的推荐是指为某个用户推荐一组个性化的项目列表。这篇文章研究了最常见的隐式反馈场景(implicit feedback)。基于隐式反馈的推荐应用有很多方法,如矩阵分解(matrix factorization, MF)或者最近邻(adaptive k-nearest-neighbor, kNN)。尽管这些方法都是求个性化排序的,但是他们并没有针对排序结果进行优化。这篇文章提出了一个一般性的优化标准,BPR-OPT,从贝叶斯分析的角度来获取最大化后验估计。作者也提出了一个关于BPR-OPT的一般性优化求解算法。该学习方法是基于随机梯度下降的bootstrap sampling。作者展示了本模型是如何应用在矩阵分解和kNN方法中的。

推荐系统是一个非常活跃的研究领域。当前大部分工作都是基于用户的显示反馈进行的,比如说评分。然而,现实生活中,有很多场景是只有隐式反馈的结果,比如点击流、观看次数、购买行为等。实际上,隐式反馈已经存在于几乎所有的信息系统中。这篇文章主要是利用隐式反馈解决推荐排序问题。


Contributions

1、 提出了一个优化排序结果的一般性优化标准,BPR-OPT
2、 为了最大化BPR-OPT,我们提出了一般性优化求解算法LearnBPR——基于随机梯度下降的bootstrap sampling。
3、 将LEARNBPR应用于两种前沿模型矩阵分解和kNN。
4、 实验结果证明在个性化推荐中,应用BPR模型优于其他学习算法。


符号说明

假设U 为所有用户的集合,I为所有项目的集合。隐式反馈 SU×I。作者的目标是提供给用户一个个性化的推荐排序 >uI2,其中,>u 满足以下性质:

分别称为总体性(totality),反对称性(antisymmetry),传递性(transitivity)。

这里我们解释一下反对称性:设 R是一个二元关系,ab 为两个元素,如果有 R(a,b)a,b 满足 R 关系),那么R(b,a) 一定不成立 (对称性则是成立)。举个例子 :R 指的是大于关系,如果 (a,b) 满足的 R 的话 就有 a 大于 b,那么显然 (b,a) 就不会满足 R 了,否则就矛盾了。
>u 可以理解为什么东西在什么东西前面的意思,就是排序结果,可以理解为左边的项目比右边的项目靠前。为了简便,也有如下定义:

上面就是用户 u 给出隐式反馈的所有的项目,下面就是为项目 i 提供隐式反馈的所有用户。


问题分析

隐式反馈的特点是只提供了正向的可观测类别,剩下的数据是负向和缺失值的混合,也即:我们已知的是用户购买过的,而剩下的我们无法分辨是用户不感兴趣的还是感兴趣但未购买的。

对缺失值最常见的处理方法是忽略掉所有的内容,但是会导致机器学习算法无法学习到任何内容,而且算法也无法区别这两个级别的内容。

最常见的推荐做法是针对某个项目计算一个个性化的得分 x^ui,它反映了用户对该项目的偏好。然后推荐的项目结果可以使用该分值从大到小排序。典型的机器学习方法一般是从隐式反馈集合 S 中创建一个训练集 (u,i)S 一个正向的标签,把剩下所有的作为负向的结果。也就是所有在集合 S 中的结果是 1,剩下的结果是 0。这里有个问题就是在训练过程中,所有在未来模型需要排序的没有反馈的结果以负向提供给了机器学习的算法。从而导致了尽管模型可以匹配训练集,但是对于预测结果为 0 的算法无法进行排序,这种算法能工作的唯一原因就是防止过拟合,即正则化(如下图所示)。

作者在这里提供了一个更好的方法,选用项目对(item pairs)作为训练数据,优化目标为正确排序项目对,而不是给单个项目打分。而不是简单的将用户未提供的信息作为负向案例处理。作者从集合 S 中为每个用户重新创建了一个排序 >u 。如果用户对一个项目 i 提供了一个隐式反馈,比如浏览,那么作者认为用户对这个项目的偏好要大于所有未观测的项目。比如在图2中,用户 u1 观看了项目 i2,但是没有观看项目 i1。那么作者假设,相比较项目i1 来说,这个用户更加倾向于选择项目i2,即i2>ui1。对于用户都看过的项目,我们则无法推断其偏好。作者创建了一个训练集 DS:U×I×I

这句话通俗理解就是用户 ui 的偏好要大于对 j 的偏好。由于该排序是反对称性的,所以反过来就是负向的。

作者的这个方法有两个好处:
1、作者的训练集由正向、负向和缺失值组成,两个未观测的项目之间的缺失值是最终需要预测的,并需要排序的结果。
2、该训练集的创建目标就是为了排序,即 >u 的观测子集 DS ​就是训练集。


BPR优化准则

要找到所有项目的正确的个性化排序,用贝叶斯形式表示就是要最大化如下给出的后验概率,其中, Θ 为任意给定的模型参数。

p(Θ|>u)p(>u|Θ)p(Θ)

  先验后验似然的关系可参考[1],[2]

  p(Θ|>u) 为后验概率,p(>u|Θ) 为似然函数,p(Θ) 为先验概率。

这里的 >u 是我们想要求得的排序目标,但是无法观测。文中做出以下假设:

  • 每个用户之间的偏好行为相互独立
  • 同一用户对不同物品的偏好相互独立

则上面的似然函数可以写为:

uUp(>u|Θ)=(u,i,j)U×I×Ip(i>uj|Θ)δ((u,ij)Ds)(1p(i>uj|Θ))δ((u,ij)Ds)

其中,

由于总体性和反对称性,上式也可以简化成:

uUp(>u|Θ)=(u,i,j)Dsp(i>uj|Θ)

-
到目前为止,我们还没有建立排序的结果。这里假设用户对项目 ij 之间的偏好为:

p(i>uj|Θ):=σ(x^uij(Θ))

σ 为logistic函数:

σ(x)=11+ex

这里的 x^uij(Θ) 是任意一个用来描述 u,i,j 之间关系的关于 Θ 的实值函数(即预测模型)。 x^uij(Θ) 根据模型的不同,例如KNN,矩阵分解等,有不同的估计。

到目前为止,我们讨论的都是似然函数 p(>u|Θ) 。进一步的,我们假设先验密度p(Θ) 是一个均值为 0 协方差矩阵为 Θ 的正态分布:

p(Θ)N(0,Θ)

为了减少未知参数的数量,令 Θ=λΘI,则:

其中 λΘ 是正则化参数。


BPR和AUC的对比

关于ROC曲线和AUC的概念可参考这里
一般,每一个用户的AUC定义为:

注:R 为一个集合,|R| 表示集合中元素的个数。

因此,AUC的均值为:

Ds 的定义代入 AUC(u) 的公式:

其中,

我们将BPR与上面 AUC(u) 公式作对比,可以看出,除了常数 zu 以外,只有损失函数(loss function)不同,AUC使用的是不可微的函数,例如 Heaviside function:

而我们在BPR中使用的是可微的损失函数 ln(σ) ,当然,损失函数也可以选择其他形式。


BPR学习算法

由于我们的优化准则BPR-OPT是可微的,很明显,我们可以选择梯度下降算法。但是标准的梯度下降算法并不适用于我们的情况。所以我们提出了LearnBRP算法——一种基于训练三元组(training triples)Bootstrap抽样的随机梯度下降算法。

常用的梯度下降算法有两种:full gradient descent 和 stochastic gradient descent(可参考博客—三、梯度下降)。
在第一种情况下,每一步都要对所有的数据计算梯度然后更新,收敛速度较慢。在我们的数据集中,有 O(|S|,|I|) 个训练组,采用full gradient descent计算复杂度太高;此外,训练数据的倾斜(不平衡)会导致收敛效果很差。
采用第二种方法,对于每一个训练组 (u,i,j)Ds 都会对参数进行更新。这种方法可以解决我们上面提到的倾斜问题,但是训练数据的遍历顺序很重要。比如按照逐项或逐个用户的顺序,会导致在同一组 (u,i) 上连续的更新,使得收敛速度变慢。

针对这些问题,我们提出在stochastic gradient descent中随机选择训练三元组(均匀分布)。我们建议采用重复抽样(bootstrap sampling)的方法(可参考这里)。遍历所有的数据对于我们的情况来说是不适用的。

具体算法:

可对比其与随机梯度算法的收敛速度:


将BPR应用于实际模型

接下来,我们将提出的BPR应用于KNN和矩阵分解两个模型。因为我们的优化模型是基于三元组 (u,i,j),而这两个模型都是基于 (u,i) 预测 x^ui ,所以我们首先对我们优化模型中的 x^uij 进行分解:

x^uij:=x^uix^uj

-
现在,我们就可以将其应用于任何预测 x^ui 的协同滤波模型了。(详见论文)

版权声明:本文为博主原创文章,未经博主允许不得转载。

推荐系统经典论文文献及业界应用

推荐系统经典论文文献及业界应用 列了一些之前设计开发百度关键词搜索推荐引擎时, 参考过的论文, 书籍, 以及调研过的推荐系统相关的工具;同时给出参加过及未参加过的业界推荐引擎应用交流资料(有...
  • qq_17116557
  • qq_17116557
  • 2016年04月25日 15:20
  • 1329

推荐系统论文分类推荐

1、研究twitter的paper      http://reculike.com/site/search.PHP?query=twitter 2、研究facebook的paper      ...
  • wx19921014
  • wx19921014
  • 2016年12月03日 20:42
  • 346

推荐系统论文

  • 2011年12月07日 10:47
  • 3.65MB
  • 下载

推荐系统论文分类推荐

1、研究twitter的paper      http://reculike.com/site/search.php?query=twitter 2、研究facebook的paper      ht...
  • zyvscc
  • zyvscc
  • 2012年05月11日 09:02
  • 2116

推荐系统经典文章

  • 2015年10月27日 15:03
  • 3.58MB
  • 下载

「推荐系统」领域中一些值得读的论文

Reinforcement Learning based Recommender System using Biclustering Technique @Ttssxuan 推荐 #R...
  • mandagod
  • mandagod
  • 2018年01月26日 12:16
  • 121

Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 8(一)——无监督学习

Coursera 机器学习(by Andrew Ng)课程学习笔记 Week 8(一) 非监督学习 K均值算法...
  • stalbo
  • stalbo
  • 2018年02月01日 20:50
  • 29

BPR [Bayesian Personalized Ranking] 算法详解及应用实践

在推荐系统的实现中,几乎总会遇到从较多候选集中为用户选取特定的少数几个物品进行推荐,这本质上是一个Ranking问题。   在推荐场景中用户更缺乏耐性,对推荐结果的消费也十分有限。因此,排...
  • cht5600
  • cht5600
  • 2017年01月12日 19:35
  • 1658

论文推荐 推荐系统 Recommender System

推荐一些关于推荐系统的论文
  • u013106951
  • u013106951
  • 2017年02月26日 16:06
  • 775

机器学习—— 基于深度学习的推荐系统的实现

一.问题描述 比赛页面:http://lab.toutiao.com/index.php/2016/08/05/2016-byte-cup.html 任务 参赛队伍利用给定的头条问答数据(包括专家标签...
  • u013555159
  • u013555159
  • 2016年09月07日 21:05
  • 4973
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:推荐系统论文阅读——BPR Bayesian Personalized Ranking from Implicit Feedback
举报原因:
原因补充:

(最多只允许输入30个字)