1.基于同态加密的矩阵分解推荐方法,其特征是,包括步骤如下:步骤1、服务器使用符合正态分布的随机变量生成项目特征矩阵,并将该项目特征矩阵0
发送给每个用户,作为初始的项目特征矩阵V ;同时,每个用户使用符合正态分布的随机变0
量生成每个用户的特征,作为初始的用户特征ui;
步骤2、令迭代次数t=1;
t‑1 t‑1
步骤3、每个用户基于上一迭代的项目特征矩阵V 和上一迭代的用户特征ui ,计算该用户的用户特征梯度和该用户关于各个项目的项目特征梯度;
步骤4、每个用户生成一个随机明文,并使用统一的加密函数对该随机明文加密后形成随机密文,发送到服务器;
步骤5、服务器随机选取2个用户所发送来的随机密文进行相加后,形成噪声密文,并将该噪声密文的正值发送给这2个用户 中 的其中一个用户,而将该噪声密文的负值发送给这2个用户中 的另一个用户;
步骤6、用户收到服务器发送回来的噪声密文的正值或负值,并对其进行解密后形成噪声,并利用该噪声对该用户关于敏感项目的项目特征梯度进行加噪;
步骤7、服务器使用符合高斯分布的随机变量生成随机矩阵,并将发送给每个用户;
步骤8、每个用户利用服务器发来的随机矩阵对所有项目特征梯度进行降维后,发送到服务器进行聚合,求得所有降维后的项目特征梯度的项目梯度均值;
步骤9、服务器将项目梯度均值发送给每个用户,每个用户利用随机矩阵的逆矩阵将项t目梯度均值恢复到原始的维度后,并据此得到当前迭代的项目特征矩阵V和当前迭代的用t户特征ui;
t t
步骤10、每个用户计算当前迭代的项目特征矩阵V和当前迭代的用户特征ui的内积所对应的损失函数,并发送给服务器;
步骤11、服务器判断所有用户损失函数之和是否小于预设损失值或迭代次数是否达到预设迭代次数;
如果满足,则迭代终止,此时每个用户计算该用户的预测评分矩阵Mi,并将评分矩阵Mi中选出k个最高的预测评分所对应的项目推荐给该用户;其中k为设定值;
否则,迭代次数t+1,并返回步骤3,继续迭代。
2.根据权利要求1所述的基于同态加密的矩阵分解推荐方法,其特征是,步骤3中,第i个用户的用户特征梯度 为:t‑1 t‑1
式中,rij表示第i个用户对第j个项目的评分,vj 表示上一次迭代的项目特征矩阵Vt‑1的第j列,ui 表示第i个用户上一次迭代的用户特征,j=1,2,…,m,m为项目个数;i=1,
2,…,n,n为用户个数,t表示迭代次数。
3.根据权利要求1所述的基于同态加密的矩阵分解推荐方法,其特征是,步骤3中,第i个用户对第j个项目的项目特征梯度 为:t‑1 t‑1
式中,rij表示第i个用户对第j个项目的评分,vj 表示上一次迭代的项目特征矩阵Vt‑1的第j列,ui 表示第i个用户上一次迭代的用户特征,j=1,2,…,m,m为项目个数;i=1,
2,…,n,n为用户个数,t表示迭代次数。
4.根据权利要求1所述的基于同态加密的矩阵分解推荐方法,其特征是,步骤4中,随机明文的取值范围为[‑1,1]。
5.根据权利要求1所述的基于同态加密的矩阵分解推荐方法,其特征是,步骤4中,所有用户所采用的加密函数相同。
6.根据权利要求1所述的基于同态加密的矩阵分解推荐方法,其特征是,步骤5和6中,当用户数量为奇数时,最后一个用户的随机密文需要与之前已被选择过的用户的随机密文进行相加后,形成噪声密文,并分别将噪声密文的正值和负值分别发给最后一个用户和之前已被选择过的用户;
此时,最后一个用户利用解密所得到的噪声对该用户关于敏感项目的当前项目特征梯度进行加噪,而之前已被选择过的用户需要利用解密所得到的噪声对该用户关于敏感项目的当前项目特征梯度进行再次加噪。
7.根据权利要求1所述的基于同态加密的矩阵分解推荐方法,其特征是,步骤9中,t当前迭代的项目特征矩阵V为:
t
当前迭代的用户特征ui为:
式中, 表示第i个用户对第j个项目的项目特征梯度, 表示第i个用户的用户特t‑1 t‑1征梯度,V 表示上一次迭代的项目特征矩阵,ui 表示第i个用户上一次迭代的用户特征,t表示迭代次数。
8.根据权利要求1所述的基于同态加密的矩阵分解推荐方法,其特征是,步骤11中,用户i的预测评分矩阵Mi为:t t
Mi=ui×V
t t
式中,V表示当前迭代的项目特征矩阵,ui表示第i个用户当前迭代的用户特征,t表示迭代次数。