美文网首页
BPR 贝叶斯个性化排序

BPR 贝叶斯个性化排序

作者: 机器不能学习 | 来源:发表于2019-03-28 21:27 被阅读0次

    BPR 贝叶斯个性化排序

    相对于其他矩阵分解,不管是显式分解还是隐式分解,他们最后的得分都将经过排序后选择出要推荐的前n个。与其用均方根的损失函数去逼近原矩阵并选择评分最高分商品,那么我们为什么不直接以排序为目的来训练呢?

    由此我们提出了pairwise,最早我们的排序算法是pointwise其思想就是传统矩阵分解,补全单个点的值并排序。pairwise的思想是使用成对的序列,比如用户u在观看i,j商品时观看了i,那么i>j。

    我们的思路,将原矩阵分解

    BPR 贝叶斯个性化排序

    分解后的矩阵乘积逼近打分矩阵。(该打分矩阵与原矩阵有差距,该打分矩阵是不存在的,我们只是用两个矩阵代表他)

    接下来我们来看目标函数。

    在此之前我们先讲讲怎么从贝叶斯角度看待损失函数。

    我们最小化损失函数被看做是不断趋近于后验分布的过程。

    在本题中,我们的目标函数可以看做

    BPR 贝叶斯个性化排序

    theta表示矩阵W和H,>u表示排序。

    由于p(>u)对于同一个用户都是相同的。

    那么我们最大化目标函数,成了最大化分子项。

    BPR 贝叶斯个性化排序

    对于前项,我们可以这样计算

    BPR 贝叶斯个性化排序

    将每两个商品比较。

    对于后者p(theta),作为先验概率,在贝叶斯理论中,其就是正则项,而前者损失项看做似然。

    如果p(theta)服从的是拉布拉斯分布,那么我们用L1正则。如果服从高斯分布,我们用L2正则。

    简单说说两个正则的区别,L1趋于将特征值归零来简化模型。L2趋于将特征值都趋于0但不为0,L2更好的结合了多个特征值关系,所以效果更好,但是其算法的运行速度没有L1快。

    BPR 贝叶斯个性化排序

    由图片我们也可以看出,我们对似然概率的计算是使用sigma函数

    BPR 贝叶斯个性化排序

    其中的Xu12表示用户u第1和第2个商品分数之差。

    矩阵分解的作用主要就是为了得到上述的实值函数Xu12。矩阵分解后可得到

    注意这里的Wuf  hif是分解矩阵,其中hif矩阵是两个用户隐矩阵乘积

    BPR 贝叶斯个性化排序

    学习模型。有了损失函数,我们可以用拟牛顿法或者梯度下降来学习。

    BPR 贝叶斯个性化排序

    最后得到的更新式子只与Xuij有关。

    训练集问题。我们训练是以三元组为单位,

    <u ,i ,j>,因为我们所需的Xuij是个实数,是用户u的i,j商品评分之差。

    ****重点

    Xuij是一个学习到的值,由于是用Xui-Xuj,且要令损失函数最大,所以Xuij>0且越大越好。Xui是由商品id行乘权重矩阵得来,所以这相当于非线性的函数映射每个商品id都会得到一个合理的X,且用于计算时使损失函数最大

    BPR 贝叶斯个性化排序

    于是我们把训练集分为M*N*N的形式更方便查询。(M用户数,N商品数)

    然而用原矩阵应该问题也不大,只不过要给出负例和空缺值的判断才行。

    总结,该算法和普通的矩阵分解算法一样,其特点是很容易的从巨大的商品中找出少量商品推给用户。和普通分解算法的区别在于目标函数的不同,前者目标是尽可能的趋近原矩阵,而后者是尽可能大的找出顺序。

    相关文章

      网友评论

          本文标题:BPR 贝叶斯个性化排序

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