一种基于隐私保护的多社交平台用户推荐方法和系统
技术领域
本发明涉及多社交平台用户推荐
技术领域
,特别是涉及一种基于隐私保护的多社交平台用户推荐方法和系统。背景技术
QQ、微信、微博、钉钉等互联网社交平台的出现给人们日常的交流带来了巨大的便利,不同的社交平台又给与了用户不一样的社交需求,因此同一个用户往往会在不同的社交平台中拥有自己的账号。由于社交平台越来越多,而人们的日常交友圈又存在于不同的社交平台中比较分散,如何使一个社交平台中的用户获得自身在其他平台的好友推荐,或是如何让社交平台用户认识更多趣味相投的朋友等问题,都成为了当前在社交平台中关心的问题。
目前各个社交平台的用户推荐方法有基于自身的数据进行用户推荐(比较两人的相同好友数目)例如QQ中的可能认识的朋友;有基于用户地理位置的信息的推荐例如QQ、微信中附近的朋友;有基于通讯录信息的好友推荐;有随机的在线推荐方法例如微信中的摇一摇等。但是目前现有的这些推荐的方法都会因为单个平台可能数据量较少或是信息较为单一难以进行较准确的用户推荐。多个社交平台又因为需要保护用户隐私和商业机密的原因难以进行数据的整合训练,从而无法获得更好的效果。因此,提供一种基于隐私保护的多社交平台用户推荐方法和系统显得尤为必要。
发明内容
本发明要解决现有技术中存在的上述技术问题,提供一种基于隐私保护的多社交平台用户推荐方法和系统。
本发明能够有效提高自身平台内的用户推荐准确率,并保护了各个平台的用户数据隐私。
为实现上述目的,本发明提供了如下方案:本发明提供一种基于隐私保护的多社交平台用户推荐方法,包括:
步骤1.各参与方客户端本地整合初始数据,并获取由服务端初始化后的训练模型以及初始化后的密钥;
步骤2.各参与方客户端基于自身设定的目标精度,采用本地整合的初始数据对所述训练模型进行训练,并将训练后得到的训练参数加密后发送至服务端;
步骤3.各参与方客户端基于所有参与方客户端训练参数的聚合结果对所述训练模型进行更新,并计算更新后的训练模型是否达到自身设定的目标精度,未达到,则重复执行上一步,达到,则执行下一步;其中,所有参与方客户端训练参数的聚合结果由服务端解密并聚合得到;
步骤4.各参与方客户端利用训练后的模型更新自身平台内所有社交用户的标签向量,并对标签向量相似的社交用户进行相互推荐。
优选地,步骤1中各参与方客户端本地整合的初始数据包括:社交用户账户ID、社交用户关系信息、社交用户特征、社交用户标签。
优选地,步骤1中各参与方客户端本地整合初始数据的方法包括:
步骤1.1构建邻接矩阵:将社交用户作为节点,社交用户关系作为连边构建每个社交平台自身的社交网络;基于所构建的社交网络,得到网络的邻接矩阵;
步骤1.2构建特征矩阵:对所有的社交用户特征进行编号,将社交用户特征编号作为列号,社交用户账户ID作为行号建立特征矩阵;
步骤1.3构建标签矩阵:对所有的社交用户标签进行编号,基于社交用户标签的编号构建社交用户的标签矩阵。
优选地,步骤2中各参与方客户端对所述训练模型进行训练的方法包括:
各参与方客户端将本地整合初始数据得到的特征矩阵H和邻接矩阵A输入所述训练模型,输出预测的标签矩阵L′。
L′=AH′ (1)
H′={h′1,h′2,...,h′i,..,h′n}T (2)
其中,W∈Rf×y和w∈R1×2y为可训练的权重矩阵,LeakyRelu()为激活函数,||为矩阵拼接操作,Ni为节点i的一阶邻居节点的集合,αij表示节点j对节点i的重要性指标,hi、hj、hk分别为节点i、节点j、节点k的特征向量,H′为重构后的特征矩阵,h′i为节点i的重构特征向量,n为单个平台的用户总数;
计算预测的标签矩阵L′与本地整合初始数据得到的标签矩阵L的交叉熵,并通过最小化交叉熵的方式迭代更新本地的权重矩阵W和w。
优选地,步骤1中初始化密钥的方法包括:
S1.生成两个质数p和q,并计算两者的积b=p*q和欧拉函数值m=(p-1)(q-1);
S2.生成公钥e,其中,e和m互质且1<e<m;
S3.生成私钥d,其中,e*d/m的余数为1;
S4.对训练参数加密的方法包括:
S5.获取待加密数字a,密文c为ae/b的余数;
对训练参数解密的方法包括:
获取密文c,解密后的数字a为cd/b的余数。
优选地,步骤3中对所有参与方客户端的训练参数进行聚合如下式所示:
其中,W′和w′为更新后的权重矩阵,z为参与训练的客户端数量,Wt和wt为第t个参与方客户端的权重矩阵。
优选地,步骤4对标签向量相似的社交用户进行相互推荐的过程中,若两个社交用户的标签向量的差异指数小于预设阈值,则通过参与方客户端进行相互推荐,两个社交用户的标签向量的差异指数如下式所示:
其中,y为所有社交平台用户标签的总数,l1s、l2s分别为第一个社交用户、第二个社交用户的标签向量中第s个元素的值。
本发明还提供一种基于隐私保护的多社交平台用户推荐系统,包括:若干个参与方客户端、服务端;每个所述参与方客户端包括:预处理模块、训练模块、第一加密模块、输出模块;所述服务端包括:初始化模块、第二加密模块、聚合模块;
所述预处理模块本地整合初始数据,输入为本地原始数据,向训练模块输出邻接矩阵、特征矩阵、标签矩阵;
所述初始化模块对训练模型进行初始化,并分配到各参与方客户端的训练模块和服务端的第二加密模块;
所述训练模块基于自身设定的目标精度,输入预处理模块本地整合的初始数据所有参与方客户端训练参数的聚合结果,对训练模型进行训练,还基于所有参与方客户端训练参数的聚合结果对所述训练模型进行更新,并计算更新后的训练模型是否达到自身设定的目标精度,若满足精度要求后输出训练后的标签矩阵到输出模块;
所述第一加密模块对所述参与方客户端训练后得到的训练参数进行加密,从训练模块输入训练后的参数明文,向第二加密模块输出加密后的参数密文;
所述第二加密模块对接收到的加密的训练参数进行解密,从参与方客户端的第一加密模块输入加密后的参数密文,并从初始化模块输入密钥,向聚合模块输出解密后的参数明文;
所述聚合模块用于对各参与方客户端所发送的训练参数进行聚合处理,从第二加密模块输入解密后的参数明文,向参与方客户端的训练模块输出聚合后的参数;
所述输出模块基于训练后的模型更新自身平台内所有社交用户的标签向量,并对标签向量相似的社交用户进行相互推荐,从训练模块输入训练后的标签矩阵,输出用户推荐结果。
本发明的优点是:
本发明通过构建社交网络,将社交网络数据集和用户特征数据通过矩阵的形式对模型进行训练,提高了本地模型的训练效果;各参与平台通过共享模型而不共享数据的方式共同训练,且共享的训练参数通过加密的方式进行聚合,既提高了自身平台内的用户推荐准确率,也保护了各个平台的用户数据隐私。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明方法的流程图;
图2是本发明系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1所示,本实施例提供一种基于隐私保护的多社交平台用户推荐方法,包括:
T1、通过参与方客户端本地整合初始数据,并通过服务端初始化训练模型和密钥并分配给各个参与方客户端。
所述参与方客户端是指参与用户联合推荐的社交平台自身提供的计算设备,本地的初始数据是指各社交平台自身的数据,包括社交用户账户ID(每个平台可以不同,但单个平台内需唯一)、社交用户关系信息(根据社交平台不同,关系信息可以为朋友、关注、点赞等)、社交用户特征(根据不同的平台社交用户特征可以为爱好、浏览内容类别、次数、活跃时间段等)、社交用户标签(根据不同社交平台的特点,将社交用户打上的标签,例如电影爱好者、户外运动、吃货等)。
各参与方客户端本地整合初始数据具体包括如下步骤:
构建邻接矩阵:将社交用户作为节点,社交用户关系作为连边构建每个社交平台自身的社交网络;基于所构建的社交网络,得到网络的邻接矩阵记作A(矩阵A中的元素为0和1,0表示行列所对应的两个社交用户之间无直接关系,1表示行列所对应的两个社交用户之间存在着社交用户关系)。
构建特征矩阵:根据社交用户的特征将所有的特征进行编号1-f,f为所有社交平台社交用户特征的总数。将社交用户特征编号作为列号,用户账户ID作为行号建立特征矩阵H,H={h1,h2,...,hi,..,hn}T,hi为第i个社交用户的特征向量,n为单个平台的用户总数(矩阵H中的元素为0和1,0表示行列所对应的社交用户无该种特征,1表示行列所对应的社交用户有该种特征)。
构建标签矩阵:将所有的标签进行编号1-y,y为所有社交平台用户标签的总数,根据社交用户标签的编号构建社交用户的标签矩阵L,L={l1,l2,...,li,..,ln}T,li为第i个用户的标签向量(矩阵L中的元素为0和1,0表示此社交用户无该种标签,1表示此社交用户有该种标签)。
在构建用户标签向量后,各社交平台按一定比例抽取一部分社交用户分成训练集、验证集和测试集,本实施例中,训练集、验证集和测试集的比例为1:2:7,也可以有所不同,选取的部分用户以标签向量中的值不全为0的优先,选取的数量不做限制。
所述服务端为一台或多台由参与方或第三方提供的计算设备。所述初始化模型为给模型训练用到的权重矩阵随机赋予初值,并为接下来的加密过程生成加密所需的参数。服务端发送给各参与方客户端的内容为初始化参数后的训练模型和公钥e和b。
T2、各参与方客户端基于自身设定的目标精度,采用本地整合的初始数据对所述训练模型进行训练,并将训练后得到的训练参数加密后发送至服务端。
其中,自身设定的目标精度是指各社交平台希望根据联合训练达到的测试集分类准确率ac。
对所述训练模型进行训练的过程如下:
输入平台自身的特征矩阵H和邻接矩阵A,输出预测的标签矩阵L′。
L′=AH′ (1)
H′={h′1,h′2,...,h′i,..,h′n}T (2)
其中,W∈Rf×y和w∈R1×2y为可训练的权重矩阵,LeakyRelu()为激活函数,||为矩阵拼接操作,Ni为节点i的一阶邻居节点的集合,αij表示节点j对节点i的重要性指标,hj为节点j的特征向量,H′为重构后的特征矩阵,h′i为节点i的重构特征向量。
计算得到预测的标签矩阵L′后,计算其与标签矩阵L的交叉熵,并通过最小化交叉熵的方式迭代更新本地的权重矩阵W和w。
所述的密钥初始化、加密、解密方法如下:
密钥初始化过程:服务端生成两个质数p和q(一般为1024位),并计算两者的积b=p*q和其欧拉函数值m=(p-1)(q-1),生成公钥e,并使得e和m互质且1<e<m,生成私钥d,并使得e*d/m的余数为1。
加密过程如下:获取待加密数字a,密文c为ae/b的余数。
解密方法如下:获取密文c,解密后的数字a为cd/b的余数。
T3、通过服务端解密并聚合收集到的加密训练参数,将训练参数的聚合结果返回至所有参与方客户端。
聚合方法如下式所示:
其中,W′和w′为更新后的权重矩阵,z为参与训练的客户端数量,Wt和wt为第t个参与方客户端的权重矩阵。
各参与方客户端基于训练参数的聚合结果对所述训练模型进行更新,并计算更新后的训练模型是否达到自身设定的目标精度,未达到,则重复执行步骤T2,达到,则执行步骤T4。
T4、结束训练,各参与方客户端利用训练后的模型更新自身平台内所有社交用户的标签向量,并对标签向量相似的社交用户进行相互推荐。
所述的标签向量相似是指差异指数Er小于预设阈值的两个向量,本实施例中,Er的预设阈值取0.2
其中,y为所有社交平台用户标签的总数,l1s、l2s分别为第一个社交用户、第二个社交用户的标签向量中第s个元素的值。
参照图2所示,本实施例还提供一种基于隐私保护的多社交平台用户推荐系统,包括若干个参与方客户端、服务端;每个所述参与方客户端包括预处理模块、训练模块、第一加密模块、输出模块;所述服务端包括初始化模块、第二加密模块、聚合模块;
其中,所述预处理模块、训练模块、第一加密模块依次连接,所述训练模块与所述输出模块连接;所述初始化模块、第二加密模块、聚合模块依次连接;所述初始化模块、聚合模块分别与所述训练模块连接,所述第一加密模块与所述第二加密模块连接。
所述预处理模块用于本地整合初始数据,具体为:该社交平台构建自身的社交网络,并获得输入的邻接矩阵、特征矩阵和标签矩阵。
所述初始化模块对训练模型和密钥进行初始化,并输出到各参与方客户端的训练模块和服务端的第二加密模块;
所述训练模块基于自身设定的目标精度,采用本地整合的初始数据对训练模型进行训练,还用于基于所有参与方客户端训练参数的聚合结果对所述训练模型进行更新,并计算更新后的训练模型是否达到自身设定的目标精度。对所述训练模型进行训练的过程如下:
输入平台自身的特征矩阵H和邻接矩阵A,输出预测的标签矩阵L′。
L′=AH′ (1)
H′={h′1,h′2,...,h′i,..,h′n}T (2)
其中,W∈Rf×y和w∈R1×2y为可训练的权重矩阵,LeakyRelu()为激活函数,||为矩阵拼接操作,Ni为节点i的一阶邻居节点的集合,αij表示节点j对节点i的重要性指标,hj为第j个社交用户的特征向量,H′为重构后的特征矩阵,h′i为节点i的重构特征向量。
计算得到预测的标签矩阵L′后,计算其与标签矩阵L的交叉熵,并通过最小化交叉熵的方式迭代更新本地的权重矩阵W和w。
所述第一加密模块用于对所述参与方客户端训练后得到的训练参数进行加密。
所述第二加密模块对接收到的加密的训练参数进行解密,从参与方客户端的第一加密模块输入加密后的参数密文,并从初始化模块输入密钥,向聚合模块输出解密后的参数明文;
所述聚合模块用于对各个参与方客户端的训练参数进行聚合,并将聚合结果返回至各参与方客户端。聚合方法如下式所示:
其中,W′和w′为更新后的权重矩阵,z为参与训练的客户端数量,Wt和wt为第t个参与方客户端的权重矩阵。
所述输出模块基于训练后的模型更新自身平台内所有社交用户的标签向量,并对标签向量相似的社交用户进行相互推荐。所述的标签向量相似是指差异指数Er小于设定值的两个向量,本实施例中,Er的设定值取0.2
其中,y为所有社交平台用户标签的总数,l1s、l2s分别为第一个、第二个标签向量中第s个元素的值。
第一加密模块、第二加密模块中,密钥初始化、加密、解密方法如下:
密钥初始化过程:服务端生成两个质数p和q(一般为1024位),并计算两者的积b=p*q和其欧拉函数值m=(p-1)(q-1),生成公钥e,并使得e和m互质且1<e<m,生成私钥d,并使得e*d/m的余数为1。
加密过程如下:获取待加密数字a,密文c为ae/b的余数。
解密方法如下:获取密文c,解密后的数字a为cd/b的余数。
以上所述的实施例仅是对本发明的优选方式进行描述,并非对本发明的范围进行限定,在不脱离本发明设计精神的前提下,本领域普通技术人员对本发明的技术方案做出的各种变形和改进,均应落入本发明权利要求书确定的保护范围内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:基于去中心化图神经网络的社交推荐方法