美文网首页
贝叶斯个性化推荐

贝叶斯个性化推荐

作者: yi_cloud | 来源:发表于2019-01-19 15:18 被阅读0次

    Key Point1:

    能够使用贝叶斯做推荐排序的假设有两个:

    1. 用户U对商品I_iI_j的偏好和其他用户无关(即用户间的独立性)

    2. 用户U对商品I_iI_j的偏好和该用户喜欢的其他商品无关(即商品间的独立性)

    这两种关系满足完全性、反对称性和传递性:

    完整性:\forall i,j \in I: i \neq j \Rightarrow i >_u j\; \cup\;  j>_u i

    反对称性:\forall i,j \in I: i >_u j\; \cap\;  j>_u i \Rightarrow i=j

    传递性:\forall i,j,k \in I: i >_u j\; \cap\;  j>_u k \Rightarrow i>_uk

    Key Point2:

    类似LFM(隐语义模型),BPR将用户U和物品I的排序矩阵X分解成用户矩阵W(\vert U \vert \times k )和物品矩阵H(\vert I \vert \times k),满足\bar   {X}  =W \times H^T,k为矩阵\bar   X的秩

    BPR针对每个用户感兴趣的商品进行排序,因此对于任意一个用户u和商品i,期望如下:

    \overline{x}_{ui} = w_u \bullet h_i = \sum\limits_{f=1}^kw_{uf}h_{if}

    BPR最终目标:

    找到最合适的W和H,使得\bar   X最接近X,看似类似funkSVD,但推导过程不尽相同

    求解过程

    优化目标:P( \theta \vert >_u )根据贝叶斯公式有:P(\theta|>_u) = \frac{P(>_u|\theta)P(\theta)}{P(>_u)}

    根据用户物品排序和其他用户无关的假设,有:

    P(\theta|>_u) \propto P(>_u|\theta)P(\theta)

    很显然问题转化成了分别求解和数据集无关的P(\theta)以及 和数据集有关的P(>_u \vert \theta)

    P(>_u \vert \theta)的求解过程:

    根据用户对i和j喜好的独立性,将后者转化成和样本(u,i,j)有关的公式:

    \prod_{u \in U}P(>_u|\theta) = \prod_{(u,i,j) \in (U \times I \times I)}P(i >_u j|\theta)^{\delta((u,i,j) \in D)}(1-P(i >_u j|\theta))^{\delta((u,j,i) \not\in D) }

    其中\delta (x)\in [0,1],根据完整性和反对称性的性质,上式可以化简成:

    \prod_{u \in U}P(>_u|\theta) = \prod_{(u,i,j) \in D}P(i >_u j|\theta)①,

    其中,P(i >_u j|\theta) = \sigma(\overline{x}_{uij}(\theta))\sigma (x)为sigmoid函数,一是为了方便计算,二是sigmoid函数完美的满足了完整性、反对称性和传递性

    至此,我们还需要知道的是\overline{x}_{uij}(\theta)如何求得,这个式子需要满足i>_uj\overline{x}_{uij}(\theta)>0j>_ui\overline{x}_{uij}(\theta)<0,最直观的方式就是表示成下式:

    \overline{x}_{uij} = \overline{x}_{ui} - \overline{x}_{uj}\overline{x}_{ui},\overline{x}_{uj}\overline X(u,i)和\overline X(u,j)的值,将此式带入①中,得到:

    \prod_{u \in U}P(>_u|\theta) = \prod_{(u,i,j) \in D} \sigma(\overline{x}_{ui} - \overline{x}_{uj})

    P(\theta)的求解过程:

    也使用贝叶斯定理的假设:即P(\theta)服从正态分布:P(\theta) \sim N(0, \lambda_{\theta}I)

    还是根据①式,显然需要取对数后再计算,而对于正态分布来说,其对数和\vert \vert \theta \vert \vert^2成正比:

    lnP(\theta) = \lambda||\theta||^2

    综合P(\theta),P(>_u \vert \theta)的求解过程:

    ln\;P(\theta|>_u) \propto ln\;P(>_u|\theta)P(\theta)  = \sum\limits_{(u,i,j) \in D}ln\sigma(\overline{x}_{ui} - \overline{x}_{uj}) +\frac{1}{2}  \lambda||\theta||^2\;

    用梯度上升法求解,对上式求相对于\theta的偏导:

    \frac{\partial ln\;P(\theta|>_u)}{\partial \theta} \propto \sum\limits_{(u,i,j) \in D} \frac{1}{1+e^{\overline{x}_{ui} - \overline{x}_{uj}}}\frac{\partial (\overline{x}_{ui} - \overline{x}_{uj})}{\partial \theta} + \lambda \theta,其中:

    \overline{x}_{ui} - \overline{x}_{uj} = \sum\limits_{f=1}^kw_{uf}h_{if} - \sum\limits_{f=1}^kw_{uf}h_{jf}

    \theta转化为具体的参数就是w_{uf},h_{if},h_{jf}(这里对理解很关键,也是不同于LFM的地方)!

    \frac{\partial (\overline{x}_{ui} - \overline{x}_{uj})}{\partial \theta} = \begin{cases} (h_{if}-h_{jf})& {if\; \theta = w_{uf}}\\ w_{uf}& {if\;\theta = h_{if}} \\ -w_{uf}& {if\;\theta = h_{jf}}\end{cases}

    总结:

        BPR是基于矩阵分解的一种排序算法,但是和funkSVD之类的算法比,它不是做全局的评分优化,而是针对每一个用户自己的商品喜好分贝做排序优化。因此在迭代优化的思路上完全不同。同时对于训练集的要求也是不一样的,funkSVD只需要用户物品对应评分数据二元组做训练集,而BPR则需要用户对商品的喜好排序三元组做训练集。

    相关文章

      网友评论

          本文标题:贝叶斯个性化推荐

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