推荐系统–矩阵分解(1)
推荐系统–矩阵分解(2)
推荐系统–矩阵分解(3)
推荐系统–矩阵分解(4)
推荐系统–矩阵分解(5)
推荐系统–矩阵分解(6)

9 应用于联邦学习的矩阵分解

这个部分主要参考以下两篇论文:
2008-Collaborative Filtering for Implicit Feedback Datasets
Federated collaborative filtering for privacy-preserving presonalized recommendation system

9.1 Collaborative Filtering for Implicit Feedback Datasets

在该模型中对ruir_{ui}rui​引入喜好变量和置信度变量。

  • 喜好变量fuif_{ui}fui​是一个二元变量,表示用户是否具有该无偏偏好,定义如下:
    fui={1rui>00rui=0(1)f_{u i}=\left\{\begin{array}{cc} 1 & r_{u i}>0 \\ 0 & r_{u i}=0 \end{array}\right. \tag1 fui​={10​rui​>0rui​=0​(1)
  • 置信度变量 cuic_{ui}cui​表示用户对物品喜好的置信程度,定义如下:
    cui=1+αrui(2)c_{u i}=1+\alpha r_{u i} \tag2 cui​=1+αrui​(2)
    α\alphaα是超参数。
  • 整体的损失函数如下:
    最终得到如下优化目标函数:
    J=min⁡p⋆,q⋆∑u,icui(fui−puTqi)2+λ(∑u∥pu∥2+∑i∥qi∥2)(3)J = \min _{p_{\star}, q_{\star}} \sum_{u, i} c_{u i}\left(f_{u i}-p_{u}^{T} q_{i}\right)^{2}+\lambda\left(\sum_{u}\left\|p_{u}\right\|^{2}+\sum_{i}\left\|q_{i}\right\|^{2}\right) \tag3 J=p⋆​,q⋆​min​u,i∑​cui​(fui​−puT​qi​)2+λ(u∑​∥pu​∥2+i∑​∥qi​∥2)(3)
    λ\lambdaλ是惩罚项,用于惩罚两个参数,防止过拟合
    这个问题是非凸函数, 作者使用的是ALS(交替最小二乘法)优化方法。如果固定其中一个参数将其看做是常数的话,那么整个问题就变成了一元二次函数,可以很容易的得到极小值点。根据这种思想就有了交替最小二乘法:
  • 初始化pu1p_u^1pu1​,qi1q_i^1qi1​
  • 循环kkk,k=1,2,…k = 1, 2, \dotsk=1,2,…
    – [ ] puk+1=arg⁡min⁡puJ(puk,qik)p_u^{k+1} = \arg \min_{p_u} J(p_u^k, q_i^k)puk+1​=argminpu​​J(puk​,qik​)
    – [ ] qik+1=arg⁡min⁡qiJ(puk+1,qik)q_i^{k+1} = \arg \min_{q_i} J(p_u^{k+1}, q_i^k)qik+1​=argminqi​​J(puk+1​,qik​)

固定qiq_iqi​的值,对pup_upu​进行搜索:
12∂J∂pu=∑icui(puTqi−fui)qi+λpu=∑icui(qiTpu−fui)qi+λpu=QTCuQpu−QTCuf(u)+λpu\begin{aligned} \frac{1}{2} \frac{\partial J}{\partial p_{u}} &=\sum_{i} c_{u i}\left(p_{u}^{T} q_{i}-f_{u i}\right) q_{i}+\lambda p_{u} \\ &=\sum_{i} c_{u i}\left(q_{i}^{T} p_{u}-f_{u i}\right) q_{i}+\lambda p_{u} \\ &=Q^{T} C^{u} Q p_{u}-Q^{T} C^{u} f(u)+\lambda p_{u} \end{aligned} 21​∂pu​∂J​​=i∑​cui​(puT​qi​−fui​)qi​+λpu​=i∑​cui​(qiT​pu​−fui​)qi​+λpu​=QTCuQpu​−QTCuf(u)+λpu​​
得到:
pu=(QTCuQ+λI)−1QTCuf(u)p_{u}=\left(Q^{T} C^{u} Q+\lambda I\right)^{-1} Q^{T} C^{u} f(u) pu​=(QTCuQ+λI)−1QTCuf(u)
同理可得:
12∂J∂qi=∑u[cui(puTqi−fui)]pu+λqi\begin{aligned} \frac{1}{2}\frac{\partial J}{\partial {q}_{i}}&= \sum_{u}\left[c_{u i}\left({p}_{u}^{T}{q}_{i}- f_{u i}\right)\right] {p}_{u}+ \lambda {q}_{i} \end{aligned} 21​∂qi​∂J​​=u∑​[cui​(puT​qi​−fui​)]pu​+λqi​​
qi=(PTCiP+λI)−1PTCif(i)q_{i}=\left(P^{T} C^{i} P+\lambda I\right)^{-1} P^{T} C^{i} f(i) qi​=(PTCiP+λI)−1PTCif(i)

9.2 Federated collaborative filtering for privacy-preserving presonalized recommendation system

9.2.1 分析

联邦学习的思想是“数据不出本地”,现在对之前的计算进行分析:

  • 用户uuu利用自己的数据,就可以实现pup_upu​的更新;
  • 对qiq_iqi​的更新需要用到所有用户的个人数据,需要将数据整合到一起,但是这与联邦学习的定义不符。

文章采用梯度下降的方法对qi{q}_{i}qi​进行更新:
qi=qi−γ∂J∂qi\begin{aligned} {q}_{i}&={q}_{i}-\gamma \frac{\partial J}{\partial {q}_{i}} \end{aligned} qi​​=qi​−γ∂qi​∂J​​
用户只用自己的个人数据就可以求出部分梯度,最终将所有人求出的梯度进行整合即可。

与ALS相比:

  • ALS可以一步到位直接到达参数qiq_iqi​的较小值点
  • 梯度下降需要迭代多次才能到达一个较小值点
  • 梯度下降可以在用户本地进行,最终只需要将所有用户的梯度整合一下取平均即可

9.2.2 步骤

联邦学习范式中的协同过滤。 主模型 YYY(项目-因素矩阵,有时候也用QQQ,或者VVV,不同文献使用的符号系统不同,为了和图片一致,我这里依然采用YYY)在服务器上更新,然后分发到客户端。 每个特定于用户的模型 XXX(用户-因素矩阵,有时候也用PPP,或者UUU,不同文献使用的符号系统不同,为了和图片一致,我这里依然采用XXX)保留在本地客户端上,并使用本地用户数据和来自服务器的 YYY 在客户端上进行更新。 通过 YYY 的梯度的更新在每个客户端上计算并传输到服务器,在那里它们被聚合以更新主模型 YYY。

  • 所有项目因子向量 yiy_iyi​ , i=1,…,Mi = 1, \dots, Mi=1,…,M 在服务器上更新,然后分发给每个客户端 uuu。
  • 用户因子向量 xux_uxu​, u∈1,...,Nu \in {1, . . . , N}u∈1,...,N 在客户端 uuu 上本地更新,使用用户 uuu 自己的数据和 yiy_iyi​, i=1,…,Mi = 1, \dots, Mi=1,…,M来自服务器。
  • 通过梯度 δyuiδy_{ui}δyui​ 的更新是针对每个客户端 uuu 上的项目 tit_iti​ 计算的,并传输到服务器,在那里梯度被聚合以更新 yiy_iyi​。 这与现有的联邦学习架构形成对比,其中客户端直接计算参数 yuiy_{ui}yui​ 的更新,然后在服务器上聚合以更新主模型。

    以下公式是从论文中摘录下来的:

    符号说明:
    p(u)p(u)p(u)就是前文的f(u)f(u)f(u):表示用户的购买记录;


    符号说明:
    puip_{ui}pui​就是前文的fuif_{ui}fui​:表示用户是否具有该无偏偏好;

推荐系统--联邦学习下的矩阵分解(6)相关推荐

  1. 推荐系统组队学习03、矩阵分解

    矩阵分解 矩阵分解 矩阵分解算法的原理 **矩阵分解算法的求解** Basic SVD 编程实现 补充 协同过滤算法: 特点: 仅利用了用户与物品的交互信息就可以实现推荐,是一个可解释性很强, 非常直 ...

  2. 矩阵sum_推荐系统——从协同过滤到矩阵分解

    本文简单扼要地介绍推荐算法中的两种经典算法:协同过滤和矩阵分解.内容有以下三部分 协同过滤算法 矩阵分解 协同过滤与矩阵分解的关系 早期的推荐系统以业务理解为核心,通过复杂的规则描述来向用户推荐商品, ...

  3. 【BI学习心得05-SVD矩阵分解与基于内容的推荐】

    内容目录 写在前面的话 1.矩阵的几种分解方式 1.1共轭转置 Conjugate transpose 1.2Hermitian 1.3正定 positive definite 1.4正交矩阵 ort ...

  4. 矩阵分解java_推荐系统基础:使用PyTorch进行矩阵分解进行动漫的推荐

    我们一天会遇到很多次推荐--当我们决定在Netflix/Youtube上看什么,购物网站上的商品推荐,Spotify上的歌曲推荐,Instagram上的朋友推荐,LinkedIn上的工作推荐--列表还 ...

  5. 矩阵奇异值分解特征值分解_推荐系统中的奇异值分解与矩阵分解

    矩阵奇异值分解特征值分解 Recently, after watching the Recommender Systems class of Prof. Andrew Ng's Machine Lea ...

  6. 横向联邦学习下隐私保护安全聚合:问题,方法,与展望

    开放隐私计算 以下文章来源于隐私计算研习社 ,作者董业 隐私计算研习社. 开放隐私计算社区 本文总结面向横向联邦学习的主要安全聚合技术路线和经典方法,对各条技术路线所处理的问题和经典方法的核心思想做一 ...

  7. python实现lfm_推荐系统召回算法之——LFM(矩阵分解)

    目录 1.LFM算法原理 2.LFM数学原理 3.应用场景 4.python实现 5.总结 算法原理:LFM(later factor model)是一种基于矩阵分解的召回算法,输入UI点展矩阵,输出 ...

  8. 联邦学习怎样应用在推荐系统中?

    来源:知乎丨羊老头 说起联邦学习,大家再熟悉不过了,由于其能在数据不移动的前提下协同训练一个全局共享的模型,迅速成为了人工智能安全领域的一个研究热点.推荐系统作为人工智能领域最振奋人心的应用之一,与联 ...

  9. 基于联邦学习的推荐系统综述

    基于联邦学习的推荐系统综述 参考文献 基于联邦学习的推荐系统综述 Federated Recommendation Systems Journal-CN-SSI-22-Survey-Slides (作 ...

最新文章

  1. python的none是什么-Python中的None与Null(空字符)的区别
  2. 如何在windows7上安装启明星系统。
  3. Java正則表達式詳解
  4. hdu 6168 Numbers
  5. PL/SQL详细介绍
  6. java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more
  7. qpython获取手机gps_基于Python获取照片的GPS位置信息
  8. 一个软件系统哪些可独立实现
  9. Linux下创建Django项目并访问
  10. 移植busybox构建最小根文件系统
  11. selenium模拟点击的几种方法探讨
  12. Dlib-人脸识别API说明
  13. 图解安装simsun字体后OO乱码的摸黑解决办法【转贴自http://linux.hiweed.com】
  14. 智能化系统之门禁系统
  15. 如果你热爱编码,就应该少写代码
  16. Tungsten Fabric中文社区介绍
  17. matlab图像自动标注程序,基于MATLAB/GUI的图像语义自动标注系统
  18. 【Romance of the Three Kingdoms】
  19. 019动物识别检测网页版
  20. 今天凌晨,AWS一口气又双叒叕发布了N个新服务

热门文章

  1. 计算机英语audios啥意思,2020考研英语词汇:audio是什么意思
  2. c语言查看进程模块,计算机二级考试C语言辅导:进程模块查看
  3. c语言双链表排序交换节点_图解:单链表翻转的三种方式!
  4. 解决:如何在Android Studio中找出自己项目文件的所在位置
  5. click事件在什么时候出发_剖析setTimeout和click点击事件的触发顺序
  6. 编程加速服务器_FPGA加速驱动新时代的数据洪流,下篇
  7. 为什么代码正确却没有爬虫的信息_为什么敷面膜没有效果?原来这才是敷面膜的正确步骤...
  8. 快速了解Java集合框架
  9. python有趣的简单代码_简单几步,100行代码用Python画一个蝙蝠侠的logo
  10. c语言入门经典18个程序