• Collaborative Filtering for Implicit Feedback Datasets结论公式推导


    Collaborative Filtering for Implicit Feedback Datasets[1]公式推导在这里插入图片描述

    精确反馈的模型

    min ⁡ x ∗ , y ∗ ∑ r u , i  is known ( r u , i − x u T y i ) 2 + λ ( ∥ x u ∥ 2 + ∥ y i ∥ 2 ) (1) \min\limits_{x^*,y^*}\sum\limits_{r_{u,i} \text{ is known}}(r_{u,i}-x_u^Ty_i)^2+\lambda(\Vert x_u\Vert ^2+\Vert y_i\Vert^2)\tag{1} x,yminru,i is known(ru,ixuTyi)2+λ(xu2+yi2)(1)

    隐式反馈模型

    用户 u u u对商品 i i i的交互量用 r u i r_{ui} rui来表示,利用 p u i p_{ui} pui表示用户 u u u对商品 i i i的偏好,通过二元化 r u , i r_{u,i} ru,i来获得。

    p u i = { 1 r u i > 0 0 r u i = 0 p_{ui}=

    {1rui>00rui=0
    pui={10rui>0rui=0

    如果用户 u u u与商品 i i i进行了交互,则可以有一定的概率认为用户 u u u喜欢商品 i i i
    但是用户没有对某个商品产生正反馈,不一定是不喜欢这个商品。他可能根本就没看到这个商品或者因为价格或者其他限制原因使得他没有点开的意愿或者条件。

    此外,用户的正反馈可能也不是因为喜欢,例如,用户可能仅仅因为停留在之前看过的节目的频道就看电视节目。

    r u i r_{ui} rui增长的时候,我们有更坚定的理由去相信用户喜欢这个商品。在此我们引入变量 c u i c_{ui} cui来表示用户 u u u对商品 i i i产生的喜好 p u i p_{ui} pui的置信程度。

    c u i = 1 + α r u i c_{ui}=1+\alpha r_{ui} cui=1+αrui

    α \alpha α的初始值设置为40

    模型的目标是为每个用户 u u u找到可以代表它的向量 x u ∈ R f x_u\in \R^f xuRf,以及每个商品的代表向量 y i ∈ R f y_i\in \R ^f yiRf,它们可以通过内积即 p u i = x u T y i p_{ui}=x_u^Ty_i pui=xuTyi用来表达用户的喜好。可以称这些向量为用户因子和商品因子,这些向量将用户和商品拉入了一个可以直接比较的隐向量空间。

    与传统的精确反馈的区别在于

    1. 需要计算不同的置信程度
    2. 优化的时候需要考虑所有的 u , i u,i u,i

    我们需要进行最小化的损失函数为
    min ⁡ x ∗ , y ∗ ∑ u , i c u i ( p u i − x u T y i ) 2 + λ ( ∥ x u ∥ 2 + ∥ y i ∥ 2 ) (2) \min\limits_{x^*,y^*}\sum\limits_{u,i} c_{ui}(p_{ui}-x_u^Ty_i)^2+\lambda(\Vert x_u\Vert ^2+\Vert y_i\Vert^2)\tag{2} x,yminu,icui(puixuTyi)2+λ(xu2+yi2)(2)
    由于考虑到矩阵中的所有元素, m × n m\times n m×n很容易达到几十亿的级别,这样传统的梯度下降就不合适了。因此使用交替最小二乘法。

    我们令 L ( x u , y i ) = ∑ u i c u i ( p u i − x u T y i ) 2 + λ ( ∥ x u ∥ 2 + ∥ y i ∥ 2 ) L(x_u,y_i)=\sum\limits_{ui} c_{ui}(p_{ui}-x_u^Ty_i)^2+\lambda(\Vert x_u\Vert ^2+\Vert y_i\Vert^2) L(xu,yi)=uicui(puixuTyi)2+λ(xu2+yi2)

    假设商品矩阵 Y Y Y是确定的,对 x u x_u xu求偏导

    ∂ L ∂ x u = [ ∂ L ∂ x u 1 ∂ L ∂ x u 2 ⋮ ∂ L ∂ x u f ] = [ ∑ i = 1 n 2 c u i ( p u , i − x u T y i ) ( − y i 1 ) ∑ i = 1 n 2 c u i ( p u , i − x u T y i ) ( − y i 2 ) ⋮ ∑ i = 1 n 2 c u i ( p u , i − x u T y i ) ( − y i f ) ] + [ 2 λ x u 1 2 λ x u 2 ⋮ 2 λ x u f ] \frac{\partial L}{\partial x_u}=

    [Lxu1Lxu2Lxuf]
    =
    [i=1n2cui(pu,ixuTyi)(yi1)i=1n2cui(pu,ixuTyi)(yi2)i=1n2cui(pu,ixuTyi)(yif)]
    +
    [2λxu12λxu22λxuf]
    xuL=xu1Lxu2LxufL=i=1n2cui(pu,ixuTyi)(yi1)i=1n2cui(pu,ixuTyi)(yi2)i=1n2cui(pu,ixuTyi)(yif)+2λxu12λxu22λxuf

    让偏导向量为0向量,也就是最后两个向量之和为0,那么可以将2消除。

    [ ∑ i = 1 n c u i ( p u i − x u T y i ) ( y i 1 ) ∑ i = 1 n c u i ( p u i − x u T y i ) ( y i 2 ) ⋮ ∑ i = 1 n c u i ( p u i − x u T y i ) ( y i f ) ] = [ λ x u 1 λ x u 2 ⋮ λ x u f ]

    [i=1ncui(puixuTyi)(yi1)i=1ncui(puixuTyi)(yi2)i=1ncui(puixuTyi)(yif)]
    =
    [λxu1λxu2λxuf]
    i=1ncui(puixuTyi)(yi1)i=1ncui(puixuTyi)(yi2)i=1ncui(puixuTyi)(yif)=λxu1λxu2λxuf

    我们来观察左边向量的形式:
    设:
    V = [ ∑ i = 1 n c u i ( p u i − x u T y i ) ( y i 1 ) ∑ i = 1 n c u i ( p u i − x u T y i ) ( y i 2 ) ⋮ ∑ i = 1 n c u i ( p u i − x u T y i ) ( y i f ) ] V=

    [i=1ncui(puixuTyi)(yi1)i=1ncui(puixuTyi)(yi2)i=1ncui(puixuTyi)(yif)]
    V=i=1ncui(puixuTyi)(yi1)i=1ncui(puixuTyi)(yi2)i=1ncui(puixuTyi)(yif)

    设矩阵 Y n × f Y_{n\times f} Yn×f,每一行代表着商品的特征向量, f f f为向量空间的维度。也就是说 Y = [ y 1 T y 2 T ⋮ y n T ] Y=

    [y1Ty2TynT]
    Y=y1Ty2TynT
    论文中,也提出了 C u C_u Cu为一个包含置信度的对角矩阵
    C u = [ c u 1 c u 2 ⋱ c u n ] C_u=
    [cu1cu2cun]
    Cu=cu1cu2cun

    这里用大写字母表示矩阵,小写字母表示向量,请不要混淆。

    ∑ i = 1 n c u i ( p u i − x u T y i ) ( y i 1 ) = [ c u 1 ( p u 1 − x u T y 1 ) c u 2 ( p u 2 − x u T y 2 ) ⋮ c u n ( p u n − x u T y n ) ] T × [ y 11 y 21 ⋮ y n 1 ] = ( C u × ( p ( u ) − Y x u ) ) T × Y ∗ , 1 = Y ∗ , 1 T × ( C u × ( p ( u ) − Y x u ) ) \sum\limits_{i=1}^nc_{ui}(p_{ui}-x_u^Ty_i)(y_{i1})=

    [cu1(pu1xuTy1)cu2(pu2xuTy2)cun(punxuTyn)]
    ^T\times
    [y11y21yn1]
    \\=(C_u\times(p(u)-Yx_u))^T\times Y_{*,1}\\=Y_{*,1}^T\times (C_u\times(p(u)-Yx_u)) i=1ncui(puixuTyi)(yi1)=cu1(pu1xuTy1)cu2(pu2xuTy2)cun(punxuTyn)T×y11y21yn1=(Cu×(p(u)Yxu))T×Y,1=Y,1T×(Cu×(p(u)Yxu))

    V = [ Y ∗ , 1 T × ( C u × ( p ( u ) − Y x u ) ) Y ∗ , 2 T × ( C u × ( p ( u ) − Y x u ) ) ⋮ Y ∗ , n T × ( C u × ( p ( u ) − Y x u ) ) ] = [ Y ∗ , 1 T Y ∗ , 2 T ⋮ Y ∗ , n T ] × ( C u × ( p ( u ) − Y x u ) ) = Y T × ( C u × ( p ( u ) − Y x u ) ) = λ x u V=

    [Y,1T×(Cu×(p(u)Yxu))Y,2T×(Cu×(p(u)Yxu))Y,nT×(Cu×(p(u)Yxu))]
    =
    [Y,1TY,2TY,nT]
    \times (C_u\times(p(u)-Yx_u))\\=Y^T\times (C_u\times(p(u)-Yx_u))=\lambda x_u V=Y,1T×(Cu×(p(u)Yxu))Y,2T×(Cu×(p(u)Yxu))Y,nT×(Cu×(p(u)Yxu))=Y,1TY,2TY,nT×(Cu×(p(u)Yxu))=YT×(Cu×(p(u)Yxu))=λxu

    可得:

    Y T C u p ( u ) = ( λ I + Y T C u Y ) x u    ⟺    x u = ( λ I + Y T C u Y ) − 1 Y T C u p ( u ) Y^TC_up(u)=(\lambda I+Y^TC_uY)x_u\iff x_u=(\lambda I+Y^TC_uY)^{-1}Y^TC_up(u) YTCup(u)=(λI+YTCuY)xuxu=(λI+YTCuY)1YTCup(u)

    [1] Hu Y, Koren Y, Volinsky C. Collaborative filtering for implicit feedback datasets[C]//2008 Eighth IEEE international conference on data mining. Ieee, 2008: 263-272.

  • 相关阅读:
    AM@无穷小和无穷大
    有关环境变量
    Java8 新特性 函数式接口
    Java经典问题解答(9题)
    Leetcode 878. 第 N 个神奇数字
    leetcode 215. 数组中的第K个最大元素
    Camera-MTK OpenCamera时序以及耗时
    Windows10 MySQL(8.0.37)安装与配置
    LeetCode 55. 跳跃游戏
    【配电网故障定位】基于二进制混合灰狼粒子群算法的配电网故障定位 33节点配电系统故障定位【Matlab代码#79】
  • 原文地址:https://blog.csdn.net/qq_42898299/article/details/125606030