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

有什么问题欢迎讨论呀!

论文标题:BPR: Bayesian Personalized Ranking from Implicit Feedback

BPR 主要采用用户的隐式反馈(如点击、收藏等),通过对问题进行贝叶斯分析得到的最大后验概率来对 item 进行排序,进而产生推荐。

目的

在隐式反馈基于 item 的推荐中,传统方法都聚焦于预测任务,从而产生排序;而本文提出一种策略:直接优化排序
(个人理解:这两种方法是不是可以看成是等价的,因为针对用户 user,如果我们能确定两两 item 之间的被喜爱程度,其实就能找出用户 user 对所有 item 的喜爱程度排序。类似冒泡排序,两两比较,从而完成排序任务)

方法

BPR 策略(求排序的最大后验概率),也提出了一个具体的算法 L E A R N B P R L\small EARN\normalsize BPR LEARNBPR

结果

在当时两种 SOTA 模型上使用 BPR:MF、kNN,评价指标 AUC,该策略的算法效果最好。
(个人理解:由于论文是 2009 年发表的,经过时间的推移,kNN 方法已经不流行了,这里主要介绍 MF 方法上对本文提出的这个策略的应用。)

1. 介绍

In this paper, we present a generic method for learning models for personalized ranking.

贡献

  1. 提出了通用的优化策略: B P R − O P T BPR-O\small PT BPROPT,它是通过最大化后验估计来得到最有个性化排序。类似最大化 ROC 曲线下方面积(AUC);

  2. 基于 B P R − O P T BPR-O\small PT BPROPT,提出了通用学习算法 L E A R N B P R L\small EARN\normalsize BPR LEARNBPR:1. 优化方法采用了随机梯度下降法;2. 采样方法:bootstrap 采样,是一种重采样的方法,主要用来估计标准误、置信区间和偏差;
    (个人理解:现在采用的优化方法为 Adam,是一种集成算法,学习步长在迭代的过程中可以动态调整。所以对这里的优化方法就不过多讲解。)

  3. 将算法 L E A R N B P R L\small EARN\normalsize BPR LEARNBPR 用在当时两个 SOTA 推荐模型上:1. MF;2. kNN;

  4. 实验展示出在个性化排序任务上,用 BPR 学习一个模型效果要优于其他方法。

2. 个性化推荐-BPR 算法原理

① 符号定义

U:用户集;I:物品集; S ⊆ U × I S\subseteq U\times I SU×I 隐式反馈集; > u >_u >u:用户 u 的偏好, i > u j i>_uj i>uj 表示 i 和 j 同时出现时,用户对 i 产生了隐式反馈,相比于 j,u 更偏好 i。

I1I2I3I4
U1?++?
U2+??+
U3++??
U4??++
U5??+?

有过隐式反馈记录(click):‘+’;反之:‘?’。
此关系( > u >_u >u)满足 完整性(totality)、反对称性(autisymmetry)和传递性(trainsitivity)约束:

  1. ∀   i , j ∈ I : i ≠ j ⇒ i > u j   ∪ j > u i \forall~i,j\in I:i\neq j\Rightarrow i>_uj~\cup j>_ui  i,jI:i=ji>uj j>ui(如果物品 i 和 j 不是同一个物品,那么他们一定存在定义的这个关系)
  2. ∀   i , j ∈ I : i > u j   ∩ j > u i ⇒ i = j \forall~i,j\in I:i>_uj~\cap j>_ui\Rightarrow i=j  i,jI:i>uj j>uii=j(有点类似矩阵的反对称性)
  3. ∀   i , j , k ∈ I : i > u j   ∩ j > u k ⇒ i > u k \forall~i,j,k\in I:i>_uj~\cap j>_uk\Rightarrow i>_uk  i,j,kI:i>uj j>uki>uk

I u + : { i ∈ I : ( u , i ) ∈ S } I_u^+:\{i\in I:(u,i)\in S\} Iu+:{iI:(u,i)S}
U i + : { u ∈ U : ( u , i ) ∈ S } U_i^+:\{u\in U:(u,i)\in S\} Ui+:{uU:(u,i)S}

② 训练数据的预处理

首先对隐式反馈矩阵进行预处理:
隐式反馈矩阵预处理

得到的训练数据集 D s : = { ( u , i , j ) ∣ i ∈ I u + ∩ j ∈ I \ I u + } D_s:=\{(u,i,j)|i\in I_u^+\cap j\in I\backslash I_u^+\} Ds:={(u,i,j)iIu+jI\Iu+}

③ 两个基本假设

  1. 用户之间的偏好行为相互独立,即用户 u 在 i 和 j 之间的偏好与其他用户无关;
  2. 同一用户对不同物品对的偏序相互独立,即用户 u 在 i 和 j 之间的偏好和其他商品无关。

④ BPR 推导

【基本思想】利用最大化后验概率来确定所有 item 的正确个性化排序。
我们不妨设正确的个性化排序可以由某个模型(如 MF)给出,而 Θ 表示这个模型的参数向量,于是我们的优化目标为:
m a x P ( Θ ∣ > u ) maxP(\Theta|>_u) maxP(Θ>u)
根据贝叶斯公式:
P ( Θ ∣ > u ) = P ( Θ ) ⋅ P ( > u ∣ Θ ) P ( > u ) P(\Theta|>_u)=\frac{P(\Theta)\cdot P(>_u|\Theta)}{P(>_u)} P(Θ>u)=P(>u)P(Θ)P(>uΘ)
由于分母那一项与 Θ 的优化无关,故:
P ( Θ ∣ > u ) ∝ P ( > u ∣ Θ ) ⋅ P ( Θ ) P(\Theta|>_u)\propto P(>_u|\Theta)\cdot P(\Theta) P(Θ>u)P(>uΘ)P(Θ)
其中第一项和数据有关,第二项与数据无关。

1. P ( > u ∣ Θ ) P(>_u|\Theta) P(>uΘ)

P ( > u ∣ Θ ) = Π u ∈ U p ( > u ∣ Θ ) = Π ( u , i , j ) ∈ U × I × I p ( i > u j ∣ Θ ) δ ( ( u , i , j ) ∈ D s ) ⋅ ( 1 − p ( i > u j ∣ Θ ) ) δ ( ( u , j , i ) ∉ D s ) P(>_u|\Theta)=\Pi_{u\in U}p(>_u|\Theta)=\Pi_{(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,j,i)\notin D_s)} P(>uΘ)=ΠuUp(>uΘ)=Π(u,i,j)U×I×Ip(i>ujΘ)δ((u,i,j)Ds)(1p(i>ujΘ))δ((u,j,i)/Ds)

其中 δ ( b ) = { 1 , i f b i s t r u e 0 , e l s e . \delta(b)=\left\{ \begin{array}{cc} 1, & if\quad b\quad is\quad true\\ 0, & else. \end{array}\right. δ(b)={1,0,ifbistrueelse.

上面公式的第二个等式详细分析一下,公式 Π u ∈ U p ( > u ∣ Θ ) \Pi_{u\in U}p(>_u|\Theta) ΠuUp(>uΘ) 针对用户 1 来看,一共有 16 项,用表格形式写出来如下:
在这里插入图片描述

对角线的:不用考虑;
标红的:有数据可以计算出的概率;
标橙的:这里的概率可以用(1-对角线上对称的已知概率)来表示;
标白的:这里没有数据可以计算。

重点来了!!!
文章说根据完整性和反对称性约束上式可简化为:
Π u ∈ U p ( > u ∣ Θ ) = Π ( u , i , j ) ∈ D s p ( i > u j ∣ Θ ) \Pi_{u\in U}p(>_u|\Theta)=\Pi_{(u,i,j)\in D_s}p(i>_uj|\Theta) ΠuUp(>uΘ)=Π(u,i,j)Dsp(i>ujΘ)
但这里的公式直接把标橙的和标白的八项给忽略了???没太看懂。。

对于 p ( i > u j ∣ Θ ) p(i>_uj|\Theta) p(i>ujΘ)这个概率,可用下式代替:
p ( i > u j ∣ Θ ) = σ ( x ^ u i j ( Θ ) ) p(i>_uj|\Theta)=\sigma(\hat{x}_{uij}(\Theta)) p(i>ujΘ)=σ(x^uij(Θ))
其中 σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1 σ ( x ) \sigma(x) σ(x) 也可以取其他满足完整性、反对称性、传递性三个约束条件的其他函数。
同样, x ^ u i j ( Θ ) \hat{x}_{uij}(\Theta) x^uij(Θ)同样可以是任何关于模型参数向量 Θ 的实值函数,能映射出用户 u 与物品 i, j 之间的关系。
于是第一部分优化目标变成: Π ( u , i , j ) ∈ D s σ ( x ^ u i j ( Θ ) ) \Pi_{(u,i,j)\in D_s}\sigma(\hat{x}_{uij}(\Theta)) Π(u,i,j)Dsσ(x^uij(Θ))

2. P ( Θ ) P(\Theta) P(Θ) 先验概率

由于先验分布未知,假设 Θ 服从正态分布: N ( 0 , Σ Θ ) N(0, \Sigma_{\Theta}) N(0,ΣΘ),简化为: N ( 0 , λ Θ I ) N(0, \lambda_{\Theta}I) N(0,λΘI)

3. 最大化 P ( Θ ∣ > u ) P(\Theta|>_u) P(Θ>u)

B P R − O P T : = l n P ( Θ ∣ > u ) ∝ l n P ( > u ∣ Θ ) ⋅ P ( Θ ) ∝ l n Π ( u , i , j ) ∈ D s σ ( x ^ u i j ) ⋅ P ( Θ ) ∝ ∑ ( u , i , j ) ∈ D s l n σ ( x ^ u i j ) + l n p ( Θ ) ∝ ∑ ( u , i , j ) ∈ D s l n σ ( x ^ u i j ) − λ Θ ∣ ∣ Θ ∣ ∣ 2 \begin{array}{cl} BPR-O\small PT & :=lnP(\Theta|>_u)\\ & \propto lnP(>_u|\Theta)\cdot P(\Theta)\\ & \propto ln\Pi_{(u,i,j)\in D_s}\sigma(\hat{x}_uij)\cdot P(\Theta)\\ & \propto\sum_{(u,i,j)\in D_s}ln\sigma(\hat{x}_{uij})+lnp(\Theta)\\ & \propto\sum_{(u,i,j)\in D_s}ln\sigma(\hat{x}_{uij})-\lambda_{\Theta}||\Theta||^2 \end{array} BPROPT:=lnP(Θ>u)lnP(>uΘ)P(Θ)lnΠ(u,i,j)Dsσ(x^uij)P(Θ)(u,i,j)Dslnσ(x^uij)+lnp(Θ)(u,i,j)Dslnσ(x^uij)λΘΘ2

其中, P ( Θ ) = 1 ( 2 π ⋅ λ Θ ) d e − Θ T Θ 2 λ Θ ⇒ l n P ( Θ ) = − ∣ ∣ Θ ∣ ∣ 2 2 λ Θ − l n ( 2 π ⋅ λ Θ ) d P(\Theta)=\frac{1}{\sqrt{(2\pi\cdot \lambda_{\Theta})^d}}e^{-\frac{\Theta^T\Theta}{2\lambda_{\Theta}}}\Rightarrow lnP(\Theta)=-\frac{||\Theta||^2}{2\lambda_\Theta}-ln\sqrt{(2\pi\cdot \lambda_{\Theta})^d} P(Θ)=(2πλΘ)d 1e2λΘΘTΘlnP(Θ)=2λΘΘ2ln(2πλΘ)d .
由于后一项与 Θ 的优化无关,故舍去;并且将 1 2 λ Θ \frac{1}{2\lambda_{\Theta}} 2λΘ1 替换成 λ Θ \lambda_{\Theta} λΘ,因为 λ Θ \lambda_{\Theta} λΘ 是超参,故可以这样替换。这样就得到最后要优化的目标函数了。
(个人理解:这里我们可以看出 λ Θ \lambda_{\Theta} λΘ 相当于传统结构风险损失函数中正则项前的超参,一般取值都很小,但我们做了一个倒数替换,也就是说 Θ 的分布在零附近波动特别大,几乎可以取遍所有值,说明我们对 P ( Θ ) P(\Theta) P(Θ) 先验分布的依赖并不强)

⑤ 实例

在 BPR 算法推导中,我们假设 Θ 为某个模型的参数向量,这里我们只讨论这个模型为 MF 时,BPR 算法的求解方法:
目标:预测排序矩阵 X ^ : = W ⋅ H T \hat{X}:=W\cdot H^T X^:=WHT
W: |U|*K 维矩阵;H: |I|*K 维矩阵
对 ,表示物品 i 对用户 u 的排序优先度
此时再令: x ^ u i j = x ^ u i − x ^ u j \hat{x}_{uij}=\hat{x}_{ui}-\hat{x}_{uj} x^uij=x^uix^uj
最终得到需要求解的最大对数后验估计函数:
∑ ( u , i , j ) ∈ D s l n σ ( x ^ u i − x ^ u j ) − λ Θ ∣ ∣ Θ ∣ ∣ 2 \sum_{(u,i,j)\in D_s}ln\sigma(\hat{x}_{ui}-\hat{x}_{uj})-\lambda_{\Theta}||\Theta||^2 (u,i,j)Dslnσ(x^uix^uj)λΘΘ2
这个式子对 Θ 求偏导后,用 Adam 来优化求解模型参数。

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值