松子鱼眼中的BPR。

作者: 光年尘埃 | 来源:发表于2019-04-03 20:04 被阅读0次

BPR,Bayesian Personalized Ranking,即贝叶斯个性化排序。虽然BPR是在2009年提出的算法,站在2018年的尾巴上看,似乎有些老古董了,但这丝毫不妨碍它活跃在推荐领域的舞台上。

最近阅读的一些文献中频繁出现基于BPR的优化方法,在求知欲的驱使下,看到了它的原文,即参考文献[1],下文为记录对该算法的学习过程和相关学习心得。

BPR利用的是用户的隐式反馈来表达关于基于当前用户的项目偏序关系。这种偏序关系的构建思想可简要概括为:若用户u对物品 i 有交互记录(点击或评分等),而对于物品 j 没有记录,那么基于用户 u的历史记录,可以得出这样一种偏序关系:i>_uj。依照这种思想可将数据集处理成三元组的形式 <u,i,j> ,其表达的含义为,相对于物品j ,用户 u更喜欢物品i

BPR构建偏序关系需要以下假设的支撑:

1. 用户对物品的偏好不受其他用户的影响,即用户之间偏好是独立的。

2. 用户对不同物品的偏好不受其它物品的影响,即用户对每个物品的偏好独立。

依照上述思想将数据集重D构成一系列三元组的形式<u,i,j>用于模型训练。

下面介绍BPR模型的输入输出以及计算过程。

BPR的计算方法与矩阵分解在形式上比较类似,

如图所示,左边是用户-物品的偏序关系矩阵 X,其中也有很多缺失值,BPR训练的目的就是填补这些空白值。其处理思路与矩阵分解一致,将用户-物品矩阵分解为两个低秩的特征矩阵,分别为U_{u\times k}V_{v \times k}。并假设它们都服从高斯分布(与矩阵分解相同)。则模型训练的意义就是在已知训练集的偏序关系,求解两个特征矩阵。用公式的表达如下:

arg maxP(\theta|>_u)

其中\theta 代表的就是两个特征矩阵,上述式子就是求解极大后验概率,后续公式推导为:

P(\theta|>_u) =\frac{ P(>_u|\theta)P(\theta)}{P(>_u)}\propto P(>_u|\theta)P(\theta)

对于P(>_u|\theta),实际考虑训练集中关于所有用户的概率乘积,即:

\prod_{u\in U}P(>_u|\theta)=\prod_{u,i,j\in D}P(i>_uj|\theta)

论文中所定义的P(i>_uj|\theta)的计算公式为:\sigma(\bar{x} _{ui}-\bar{x} _{uj}) ,其中\sigma(.)是Sigmoid函数。

\prod_{u,i,j\in D}P(i>_uj|\theta)=\prod_{u,i,j\in D}\sigma(\bar{x} _{ui}-\bar{x} _{uj})

对于P(\theta),按照矩阵分解的方法,假设其服从高斯分布,即:

P(\theta)\sim N(0,\lambda_\theta I)

则其概率密度函数为:

P(\theta)=\frac{1}{\sqrt{2\pi}\sigma}exp(-\frac{||\theta||^2}{2\sigma^2})

之后取对数可得:

\prod_{u,i,j\in D}P(i>_uj|\theta)P(\theta) \propto  \ln(\prod_{u,i,j\in D}\sigma(\bar{x} _{ui}-\bar{x} _{uj})P(\theta)) \\ = \sum_{u,i,j\in D}( \ln \sigma(\bar{x} _{ui}-\bar{x} _{uj}) + \ln P(\theta))\\

进一步代入可得:

上式=\sum_{u,i,j\in D}( \ln \sigma(U_uV_i^{\top} -U_uV_j^{\top})-\lambda_\theta||U_u||^2-\lambda_\theta||V_i||^2-\lambda_\theta||V_j||^2)

最大化后验概率即最小化下式:

\sum_{u,i,j\in D}(\lambda_\theta||U_u||^2+\lambda_\theta||V_i||^2+\lambda_\theta||V_j||^2 - \ln \sigma(U_uV_i^{\top} -U_uV_j^{\top}))

利用梯度下降的方法求得每次更新的梯度为:

\frac{\partial f}{\partial u}=\lambda U_u - \frac{1}{\sigma(U_uV_i^\top-U_uV_j^\top)}(V_i-V_j)

\frac{\partial f}{\partial i}=\lambda V_i - \frac{U_u}{\sigma(U_uV_i^\top-U_uV_j^\top)}

\frac{\partial f}{\partial j}=\lambda V_j - \frac{U_u}{\sigma(U_uV_i^\top-U_uV_j^\top)}

则梯度下降的更新公式:

U_u \gets U_u - \alpha\frac{\partial f}{\partial u}

V_i \gets V_i - \alpha\frac{\partial f}{\partial i}

V_j \gets V_j - \alpha\frac{\partial f}{\partial j}

其中\alpha 是学习率。模型训练完成后,将会输出U,V两个特征矩阵。

松子鱼眼中的BPR:

不可否认,BPR是基于矩阵分解思想的算法。初看与矩阵分解的方法非常类似,但细看又能发现其中的不同:BPR将推荐问题当作排序问题,用排序的思想去生成推荐列表,其主要目的是在只借助用户隐式反馈(如点击事件)给物品列表进行个性化排序。其重点是两个物品之间的相对关系。

但在学习完BPR算法后,又深刻感觉到它的鸡肋。可能是因为这是在09年出品的神作,年代很久远。它的排序目的还是对已知量进行排序,即要将用户访问过的物品排到未访问过的物品之前,而用户访问过的本就是一个小集合,大量的物品是未被访问过的,即BPR并不能够对那些未访问过的物品进行排序,故感觉鸡肋。

参考文献:

[1]Rendle S, Freudenthaler C, Gantner Z, et al. BPR: Bayesian personalized ranking from implicit feedback[C]//Proceedings of the twenty-fifth conference on uncertainty in artificial intelligence. AUAI Press, 2009: 452-461.

相关文章

  • 松子鱼眼中的BPR。

    BPR,Bayesian Personalized Ranking,即贝叶斯个性化排序。虽然BPR是在2009年提...

  • 2018-08-26 玉米淀粉做松子鱼

    松子鱼你吃过吗?什么是松子鱼?松子鱼是一道广东的汉族传统名菜,是宴席常品。松子鱼因鱼肉状如松子,故而命名,其特点是...

  • 眼中的鱼

    他的眼泊里住着一条忧郁的鱼, 游曳二十载, 尾巴拖出长长的泪痕。 抹去吧,拭干吧, 归入人间的溪流也好, 放逐它。

  • BPR方法(business process re-engine

    BPR方法 要使用系统规划的BPR(业务过程重组)方法一般基于这样一个前提:当今的组织必须彻底地改造自己,并丢弃那...

  • BPR法 下

    在组织中实现BPR的主要障碍在于需要向传统的纵向管理结构中嵌入一个横向过程。 一个严肃的BPR首先需要改变组织,目...

  • 花都必吃--松子鱼

    深受欧洲客人喜爱的“松子鱼”,是由北方名菜“松鼠鱼”改造而来。选用鲩鱼的脊肉作原料,特别松脆甘香,醒胃可口。松鼠鱼...

  • 生而为人

    《被嫌弃的松子的一生》这部电影我反反复复看了好多遍。 我眼中看到的松子都是闪闪发光的,你不比别人差哪里,只是爱的没...

  • BPR算法笔记

    推荐对级排序模型 对级排序模型, 目标函数:如何让逆序对最小。 使用铰链损失(Hinge Loss)作为代理损失函...

  • 大黄鱼大,小黄鱼小,咱不扯犊子……

    作为著名食用鱼,以黄花鱼烹煮的名菜有松子黄鱼、糖醋黄花鱼、红烧黄花鱼等,个个都能征服你的胃。 然而其中的大黄鱼小黄...

  • 【pair-wise】BPR Bayesian Personal

    数学渣渣看论文实况之 BPR: Bayesian Personalized Ranking from Implic...

网友评论

    本文标题:松子鱼眼中的BPR。

    本文链接:https://www.haomeiwen.com/subject/bfltiqtx.html