Collaborative Filtering for Implicit Feedback Datasets[1]公式推导

精确反馈的模型

min⁡x∗,y∗∑ru,iis known(ru,i−xuTyi)2+λ(∥xu∥2+∥yi∥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∗,y∗min​ru,i​ is known∑​(ru,i​−xuT​yi​)2+λ(∥xu​∥2+∥yi​∥2)(1)

隐式反馈模型

用户uuu对商品iii的交互量用ruir_{ui}rui​来表示,利用puip_{ui}pui​表示用户uuu对商品iii的偏好,通过二元化ru,ir_{u,i}ru,i​来获得。

pui={1rui>00rui=0p_{ui}=\begin{cases}1&r_{ui}>0\\0&r_{ui}=0\end{cases}pui​={10​rui​>0rui​=0​

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

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

当ruir_{ui}rui​增长的时候,我们有更坚定的理由去相信用户喜欢这个商品。在此我们引入变量cuic_{ui}cui​来表示用户uuu对商品iii产生的喜好puip_{ui}pui​的置信程度。

cui=1+αruic_{ui}=1+\alpha r_{ui}cui​=1+αrui​

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

模型的目标是为每个用户uuu找到可以代表它的向量xu∈Rfx_u\in \R^fxu​∈Rf,以及每个商品的代表向量yi∈Rfy_i\in \R ^fyi​∈Rf,它们可以通过内积即pui=xuTyip_{ui}=x_u^Ty_ipui​=xuT​yi​用来表达用户的喜好。可以称这些向量为用户因子和商品因子,这些向量将用户和商品拉入了一个可以直接比较的隐向量空间。

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

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

我们需要进行最小化的损失函数为
min⁡x∗,y∗∑u,icui(pui−xuTyi)2+λ(∥xu∥2+∥yi∥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∗,y∗min​u,i∑​cui​(pui​−xuT​yi​)2+λ(∥xu​∥2+∥yi​∥2)(2)
由于考虑到矩阵中的所有元素,m×nm\times nm×n很容易达到几十亿的级别,这样传统的梯度下降就不合适了。因此使用交替最小二乘法。

我们令L(xu,yi)=∑uicui(pui−xuTyi)2+λ(∥xu∥2+∥yi∥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​)=ui∑​cui​(pui​−xuT​yi​)2+λ(∥xu​∥2+∥yi​∥2)

假设商品矩阵YYY是确定的,对xux_uxu​求偏导

∂L∂xu=[∂L∂xu1∂L∂xu2⋮∂L∂xuf]=[∑i=1n2cui(pu,i−xuTyi)(−yi1)∑i=1n2cui(pu,i−xuTyi)(−yi2)⋮∑i=1n2cui(pu,i−xuTyi)(−yif)]+[2λxu12λxu2⋮2λxuf]\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}∂xu​∂L​=⎣⎢⎢⎢⎢⎡​∂xu1​∂L​∂xu2​∂L​⋮∂xuf​∂L​​⎦⎥⎥⎥⎥⎤​=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎡​i=1∑n​2cui​(pu,i​−xuT​yi​)(−yi1​)i=1∑n​2cui​(pu,i​−xuT​yi​)(−yi2​)⋮i=1∑n​2cui​(pu,i​−xuT​yi​)(−yif​)​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤​+⎣⎢⎢⎢⎡​2λxu1​2λxu2​⋮2λxuf​​⎦⎥⎥⎥⎤​

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

[∑i=1ncui(pui−xuTyi)(yi1)∑i=1ncui(pui−xuTyi)(yi2)⋮∑i=1ncui(pui−xuTyi)(yif)]=[λxu1λxu2⋮λxuf]\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=1∑n​cui​(pui​−xuT​yi​)(yi1​)i=1∑n​cui​(pui​−xuT​yi​)(yi2​)⋮i=1∑n​cui​(pui​−xuT​yi​)(yif​)​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤​=⎣⎢⎢⎢⎡​λxu1​λxu2​⋮λxuf​​⎦⎥⎥⎥⎤​

我们来观察左边向量的形式:
设:
V=[∑i=1ncui(pui−xuTyi)(yi1)∑i=1ncui(pui−xuTyi)(yi2)⋮∑i=1ncui(pui−xuTyi)(yif)]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=1∑n​cui​(pui​−xuT​yi​)(yi1​)i=1∑n​cui​(pui​−xuT​yi​)(yi2​)⋮i=1∑n​cui​(pui​−xuT​yi​)(yif​)​⎦⎥⎥⎥⎥⎥⎥⎥⎥⎤​

设矩阵Yn×fY_{n\times f}Yn×f​,每一行代表着商品的特征向量,fff为向量空间的维度。也就是说Y=[y1Ty2T⋮ynT]Y=\begin{bmatrix}y_1^T\\y_2^T\\\vdots\\y_n^T\end{bmatrix}Y=⎣⎢⎢⎢⎡​y1T​y2T​⋮ynT​​⎦⎥⎥⎥⎤​
论文中,也提出了CuC_uCu​为一个包含置信度的对角矩阵
Cu=[cu1cu2⋱cun]C_u=\begin{bmatrix}c_{u1}\\&c_{u2}\\&&\ddots\\&&&c_{un}\end{bmatrix}Cu​=⎣⎢⎢⎡​cu1​​cu2​​⋱​cun​​⎦⎥⎥⎤​
这里用大写字母表示矩阵,小写字母表示向量,请不要混淆。

∑i=1ncui(pui−xuTyi)(yi1)=[cu1(pu1−xuTy1)cu2(pu2−xuTy2)⋮cun(pun−xuTyn)]T×[y11y21⋮yn1]=(Cu×(p(u)−Yxu))T×Y∗,1=Y∗,1T×(Cu×(p(u)−Yxu))\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=1∑n​cui​(pui​−xuT​yi​)(yi1​)=⎣⎢⎢⎢⎡​cu1​(pu1​−xuT​y1​)cu2​(pu2​−xuT​y2​)⋮cun​(pun​−xuT​yn​)​⎦⎥⎥⎥⎤​T×⎣⎢⎢⎢⎡​y11​y21​⋮yn1​​⎦⎥⎥⎥⎤​=(Cu​×(p(u)−Yxu​))T×Y∗,1​=Y∗,1T​×(Cu​×(p(u)−Yxu​))

V=[Y∗,1T×(Cu×(p(u)−Yxu))Y∗,2T×(Cu×(p(u)−Yxu))⋮Y∗,nT×(Cu×(p(u)−Yxu))]=[Y∗,1TY∗,2T⋮Y∗,nT]×(Cu×(p(u)−Yxu))=YT×(Cu×(p(u)−Yxu))=λxuV=\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_uV=⎣⎢⎢⎢⎡​Y∗,1T​×(Cu​×(p(u)−Yxu​))Y∗,2T​×(Cu​×(p(u)−Yxu​))⋮Y∗,nT​×(Cu​×(p(u)−Yxu​))​⎦⎥⎥⎥⎤​=⎣⎢⎢⎢⎡​Y∗,1T​Y∗,2T​⋮Y∗,nT​​⎦⎥⎥⎥⎤​×(Cu​×(p(u)−Yxu​))=YT×(Cu​×(p(u)−Yxu​))=λxu​

可得:

YTCup(u)=(λI+YTCuY)xu⟺xu=(λI+YTCuY)−1YTCup(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)YTCu​p(u)=(λI+YTCu​Y)xu​⟺xu​=(λI+YTCu​Y)−1YTCu​p(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.

Collaborative Filtering for Implicit Feedback Datasets结论公式推导相关推荐

  1. Alternating Least Squares(ASL) for Implicit Feedback Datasets的数学推导以及用Python实现

    近期在看CF的相关论文,<Collaborative Filtering for Implicit Feedback Datasets>思想非常好,非常easy理解.可是从目标函数 是怎样 ...

  2. 【推荐系统论文精读系列】(五)--Neural Collaborative Filtering

    文章目录 一.摘要 二.介绍 三.准备知识 3.1 从隐式数据中进行学习 3.2 矩阵分解 四.神经协同过滤 4.1 总体框架 4.1.1 学习NCF 4.2 广义矩阵分解(GMF) 4.3 多层感知 ...

  3. 2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Learning

    [论文阅读笔记]2022_WWW_Improving Graph Collaborative Filtering with Neighborhood-enriched Contrastive Lear ...

  4. 2020_KDD_Dual Channel Hypergraph Collaborative Filtering

    [论文阅读笔记]2020_KDD_Dual Channel Hypergraph Collaborative Filtering 论文下载地址: https://doi.org/10.1145/339 ...

  5. 推荐系统:协同过滤collaborative filtering

    http://blog.csdn.net/pipisorry/article/details/51788955 (个性化)推荐系统构建三大方法:基于内容的推荐content-based,协同过滤col ...

  6. 论文笔记:Neural Collaborative Filtering

    一.基本信息 论文题目:<Neural Collaborative Filtering> 发表时间:WWW 2017 作者及单位: 二.摘要 In recent years, deep n ...

  7. 论文笔记:Neural Collaborative Filtering(NCF)

    前言 论文链接:https://arxiv.org/abs/1708.05031 github:https://github.com/yihong-chen/neural-collaborative- ...

  8. NCF(Neural Collaborative Filtering)——协同过滤与神经网络的结合

    Neural Collaborative Filtering paper 关于协同过滤 协同过滤简而言之就是物以类聚人以群分,在真实场景中,通常会获得一张用户物品交互表,其实就是一个矩阵M, M [ ...

  9. scala-MLlib官方文档---spark.ml package--ML Pipelines+Collaborative Filtering+Frequent Pattern Mining

    三. ML Pipeline Main concepts in Pipelines(管道中的主要概念) MLlib对用于机器学习算法的API进行了标准化,从而使将多种算法组合到单个管道或工作流中变得更 ...

最新文章

  1. NFS---linux远程挂载
  2. Jsp获得Map中map.put(2, bb);此类的value值
  3. [转]关于安卓与ios的推送系统,我说说自己的看法。
  4. 【数理知识】《矩阵论》方保镕老师-第7章-几类特殊矩阵与特殊积
  5. python struct 官方文档
  6. 修复bug的12个关键步骤:
  7. JQuery-学习笔记05【高级——JQuery动画和遍历】
  8. Supervisor使用教程
  9. 几个想法,有兴趣的可以深入下去
  10. android的padding属性,以编程方式获取android:padding属性
  11. OC-NSFileManager和NSFileHandle的使用
  12. 部署egg需要用到pm2吗_使用宝塔面板部署校园综合服务平台项目
  13. C语言程序设计 笔试考试,试题样卷
  14. python基础知识7——迭代器,生成器,装饰器
  15. 【微型计算机原理与接口技术】80X86微处理器发展与内部结构
  16. 第 6 章 MybatisPlus 代码生成器
  17. 有关 VS winform 开发问题
  18. MQTT 客户端工具介绍
  19. 基于python的客流统计_基于深度学习的客流量统计方法
  20. 无线局域网技术分析及攻击实战

热门文章

  1. dba怎么报考_深圳dba双证报考时间
  2. SpringMVC框架中@ControllerAdvice和对应Advice切面使用原理
  3. linux 服务器下查看防火墙
  4. SMB服务搭建与访问
  5. linux网卡驱动离线安装_Linux下网卡驱动的安装
  6. G1 GC详解及设置
  7. 关于射线检测与碰撞检测
  8. 【Git版本控制管理】Gitee(码云)和GitHub的使用
  9. PTA——递归法求最大公约数
  10. camera 成像原理