Abstract
BPR主要用于基于隐式反馈(implicit feedback)的Item Recommendation。
尽管有很多做同样事情的算法比如matrix factorization, knearest-neighbor。但他们并不是直接对于物品排名本身进行预测的。
而BPR则是通过贝叶斯分析得到最大的后验估计量来预测排名。
我的理解就是,MF,KNN算法是预测出用户对每个item的感兴趣程度,然后排名,而BPR则是通过预测用户对A的兴趣大于B的概率,从而预测排名。
Bayesian Personalized Ranking
y
u
i
=
1
y_{ui} = 1
yui=1,if interaction (user u, item i) is observed)
y
u
i
=
0
y_{ui} = 0
yui=0,otherwise
在传统隐式反馈模型中,如果用户 u u u和物品 i i i的交互没有被观测到(数据缺失),那么就会被归为负类。那么如果这个模型训练的足够好,那么所有未被观测到的样本,随后都会被预测为 0 0 0。
而使用BPR就是为了解决这类问题。
后验概率
构建一个数据集 D s D_s Ds,如果用户 u u u对物品 i i i产生了交互而没用对物品 j j j产生交互,则会得到一个偏好对 ( u , i , j ) (u,i,j) (u,i,j)。即 D s = { ( u , i , j ) ∣ i ∈ I u + ∧ I ∖ I u + } D_s = \{(u,i,j)|i\in I_u^+\land I\setminus I_u^+ \} Ds={(u,i,j)∣i∈Iu+∧I∖Iu+}(可以理解为同时有物品 i , j i,j i,j的时候,用户 u u u点击了 i i i)
定义 p ( i > u j ∣ θ ) p(i >_u j|\theta) p(i>uj∣θ)为,用户 u u u有 θ \theta θ的概率有偏好对 ( u , i , j ) (u,i,j) (u,i,j)
那么我们的任务就是求
θ
\theta
θ,即根据数据集(用户的对物品的偏序关系
>
u
>_u
>u)
,求使得
p
(
θ
∣
>
u
)
p(\theta|>_u)
p(θ∣>u)最大化的
θ
\theta
θ。(此时的
θ
\theta
θ是指的是每个偏序概率的合集)
而
p
(
θ
∣
>
u
)
∝
p
(
>
u
∣
θ
)
p
(
θ
)
p(\theta|>_u) \propto p(>_u|\theta)p(\theta)
p(θ∣>u)∝p(>u∣θ)p(θ)
求 p ( > u ∣ θ ) p(>_u|\theta) p(>u∣θ)
这就相当于,我们知道了每一对的
i
>
u
j
i >_uj
i>uj偏序概率。
那么总的概率就是把它们相乘即可
即
p
(
>
u
∣
θ
)
=
Π
(
u
,
i
,
j
)
∈
D
s
p
(
i
>
u
j
)
p(>_u|\theta) = \Pi_{(u,i,j)\in D_s}p(i >_u j)
p(>u∣θ)=Π(u,i,j)∈Dsp(i>uj)
我们可以用相关性来定义 p p p,即 p ( i > u j ) = σ ( x ^ u , i , j ( θ ) ) p(i >_u j) = \sigma(\hat{x}_{u,i,j}(\theta)) p(i>uj)=σ(x^u,i,j(θ))
- σ \sigma σ为sigmoid函数, σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+e−x1
- x ^ u , i , j ( θ ) \hat{x}_{u,i,j}(\theta) x^u,i,j(θ)是实值函数,返回用户 u u u与物品 i , j i,j i,j之间的关系,可以用矩阵分解或KNN得到。
求 p ( θ ) p(\theta) p(θ)
假设参数服从正态分布
p
(
θ
)
∼
N
(
0
,
λ
0
I
)
p(\theta)\sim N(0,\lambda_0I)
p(θ)∼N(0,λ0I)
所以
l
n
(
p
(
θ
)
)
=
λ
∣
∣
θ
∣
∣
2
ln(p(\theta))=\lambda||\theta||^2
ln(p(θ))=λ∣∣θ∣∣2
求后验概率
l
n
(
p
(
>
u
∣
θ
)
p
(
θ
)
)
ln(p(>_u|\theta)p(\theta))
ln(p(>u∣θ)p(θ))
=
l
n
(
Π
(
u
,
i
,
j
)
∈
D
s
σ
(
x
^
u
,
i
,
j
(
θ
)
)
p
(
θ
)
)
=ln(\Pi_{(u,i,j)\in D_s}\sigma(\hat{x}_{u,i,j}(\theta))p(\theta))
=ln(Π(u,i,j)∈Dsσ(x^u,i,j(θ))p(θ))
=
∑
(
u
,
i
,
j
)
∈
D
s
l
n
(
σ
(
x
^
u
,
i
,
j
)
)
−
λ
θ
∣
∣
θ
∣
∣
2
=\sum_{(u,i,j)\in D_s}ln(\sigma(\hat{x}_{u,i,j}))-\lambda_{\theta}||\theta||^2
=∑(u,i,j)∈Dsln(σ(x^u,i,j))−λθ∣∣θ∣∣2
梯度下降
∑
(
u
,
i
,
j
)
∈
D
s
l
n
(
σ
(
x
^
u
,
i
,
j
)
)
−
λ
θ
∣
∣
θ
∣
∣
2
\sum_{(u,i,j)\in D_s}ln(\sigma(\hat{x}_{u,i,j}))-\lambda_{\theta}||\theta||^2
(u,i,j)∈Ds∑ln(σ(x^u,i,j))−λθ∣∣θ∣∣2
可以采用随机梯度下降
其中
x
u
i
j
=
x
u
i
−
x
u
j
x_{uij}=x_{ui}-x_{uj}
xuij=xui−xuj
参考博客
https://blog.csdn.net/weixin_46099084/article/details/109011670
https://zhuanlan.zhihu.com/p/60704781
https://www.cnblogs.com/pinard/p/9128682.html#commentform