Key Point1:
能够使用贝叶斯做推荐排序的假设有两个:
1. 用户U对商品和的偏好和其他用户无关(即用户间的独立性)
2. 用户U对商品和的偏好和该用户喜欢的其他商品无关(即商品间的独立性)
这两种关系满足完全性、反对称性和传递性:
完整性:
反对称性:
传递性:
Key Point2:
类似LFM(隐语义模型),BPR将用户U和物品I的排序矩阵X分解成用户矩阵和物品矩阵,满足,k为矩阵的秩
BPR针对每个用户感兴趣的商品进行排序,因此对于任意一个用户u和商品i,期望如下:
BPR最终目标:
找到最合适的W和H,使得最接近,看似类似funkSVD,但推导过程不尽相同
求解过程
优化目标:,根据贝叶斯公式有:;
根据用户物品排序和其他用户无关的假设,有:
很显然问题转化成了分别求解和数据集无关的以及 和数据集有关的
的求解过程:
根据用户对i和j喜好的独立性,将后者转化成和样本(u,i,j)有关的公式:
其中,根据完整性和反对称性的性质,上式可以化简成:
①,
其中,,为sigmoid函数,一是为了方便计算,二是sigmoid函数完美的满足了完整性、反对称性和传递性
至此,我们还需要知道的是如何求得,这个式子需要满足时;时,最直观的方式就是表示成下式:
,是(u,i)和(u,j)的值,将此式带入①中,得到:
的求解过程:
也使用贝叶斯定理的假设:即服从正态分布:
还是根据①式,显然需要取对数后再计算,而对于正态分布来说,其对数和成正比:
综合的求解过程:
用梯度上升法求解,对上式求相对于的偏导:
,其中:
而转化为具体的参数就是(这里对理解很关键,也是不同于LFM的地方)!
总结:
BPR是基于矩阵分解的一种排序算法,但是和funkSVD之类的算法比,它不是做全局的评分优化,而是针对每一个用户自己的商品喜好分贝做排序优化。因此在迭代优化的思路上完全不同。同时对于训练集的要求也是不一样的,funkSVD只需要用户物品对应评分数据二元组做训练集,而BPR则需要用户对商品的喜好排序三元组做训练集。