阅读笔记联邦学习实战——联邦个性化推荐案例

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阅读笔记联邦学习实战——联邦个性化推荐案例相关的知识,希望对你有一定的参考价值。

联邦学习实战——联邦个性化推荐案例

前言

FATE是微众银行开发的联邦学习平台,是全球首个工业级的联邦学习开源框架,在github上拥有4000stars,可谓是相当有名气的,该平台为联邦学习提供了完整的生态和社区支持,为联邦学习初学者提供了很好的环境,否则利用python从零开发,那将会是一件非常痛苦的事情。本篇博客内容涉及《联邦学习实战》第九章内容,使用的fate版本为1.6.0,fate的安装已经在这篇博客中介绍,有需要的朋友可以点击查阅。下面就让我们开始吧。


1. 引言

个性化推荐已经广泛应用于人们生活的方方面面,比如短视频推荐、新闻推荐、商品推荐等,如何准确推荐、精准营销成了推荐算法的关键。为了更好推荐,推荐系统一般会收集海量的用户数据,这样才能对用户和推荐内容了解更全面和深入。
但是收集数据就涉及到了用户数据的隐私安全问题,随着用户的重视和相关法律法规的完善,如何在合法的前提下,使用割裂的数据持续优化模型,是推荐系统亟待解决的任务。本章从实际出发,列举几种常见的推荐算法及其实现。

2. 传统的集中式个性化推荐

集中式推荐算法流程都是收集用户的行为数据,统一上传到服务端,然后利用常见的推荐算法进行集中训练,最后将训练结果模型部署到线上。流程如下:

2.1 矩阵分解

简称MF,是最常使用的推荐算法之一。用户与物品之间交互方式多样,评分、点击、购买、收藏都体现人与物之间的交互,把用户对物品的反馈用一个矩阵r表示,这个矩阵也称为评分矩阵。通常这个矩阵由于用户关注的商品少,所以也是稀疏矩阵,即大部分元素都是0,这也导致了矩阵分解不能很好进行,如SVD分解。
为了应对稀疏性问题,基于隐向量的矩阵分解方法应运而生。如下图所示:

设矩阵R的维度为m×n,矩阵P的维度为m×k,矩阵Q的维度为k×n,k表示隐向量的长度,通常比较小的数,m是用户数量,n是物品的数量,通过矩阵分解,将评分矩阵压缩成两个小矩阵,分别称为用户隐向量矩阵物品隐向量矩阵
MF算法的核心是通过优化下式来填充和预测缺失的评分值:
m i n p , q ∑ ( i , j ) ( r i , j − < p i , q j > ) 2 + λ ∥ p ∥ 2 2 + μ ∥ q ∥ 2 2 min_p,q\\sum_(i,j)(r_i,j-<p_i,q_j>)^2+\\lambda \\left\\|p \\right\\|_2^2+\\mu \\left\\|q \\right\\|_2^2 minp,q(i,j)(ri,j<pi,qj>)2+λp22+μq22

其中, r i , j r_i,j ri,j代表原始评分矩阵中用户i对物品j的非0值评分, p i , q j p_i,q_j pi,qj分别代表用户和物品的隐向量,上式优化的目标是使得用户i的隐向量和物品j的隐向量之间的点积值,与评分矩阵中用户i对物品j的实际评分尽量接近。在推断预测阶段,要得到任意一个用户i与物品j的评分值,我们只需要求取用户i与物品j的隐向量点积值 < p i , q j > <p_i,q_j> <pi,qj>即可。

2.2 因子分解机

将推荐问题归结为回归问题。传统的线性模型如线性回归,因其模型简单,所以在工业界备受推崇,但是线性模型不能捕获非线性信息,这是特征之间相互作用造成的。这种相互作用就是特征工程中常用的交叉特征,比如年龄和性别的交叉特征。
一直以来通过人为方式构造的交叉特征非常耗时,因此FM算法通过在线性模型中加入二阶信息,为自动构建和寻找交叉特征提供了一种可行的方案,FM模型如下所示,其中最后项 x i x j x_ix_j xixj,就是指任意两个特征 x i x_i xi x j x_j xj的交叉特征。

y = w 0 + ∑ i = 1 n w i x i + ∑ 0 < i < j ⩽ n w i , j x i x j . y=w_0+\\sum_i=1^nw_ix_i+\\sum_0<i<j\\leqslant nw_i,jx_ix_j. y=w0+i=1nwixi+0<i<jnwi,jxixj.

但是上式最大的问题是参数数量太大,一方面学习需要大量训练样本,二是稀疏性特点,二阶特征组合会更加稀疏,对二阶交叉稀疏 w i , j w_i,j wi,j的学习很不理想。
FM算法利用向量化思想来优化。为每一个特征值 x i x_i xi学习大小为k维的特征向量 v i v_i vi,将上式中二阶项权重参数 w i , j w_i,j wi,j看成特征 x i x_i xi与特征 x j x_j xj对应的特征向量的点积,即满足 w i , j = < v i , v j > w_i,j=<v_i,v_j> wi,j=<vi,vj>,带入上式得:

y = w 0 + ∑ i = 1 n w i x i + ∑ 0 < i < j ⩽ n < v i , v j > x i x j . y=w_0+\\sum_i=1^nw_ix_i+\\sum_0<i<j\\leqslant n<v_i,v_j>x_ix_j. y=w0+i=1nwixi+0<i<jn<vi,vj>xixj.

这样做的好处是:

  • 二阶项权重参数数量大大减少。参数量由原来的n(n-1)/2下降到nk。
  • 每个特征 x i x_i xi对应的特征向量为 v i v_i vi,是一个k维的稠密向量,因此即使在训练样本中两个特征 x i x_i xi x j x_j xj没同时出现,它们交叉特征对应的权重值 < v i , v j > <v_i,v_j> <vi,vj>也不为0,泛化能力强。

当前的个性化推荐系统设计,通常是以一家公司为独立单位进行的,如果能联合用户在不同公司的行为数据,将大大提高推荐的质量。为此使用联邦学习技术,一方面保证用户数据不被泄露,另一方面提升推荐质量。

3. 联邦矩阵分解

本节讨论跨公司联邦推荐问题。在该场景下,公司A以书籍为内容进行推荐,公司B以电影为内容进行推荐,根据协同过滤思想,具有相同观影爱好的用户会有相同的阅读爱好,如果能过在不泄露用户隐私的前提下,联合多方数据进行训练,将会明显提升推荐效果。

3.1 算法详解

公司A和B用户群体高度重合,但产品不同,适用于纵向联邦学习场景。在该场景下,多机构之间的推荐系统目标函数就变为下式:
m i n p , q ∑ ( i , j ) ∈ K A ( r i , j A − < p i , q j A > ) 2 + ∑ ( i , j ) ∈ K B ( r i , j B − < p i , q j B > ) 2 + λ ∥ p ∥ 2 2 + μ ( ∥ q A ∥ 2 2 + ∥ q B ∥ 2 2 ) min_p,q\\sum_(i,j)\\in K_A(r_i,j^A-<p_i,q_j^A>)^2+\\sum_(i,j)\\in K_B(r_i,j^B-<p_i,q_j^B>)^2+\\lambda \\left\\|p \\right\\|_2^2+\\mu (\\left\\|q^A \\right\\|_2^2+\\left\\|q^B \\right\\|_2^2) minp,q(i,j)K以上是关于阅读笔记联邦学习实战——联邦个性化推荐案例的主要内容,如果未能解决你的问题,请参考以下文章

阅读笔记联邦学习实战——联邦学习医疗健康应用案例

阅读笔记联邦学习实战——联邦学习智能用工案例

阅读笔记联邦学习实战——联邦学习在智能物联网中的应用案例

阅读笔记联邦学习实战——联邦学习攻防实战

阅读笔记联邦学习实战——用Python从零实现横向联邦图像分类

阅读笔记联邦学习实战——构建公平的大数据交易市场