有什么问题欢迎讨论呀!
论文标题: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.
贡献
-
提出了通用的优化策略: B P R − O P T BPR-O\small PT BPR−OPT,它是通过最大化后验估计来得到最有个性化排序。类似最大化 ROC 曲线下方面积(AUC);
-
基于 B P R − O P T BPR-O\small PT BPR−OPT,提出了通用学习算法 L E A R N B P R L\small EARN\normalsize BPR LEARNBPR:1. 优化方法采用了随机梯度下降法;2. 采样方法:bootstrap 采样,是一种重采样的方法,主要用来估计标准误、置信区间和偏差;
(个人理解:现在采用的优化方法为 Adam,是一种集成算法,学习步长在迭代的过程中可以动态调整。所以对这里的优化方法就不过多讲解。) -
将算法 L E A R N B P R L\small EARN\normalsize BPR LEARNBPR 用在当时两个 SOTA 推荐模型上:1. MF;2. kNN;
-
实验展示出在个性化排序任务上,用 BPR 学习一个模型效果要优于其他方法。
2. 个性化推荐-BPR 算法原理
① 符号定义
U:用户集;I:物品集; S ⊆ U × I S\subseteq U\times I S⊆U×I 隐式反馈集; > u >_u >u:用户 u 的偏好, i > u j i>_uj i>uj 表示 i 和 j 同时出现时,用户对 i 产生了隐式反馈,相比于 j,u 更偏好 i。
I1 | I2 | I3 | I4 | |
---|---|---|---|---|
U1 | ? | + | + | ? |
U2 | + | ? | ? | + |
U3 | + | + | ? | ? |
U4 | ? | ? | + | + |
U5 | ? | ? | + | ? |
有过隐式反馈记录(click):‘+’;反之:‘?’。
此关系(
>
u
>_u
>u)满足 完整性(totality)、反对称性(autisymmetry)和传递性(trainsitivity)约束:
- ∀ 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,j∈I:i=j⇒i>uj ∪j>ui(如果物品 i 和 j 不是同一个物品,那么他们一定存在定义的这个关系)
- ∀ 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,j∈I:i>uj ∩j>ui⇒i=j(有点类似矩阵的反对称性)
- ∀ 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,k∈I:i>uj ∩j>uk⇒i>uk
I
u
+
:
{
i
∈
I
:
(
u
,
i
)
∈
S
}
I_u^+:\{i\in I:(u,i)\in S\}
Iu+:{i∈I:(u,i)∈S}
U
i
+
:
{
u
∈
U
:
(
u
,
i
)
∈
S
}
U_i^+:\{u\in U:(u,i)\in S\}
Ui+:{u∈U:(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)∣i∈Iu+∩j∈I\Iu+}
③ 两个基本假设
- 用户之间的偏好行为相互独立,即用户 u 在 i 和 j 之间的偏好与其他用户无关;
- 同一用户对不同物品对的偏序相互独立,即用户 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∣Θ)=Πu∈Up(>u∣Θ)=Π(u,i,j)∈U×I×Ip(i>uj∣Θ)δ((u,i,j)∈Ds)⋅(1−p(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)
Πu∈Up(>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)
Πu∈Up(>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+e−x1,
σ
(
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} BPR−OPT:=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π⋅λΘ)d1e−2λΘΘTΘ⇒lnP(Θ)=−2λΘ∣∣Θ∣∣2−ln(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^:=W⋅HT
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^ui−x^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)∈Ds∑lnσ(x^ui−x^uj)−λΘ∣∣Θ∣∣2
这个式子对 Θ 求偏导后,用 Adam 来优化求解模型参数。