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}=\begin{cases}1&r_{ui}>0\\0&r_{ui}=0\end{cases} 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}=\begin{bmatrix}\frac{\partial L}{\partial x_{u1}}\\\frac{\partial L}{\partial x_{u2}}\\\vdots\\\frac{\partial L}{\partial x_{uf}}\end{bmatrix}=\begin{bmatrix}\sum\limits_{i=1}^n2c_{ui}(p_{u,i}-x_u^Ty_i)(-y_{i1})\\\sum\limits_{i=1}^n2c_{ui}(p_{u,i}-x_u^Ty_i)(-y_{i2})\\\vdots\\\sum\limits_{i=1}^n2c_{ui}(p_{u,i}-x_u^Ty_i)(-y_{if})\end{bmatrix}+\begin{bmatrix}2\lambda x_{u1}\\2\lambda x_{u2}\\\vdots\\2\lambda x_{uf}\end{bmatrix} 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 ] \begin{bmatrix}\sum\limits_{i=1}^nc_{ui}(p_{ui}-x_u^Ty_i)(y_{i1})\\\sum\limits_{i=1}^nc_{ui}(p_{ui}-x_u^Ty_i)(y_{i2})\\\vdots\\\sum\limits_{i=1}^nc_{ui}(p_{ui}-x_u^Ty_i)(y_{if})\end{bmatrix}=\begin{bmatrix}\lambda x_{u1}\\\lambda x_{u2}\\\vdots\\\lambda x_{uf}\end{bmatrix} 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=\begin{bmatrix}\sum\limits_{i=1}^nc_{ui}(p_{ui}-x_u^Ty_i)(y_{i1})\\\sum\limits_{i=1}^nc_{ui}(p_{ui}-x_u^Ty_i)(y_{i2})\\\vdots\\\sum\limits_{i=1}^nc_{ui}(p_{ui}-x_u^Ty_i)(y_{if})\end{bmatrix} 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=\begin{bmatrix}y_1^T\\y_2^T\\\vdots\\y_n^T\end{bmatrix} Y=y1Ty2TynT
论文中,也提出了 C u C_u Cu为一个包含置信度的对角矩阵
C u = [ c u 1 c u 2 ⋱ c u n ] C_u=\begin{bmatrix}c_{u1}\\&c_{u2}\\&&\ddots\\&&&c_{un}\end{bmatrix} 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})=\begin{bmatrix}c_{u1}(p_{u1}-x_u^Ty_1)\\c_{u2}(p_{u2}-x_u^Ty_2)\\\vdots\\c_{un}(p_{un}-x_u^Ty_n)\end{bmatrix}^T\times \begin{bmatrix}y_{11}\\y_{21}\\\vdots\\y_{n1}\end{bmatrix}\\=(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=\begin{bmatrix}Y_{*,1}^T\times (C_u\times(p(u)-Yx_u))\\Y_{*,2}^T\times (C_u\times(p(u)-Yx_u))\\\vdots\\Y_{*,n}^T\times (C_u\times(p(u)-Yx_u))\end{bmatrix}=\begin{bmatrix}Y_{*,1}^T\\Y_{*,2}^T\\\vdots\\Y_{*,n}^T\end{bmatrix}\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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值