一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于隐私保护的聚类方法及装置与流程

2022-09-03 13:44:00 来源:中国专利 TAG:


1.本说明书涉及隐私保护技术领域,尤其涉及一种基于隐私保护的聚类方法及装置。


背景技术:

2.k-means聚类已广泛用于文档聚类、目标营销、图像分割、用户分类和特征学习等许多应用中,然而,目前对于数据隐私问题的关注,数据孤岛的情况已经成为一个严重的问题,例如在用户分类应用场景中,银行持有用户的资产、信贷等数据,电商平台持有用户的消费数据,在该场景下,其两方联合进行聚类时,一方将其持有的数据发送至另一方,另一方基于所有对方的数据与己方的数据联合聚类,该过程中,任何一方将其持有的数据发送至对方,均会造成己方数据的暴露。目前,越来越严格的隐私保护规定阻碍了多个数据拥有方之间的数据共享,那么,如何提供一种在基于隐私保护的多方联合数据聚类的方法成为亟待解决的问题。


技术实现要素:

3.本说明书一个或多个实施例提供了一种基于隐私保护的多方联合数据聚类的方法及装置,以实现多个数据拥有方在保护己方隐私数据的前提下完成数据聚类。
4.根据第一方面,提供一种基于隐私保护的多方联合数据聚类的方法,涉及第一方和第二方,所述第一方和第二方分别持有第一特征矩阵和第二特征矩阵,第一和第二特征矩阵用于构成待聚类的所有样本对象的总特征矩阵;所述方法通过第一方执行,包括多轮迭代,其中任意一轮迭代包括:
5.基于第一特征矩阵及当前质心矩阵的第一质心分片,与第二方执行基于安全矩阵乘法的第一多方安全计算,得到距离矩阵的第一距离分片,所述距离矩阵表征所有样本对象与各类簇的当前质心的距离,所述距离矩阵的第二距离分片由第二方持有;
6.基于所述第一距离分片,与第二方就其持有的第二距离分片执行安全比较计算,得到类簇索引矩阵的第一索引分片,其中,所述类簇索引矩阵表征所有样本对象各自所属的类簇,所述类簇索引矩阵的第二索引分片由第二方持有;
7.基于所述第一特征矩阵及所述第一索引分片,与第二方执行第二多方安全计算,得到本轮迭代更新后的第一质心分片,更新后的第二质心分片由第二方持有。
8.在一种可选实施方式中,所述第一多方安全计算包括:
9.基于所述第一质心分片,与第二方持有的第二质心分片,执行包括安全矩阵乘法的安全计算,确定第一中间结果;
10.基于所述第一特征矩阵和所述第一质心分片进行本地运算,确定第二中间结果;
11.基于所述第一特征矩阵,与第二方持有的第二质心分片执行安全矩阵乘法,确定第三中间结果;
12.基于所述第一质心分片,与第二方持有的第二特征矩阵执行安全矩阵乘法,确定
第四中间结果;
13.基于所述第一中间结果、第二中间结果、第三中间结果和第四中间结果,确定所述第一距离分片。
14.在一种可选实施方式中,所述第一特征矩阵为所述所有样本对象中第一部分样本对象的全部特征构成的矩阵,所述第二特征矩阵为所述所有样本对象中第二部分样本对象的全部特征构成的矩阵,所述当前质心矩阵和第一质心分片的维度均为d*k维,其中d为所述全部特征的维度,k为预设的类簇数目。
15.在一种可选实施方式中,所述第一特征矩阵为所述所有样本对象的第一部分特征构成的矩阵,所述第二特征矩阵为所述所有样本对象的第二部分特征构成的矩阵;
16.所述当前质心矩阵包括对应于所述第一部分特征的第一子矩阵和对应于所述第二部分特征的第二子矩阵;所述第一质心分片包括所述第一子矩阵的第一方分片和所述第二子矩阵的第一方分片;所述第二质心分片包括所述第一子矩阵的第二方分片和所述第二子矩阵的第二方分片;
17.所述确定第三中间结果包括,基于所述第一特征矩阵,与第二方持有的所述第一子矩阵的第二方分片执行安全矩阵乘法,得到第三中间结果;
18.所述确定第四中间结果包括,基于所述第二子矩阵的第一方分片,与第二方持有的所述第二特征矩阵执行安全矩阵乘法,得到第四中间结果。
19.在一种可选实施方式中,所述第一特征矩阵为所述所有样本对象的全部特征的第一特征分片构成的矩阵,所述第二特征矩阵为所述所有样本对象的全部特征的第二特征分片构成的矩阵,所述当前质心矩阵和第一质心分片的维度均为k*d维,其中d为所述全部特征的维度,k为预设的类簇数目。
20.在一种可选实施方式中,所述安全矩阵乘法是基于秘密分享协议的通用矩阵乘法,或者是基于同态加密协议和秘密分享协议的稀疏矩阵乘法。
21.在一种可选实施方式中,所述安全矩阵乘法是基于同态加密协议和秘密分享协议的稀疏矩阵乘法;所述确定第三中间结果,包括:
22.获得第二质心分片密文,第二质心分片密文是第二方利用第一目标公钥对第二质心分片同态加密所得的;
23.计算所述第一特征矩阵与所述第二质心分片密文的乘积,得到第一乘积密文;
24.生成第一随机矩阵,作为所述第一乘积密文的第一结果分片,将所述第一结果分片作为所述第三中间结果;
25.基于所述第一乘积密文和所述第一随机矩阵,确定所述第一乘积密文的第二结果分片密文,将其发送至所述第二方,以使第二方解密第二结果分片密文,得到第二结果分片,作为与所述第三中间结果对应的第二方中间结果。
26.在一种可选实施方式中,所述安全矩阵乘法是基于同态加密协议和秘密分享协议的稀疏矩阵乘法;所述确定第三中间结果,包括:
27.利用第二目标公钥加密所述第一特征矩阵,得到第一矩阵密文,将其发送至所述第二方;
28.从所述第二方接收第三结果分片密文,对所述第三结果分片密文进行解密,得到第三结果分片明文,作为所述第三中间结果,其中,所述第三结果分片密文是,所述第二方
基于第二乘积密文和所述第二方所生成的第二随机矩阵而确定的,所述第二乘积密文是所述第一矩阵密文与第二方持有的第二质心分片的乘积结果,所述第二随机矩阵作为所述第二方持有的与所述第三中间结果对应的第二方中间结果。
29.在一种可选实施方式中,所述得到类簇索引矩阵的第一索引分片,包括:
30.基于预设的类簇数量k构建二叉树的叶子节点;
31.对于任意样本对象,针对二叉树的各层节点指示的类簇中的相邻两个类簇,利用所述第一距离分片中该样本对象对应于该两个类簇的两个距离值分片,与第二方执行安全比较算法,得到距离更近的类簇作为下一层节点,直到达到根节点;
32.根据各个样本对象的根节点,确定所述第一索引分片。
33.在一种可选实施方式中,所述得到本轮迭代更新后的第一质心分片,包括:
34.基于所述第一特征矩阵和所述第一索引分片,与第二方持有的第二特征矩阵和第二索引分片进行安全矩阵乘法,确定出属于各类簇的样本对象的特征向量之和的第一和分片,所述属于各类簇的样本对象的特征向量之和的第二和分片由所述第二方持有;
35.基于所述第一索引分片与第二方执行安全计算,统计属于各类簇的样本对象的数量;
36.基于所述第一和分片及属于各类簇的样本对象的数量,与所述第二方就其持有的第二和分片执行安全矩阵乘法,得到本轮迭代更新后的第一质心分片。
37.在一种可选实施方式中,所述任意一轮迭代还包括:
38.基于所述当前质心矩阵的第一质心分片、本轮迭代更新后的第一质心分片以及预设误差阈值,与第二方执行安全比较计算,得到本轮迭代更新后的质心矩阵与所述当前质心矩阵的差值与所述预设误差阈值的比较结果,基于比较结果,确定是否达到预设迭代停止条件。
39.在一种可选实施方式中,所述任意一轮迭代还包括:
40.确定迭代轮次是否达到预设迭代轮次阈值,基于所确定结果,确定是否达到预设迭代停止条件。
41.在一种可选实施方式中,还包括:
42.若达到预设迭代停止条件,则根据所述第一索引分片确定各样本对象所属的类簇;和/或,基于更新后的第一质心分片,确定各类簇的质心。
43.根据第二方面,提供一种基于隐私保护的多方联合数据聚类的装置,涉及第一方和第二方,所述第一方和第二方分别持有第一特征矩阵和第二特征矩阵,第一和第二特征矩阵用于构成待聚类的所有样本对象的总特征矩阵;所述装置部署于第一方,包括执行多轮迭代的第一安全计算模块、第一安全比较模块和第二安全计算模块,其中任意一轮迭代包括:
44.第一安全计算模块,配置为基于第一特征矩阵及当前质心矩阵的第一质心分片,与第二方执行基于安全矩阵乘法的第一多方安全计算,得到距离矩阵的第一距离分片,所述距离矩阵表征所有样本对象与各类簇的当前质心的距离,所述距离矩阵的第二距离分片由第二方持有;
45.第一安全比较模块,配置为基于所述第一距离分片,与第二方就其持有的第二距离分片执行安全比较计算,得到类簇索引矩阵的第一索引分片,其中,所述类簇索引矩阵表
征所有样本对象各自所属的类簇,所述类簇索引矩阵的第二索引分片由第二方持有;
46.第二安全计算模块,配置为基于所述第一特征矩阵及所述第一索引分片,与第二方执行第二多方安全计算,得到本轮迭代更新后的第一质心分片,更新后的第二质心分片由第二方持有。
47.根据第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面所述的方法。
48.根据第四方面,提供一种计算设备,包括存储器和处理器,其中,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
49.根据本说明书实施例提供的方法及装置,第一方通过多轮迭代更新质心,在每次迭代过程中,第一方基于第一特征矩阵及当前质心矩阵的第一质心分片,与第二方执行基于安全矩阵乘法的第一多方安全计算,以通过矩阵计算方式,一次性得到表征所有样本对象与各类簇的当前质心的距离的距离矩阵的第一距离分片;进而基于第一距离分片与第二方就其持有的第二距离分片执行安全比较计算,得到类簇索引矩阵的第一索引分片;之后结合第一特征矩阵及第一索引分片,与第二方执行第二多方安全计算,得到本轮迭代更新后的第一质心分片,实现对质心的更新,在上述过程中,通过与第二方之间执行多方安全计算,实现在保护各方隐私数据的前提下完成数据聚类。并且在距离的计算过程中,第一多方安全计算为基于安全矩阵乘法的计算,实现通过一次矩阵的安全计算过程,即得到表征所有样本对象与各类簇的当前质心的距离的距离矩阵,减少聚类过程中的计算量和通信量,并提高数据聚类效率。
附图说明
50.为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
51.图1为本说明书披露的一个实施例的实施框架示意图;
52.图2a为实施例提供的第一特征矩阵xa和第二特征矩阵xb的获得流程的一种示意图;
53.图2b和图2c为实施例提供的第一特征矩阵xa和第二特征矩阵xb的数据分布的一种示意图;
54.图3为实施例提供的基于隐私保护的多方联合数据聚类的方法的一种流程示意图;
55.图4为实施例提供的基于隐私保护的多方联合数据聚类的装置的一种示意性框图。
具体实施方式
56.下面将结合附图,详细描述本说明书实施例的技术方案。
57.本说明书实施例披露一种基于隐私保护的多方联合数据聚类的方法及装置,下面首先对方法的应用场景和技术构思进行介绍,具体如下:
58.如前所述,目前,越来越严格的隐私保护规定,阻碍了多个数据拥有方之间的数据共享,那么,如何提供一种在基于隐私保护的多方联合数据聚类的方法成为亟待解决的问题。
59.目前,相关技术中为了解决上述问题,提供了一种基于数据隐私保护的两方数据聚类方案,在该方案中,各数据拥有方首先分别直接将各自持有的数据样本切分为两个数据份额,其中一份数据份额自己保留,一份数据份额共享给对方;各数据拥有方分别基于其自身保留的各个数据样本的数据份额以及从另一方获取的各个数据样本的数据份额,得到自身的重组数据集;以及在各数据拥有方之间,使用各个数据拥有方的重组数据集来进行数据聚类。
60.上述方案中,各数据拥有方将各自持有的数据样本切分为两个数据份额,一份己方保留,一份共享至对方,以使得各数据拥有方得到重组数据集。聚类过程中,逐个样本地确定单个数据样本与质心的距离。具体地,各数据拥有方基于各自持有的重组数据集(包括己方数据样本的一个数据份额,和对方数据样本的一个数据份额),确定其中单个数据样本的数据份额与各当前聚类类别中心点(即质心)的距离。换而言之,其是针对各数据样本分别进行距离计算的,也就是对各个数值(各数据样本的数据份额)进行操作,得到与各当前聚类类别中心点的距离,这样,针对多个数据样本,数据拥有方需要执行多次距离计算,导致各数据拥有方之间在聚类过程中,虽然实现了对己方数据隐私的保密,但在聚类过程中,数据聚合效率较低。
61.鉴于此,发明人提出一种基于隐私保护的多方联合数据聚类的方法,在多方联合聚类过程中实现对数据隐私的保密,并且提高数据聚类效率。图1示出根据本说明书披露的一个实施例的实施框架示意图。其中示意性示出了参与方a和b,也可称为第一方a和第二方b。各个参与方均可以实现为任何具有计算、处理能力的设备、平台、服务器或设备集群。双方要在保护数据隐私的情况下,联合进行数据聚类。
62.其中,第一方a持有第一特征矩阵xa,第二方b持有第二特征矩阵xb,第一特征矩阵xa和第二特征矩阵xb用于构成待聚类的所有样本对象的总特征矩阵χ。该数据聚类过程可以包括质心初始化以及质心的更新迭代。
63.一种实现中,第一方a和第二方b均为原始的数据拥有方,即第一特征矩阵xa为属于第一方a的特征矩阵;第二特征矩阵xb为属于第二方b的特征矩阵。另一种实现中,第一方a和第二方b为执行数据聚类的计算方,第一方a和第二方b持有的第一特征矩阵xa和第二特征矩阵xb为其他需要进行数据聚类的(三个及以上)数据拥有方提供给其两方的。
64.举例而言,如图2a所示,存在原始的数据拥有方q、p和g,数据拥有方q持有部分特征矩阵q,数据拥有方p持有部分特征矩阵p,数据拥有方g持有部分特征矩阵g,部分特征矩阵q、部分特征矩阵p以及部分特征矩阵g用于构成待聚类的所有样本对象的总特征矩阵,此时,数据拥有方q将其持有的部分特征矩阵q划分为两个分片,即部分特征矩阵分片q1和部分特征矩阵分片q2,将部分特征矩阵分片q1发送至第一方a,将部分特征矩阵分片q2发送至二方b;数据拥有方p将其持有的部分特征矩阵p划分为两个分片,即部分特征矩阵分片p1和部分特征矩阵分片p2,将部分特征矩阵分片p1发送至第一方a,将部分特征矩阵分片p2发送至二方b;数据拥有方g将其持有的部分特征矩阵g划分为两个分片,即部分特征矩阵分片g1和部分特征矩阵分片g2,将部分特征矩阵分片g1发送至第一方a,将部分特征矩阵分片g2发
送至第二方b。
65.相应的,第一方a将部分特征矩阵分片q1、部分特征矩阵分片p1和部分特征矩阵分片g1组合成第一特征矩阵xa,第二方b将部分特征矩阵分片q2、部分特征矩阵分片p2和部分特征矩阵分片g2组合成第二特征矩阵xb。
66.第一方a得到其第一特征矩阵xa,第二方b得到其第二特征矩阵xb之后,第一方a和第二方b可以首先进行质心初始化,以使得第一方a得到初始质心矩阵(可记为质心矩阵μ
(0)
)的一个分片,第二方b得到初始质心矩阵μ
(0)
的另一个分片。接着第一方a和第二方b执行多轮的质心更新迭代,如图1所示,其中,任意一轮迭代(例如第t轮迭代),包括:
67.第一方a基于第一特征矩阵xa及当前质心矩阵μ
(t-1)
(即上一轮迭代后的质心矩阵)的第一质心分片《μ
(t-1)
》a,与第二方b持有的第二特征矩阵xb和当前质心矩阵μ
(t-1)
的第二质心分片《μ
(t-1)
》b,执行基于安全矩阵乘法的第一多方安全计算,得到距离矩阵d
(t)
的第一距离分片《d
(t)
》a,距离矩阵d
(t)
表征所有样本对象与各类簇c的当前质心的距离,距离矩阵d
(t)
的第二距离分片《d
(t)
》b由第二方b持有。
68.接着,第一方a基于第一距离分片《d
(t)
》a,与第二方b就其持有的第二距离分片《d
(t)
》b执行安全比较计算,得到类簇索引矩阵c
(t)
的第一索引分片《c
(t)
》a,其中,该类簇索引矩阵c
(t)
表征所有样本对象各自所属的类簇c,类簇索引矩阵c
(t)
的第二索引分片《c
(t)
》b由第二方b持有。
69.之后,第一方a基于第一特征矩阵xa及第一索引分片《c
(t)
》a,与第二方b就其持有的第二特征矩阵xb和第二索引分片《c
(t)
》b执行第二多方安全计算,得到本轮迭代更新后的第一质心分片《μ
(t)
》a,更新后的第二质心分片《μ
(t)
》b由第二方b持有。
70.后续的,若第一方a和第二方b确定当前达到预设迭代停止条件,则第一方a和第二方b可以基于更新后的第一质心分片《μ
(t)
》a和第二质心分片《μ
(t)
》b,确定各类簇的质心,和/或根据第一索引分片《c
(t)
》a确定各样本对象所属的类簇。
71.在一个实施例中,第一方a和第二方b分别持有第一特征矩阵xa和第二特征矩阵xb可以是任意分布形式的数据。其中一种实现中,第一特征矩阵xa和第二特征矩阵xb为纵向切分形式的数据,即第一方a和第二方b拥有相同样本对象的不同特征。也就是说,第一特征矩阵xa为所有样本对象的第一部分特征构成的矩阵,维度可以表示为n*da,第二特征矩阵xb为所有样本对象的第二部分特征构成的矩阵,维度可以表示为n*db,相应的,待聚类的所有样本对象的总特征矩阵的维度表示为n*d,da db=d,n表示所有样本对象的总数量,da表示第一部分特征(即第一特征矩阵xa的特征)的维度数,db表示第二部分特征(即第一特征矩阵xb的特征)的维度数,d表示总特征矩阵的特征的维度数,相应的,纵向切分形式下的第一特征矩阵xa和第二特征矩阵xb的数据分布示意图,如图2b所示。
72.例如,在一个示例性场景中,上述第一方a和第二方b分别为电子支付平台和银行机构,双方需要联合确定哪些用户存在相似性,即需要对用户进行聚类。双方可以各自维护用户的一部分特征数据,例如,电子支付平台维护用户的电子支付和转账相关特征,构成上述的第一特征矩阵xa;银行机构维护用户的信贷记录方面的相关特征,构成上述的第二特征矩阵xb。
73.在另一个示例中,上述第一方a和第二方b为电子商务平台和电子支付平台,双方需要联合联合确定哪些商户存在相似性,即需要对用户进行聚类。双方可以各自维护商户
的一部分特征数据,例如,电子商务平台存储样本商户的销售数据作为一部分样本特征,该部分样本特征构成上述第一特征矩阵xa;电子支付平台维护商户的交易流水数据作为另一部分样本特,构成第二特征矩阵xb。
74.在其他场景示例中,样本对象还可以是待聚类的其他对象,比如商品,交互事件(例如交易事件,登录事件,点击事件,购买事件),等等。相应的,参与方可以是维护有上述业务对象的不同特征部分的不同业务方。
75.另一种实现中,第一特征矩阵xa和第二特征矩阵xb为横向切分形式的数据,即第一方a和第二方b拥有不同的样本对象,但各样本对象对应的特征维度相同。也就是说,第一特征矩阵xa为所有样本对象中第一部分样本对象的全部特征构成的矩阵,维度可以表示为na*d,第二特征矩阵xb为所有样本对象中第二部分样本对象的全部特征构成的矩阵,维度可以表示为nb*d,相应的,待聚类的所有样本对象的总特征矩阵的维度表示为n*d,na nb=n,n表示所有样本对象的总数量,na表示第一部分样本对象的数量,nb表示第二部分样本对象的的数量,d表示总特征矩阵(也即第一特征矩阵xa,第二特征矩阵xb)的特征的维度数,相应的,横向切分形式下的第一特征矩阵xa和第二特征矩阵xb的数据分布示意图,如图2c所示。
76.例如,在一个示例性场景中,上述第一方a和第二方b分别为两个银行机构,双方需要联合确定哪些用户存在相似性,即需要对用户进行聚类。双方可以各自维护一部分用户的特征数据,例如,银行机构a维护第一类用户的信贷记录方面的相关特征,构成上述的第一特征矩阵xa;银行机构b维护第二类用户的信贷记录方面的相关特征,构成上述的第二特征矩阵xb。
77.在另一个示例中,上述第一方a和第二方b分别为两个电子商务平台,双方需要联合联合确定哪些商户存在相似性,即需要对用户进行聚类。双方可以各自维护一部分商户的特征数据,例如,电子商务平台a存储第一类样本商户的销售数据作为一部分样本特征,该部分样本特征构成上述第一特征矩阵xa;电子商务平台b存储第二类样本商户的销售数据作为一部分样本特征,构成第二特征矩阵xb。
78.另一种实现中,第一特征矩阵xa和第二特征矩阵xb为原始特征分片形式的数据,即即第一方a和第二方b均拥有不同样本对象的所有维度的特征的分片,也就是说,第一特征矩阵xa为所有样本对象中全部特征的第一特征分片构成的矩阵,维度可以表示为n*d,第二特征矩阵xb为所有样本对象中全部特征的第二特征分片构成的矩阵,维度可以表示为n*d,且待聚类的所有样本对象的总特征矩阵的维度也为n*d,n表示所有样本对象的总数量,d表示总特征矩阵(也即第一特征矩阵xa,第二特征矩阵xb)的特征的维度数。
79.需要理解,双方各自维护的特征矩阵属于隐私数据,在联合数据聚类过程中,不可以进行明文交换,以保护隐私数据安全。
80.上述过程中,第一方与第二方之间执行多方安全计算,实现在保护各方隐私数据的前提下完成数据聚类。并且在距离的计算过程中,第一多方安全计算为基于安全矩阵乘法的计算,实现通过一次矩阵的安全计算过程,即得到表征所有样本对象与各类簇的当前质心的距离的距离矩阵,减少聚类过程中的计算量和通信量,并提高数据聚类效率。
81.下面结合具体实施例,对本说明书提供的基于隐私保护的多方联合数据聚类的方法进行详细阐述。
82.该基于隐私保护的多方联合数据聚类的方法,涉及第一方a和第二方b,第一方a持有第一特征矩阵xa,第二方b持有第二特征矩阵xb,第一特征矩阵xa和第二特征矩阵xb用于构成待聚类的所有样本对象的总特征矩阵χ。第一特征矩阵xa和第二特征矩阵xb可以是任意分布形式的数据,其中,在第一特征矩阵xa和第二特征矩阵xb为纵向切分形式的数据的情况下,总特征矩阵可以表示为χ=[xa,xb],该总特征矩阵为第一特征矩阵xa和第二特征矩阵xb横向拼接得到;在第一特征矩阵xa和第二特征矩阵xb为横向切分形式的数据的情况下,总特征矩阵可以表示为该总特征矩阵为第一特征矩阵xa和第二特征矩阵xb纵向拼接得到,在第一特征矩阵xa和第二特征矩阵xb为原始特征分片形式的数据的情况下,总特征矩阵可以表示为χ=[xa xb]。
[0083]
为了进行保护数据隐私的多方联合数据聚类,第一方(即前述的参与方a)和第二方(即前述的参与方b)之间首先进行初始准备阶段,为后续的数据聚类过程做准备。
[0084]
在初始准备阶段,首先,第一方a和第二方b可以先进行数据对齐,其中,在第一方a和第二方b所持有的数据为纵向切分形式的数据的情况下,第一方a和第二方b可以预先协商其各自持有的特征矩阵中各样本对象的排列顺序,例如,第一特征矩阵xa和第二特征矩阵xb各自的第i行的特征为第i样本对象的特征,也即为第i样本对象的特征向量。在第一方a和第二方b所持有的数据为横向切分形式的数据的情况下,第一方a和第二方b可以预先协商其各自持有的特征矩阵中各特征的排列顺序,例如,第一特征矩阵xa和第二特征矩阵xb各自的第l列的特征为所有样本对象的第l特征。
[0085]
之后,第一方a和第二方b进行质心初始化,相应的可以首先联合确定初始质心矩阵(即后续多轮迭代过程中的第一轮迭代的当前质心矩阵μ
(0)
),其中,第一方a持有该初始质心矩阵μ
(0)
的一个分片,第二方b持有该初始质心矩阵μ
(0)
的另一个分片。
[0086]
其中,联合确定初始质心矩阵的方式,例如可以为,第一方a和第二方b基于其各自持有第一特征矩阵xa和第二特征矩阵xb执行安全计算,得到初始质心矩阵的两个分片,分别由第一方a和第二方b持有,其中,该初始质心矩阵包括基于第一特征矩阵xa和第二特征矩阵xb,所随机选取的k个样本对象的特征向量。又例如:第一方a和第二方b各自基于其持有的特征矩阵x(第一方a基于第一特征矩阵xa,第二方b基于第二特征矩阵xb)进行本地k-means聚类,得到各自的聚类结果,进而第一方a和第二方b基于各自的聚类结果,得到k个初始质心的两个分片,分别组成初始质心矩阵的两个分片。
[0087]
第一方a和第二方b各自得到初始质心矩阵的一个分片,即第一方a和第二方b分别得到初始质心矩阵μ
(0)
的第一质心分片《μ
(0)
》a和第二质心分片《μ
(0)
》b。之后,可以进入质心的更新迭代阶段,其中,初始质心矩阵μ
(0)
即为该质心的更新迭代阶段的第一轮迭代的当前质心矩阵μ
(0)
。以下实施例从第一方a的角度进行描述,第二方b所需执行的动作可以参见第一方a所执行的动作。
[0088]
具体的,在质心的更新迭代的过程中,包括多轮迭代,其中,任意一轮迭代(例如第t轮)过程,如图3所示,首先,在步骤s310,第一方a基于第一特征矩阵xa及当前质心矩阵μ
(t-1)
的第一质心分片《μ
(t-1)
》a,与第二方b执行基于安全矩阵乘法的第一多方安全计算,得到距离矩阵d
(t)
的第一距离分片《d
(t)
》a。该距离矩阵d
(t)
表征所有样本对象与各类簇c的当前质心的距离,距离矩阵d
(t)
的第二距离分片《d
(t)
》b由第二方b持有。
[0089]
具体的,在本步骤中,第一方a基于第一特征矩阵xa及当前质心矩阵μ
(t-1)
的第一质心分片《μ
(t-1)
》a,与第二方b就其持有的第二特征矩阵xb及当前质心矩阵μ
(t-1)
的第二质心分片《μ
(t-1)
》b,执行第一多方安全计算,得到距离矩阵d
(t)
的第一距离分片《d
(t)
》a,并得到由第二方b持有的第二距离分片《d
(t)
》b,该距离矩阵d
(t)
表征所有样本对象与各类簇c的当前质心的距离。其中,距离矩阵d
(t)
、第一距离分片《d
(t)
》a以及第二距离分片《d
(t)
》b均为n*k的矩阵,其中,n为所有样本对象的总数量,k为质心(也即类簇)的数量。距离矩阵d
(t)
=《d
(t)
》a 《d
(t)
》b。
[0090]
在一种情况中,第i样本对象χi与当前质心矩阵中第j个质心的距离d
ij(t)
,可以通过如下公式(1)表示:
[0091][0092]
其中,d表示第i样本对象的所有特征的维度数,χ
il
表示第i个样本对象的第l个特征,u
(t)jl
表示第t轮迭代过程中的当前质心矩阵中第j个质心的第l个特征。
[0093]
相应的,距离矩阵可以通过如下公式(2)表示:
[0094][0095]
可以理解的是,在i不变的情况下,保持不变,即对于第i样本对象与各个质心的距离而言,均是相同的,相应的,在计算第i样本对象与第j个质心的距离时,可以省略进一步的,在计算距离矩阵d
(t)
时,可以省略计算各样本对象对应的
[0096]
相应的,后续的距离矩阵计算过程中,计算即可。
[0097]
接着,上述公式(2)可以变形为:
[0098][0099]
其中,μ
(t-1)
=《μ
(t-1)
》a 《μ
(t-1)
》b。
[0100]
可以理解的,在第一特征矩阵xa和第二特征矩阵xb为纵向切分形式的数据的情况下,第一特征矩阵xa为所有样本对象的第一部分特征构成的矩阵,维度为n*da,第二特征矩阵xb]为所有样本对象的第二部分特征构成的矩阵,维度为n*db,相应的,总特征矩阵可以表示为χ=[xa,xb],当前质心矩阵μ
(t-1)
包括对应于第一部分特征的第一子矩阵(维度为k*da)和对应于第二部分特征的第二子矩阵(维度为k*db);第一质心分片《μ
(t-1)
》a包括第一子矩阵的第一方分片《μ
(t-1)

a1
(维度为k*da)和第二子矩阵的第一方分片《μ
(t-1)

a2
(维度为k*db),由第一方a持有;第二质心分片《μ
(t-1)
》b包括第一子矩阵的第二方分片《μ
(t-1)

b1
(维度为k*da)和第二子矩阵的第二方分片《μ
(t-1)

b2
(维度为k*db),由第二方b持有。
[0101]
其中,
[0102]
相应的,公式(4)可以变形为:
[0103][0104]
在第一特征矩阵xa和第二特征矩阵xb为横向切分形式的数据的情况下,总特征矩阵可以表示为第一特征矩阵xa为所有样本对象中第一部分样本对象的全部特征构成的矩阵,维度为na*d,第二特征矩阵xb为所有样本对象中第二部分样本对象的全部特征构成的矩阵,维度为nb*d,当前质心矩阵μ
(t-1)
、第一质心分片《μ
(t-1)
》a和第二质心分片《μ
(t-1)
》b的维度均为k*d维,其中d为全部特征的维度,k为预设的类簇数目。其中,μ
(t-1)
=《μ
(t-1)
》a 《μ
(t-1)
》b。
[0105]
相应的,公式(4)可以变形为:
[0106][0107]
在第一特征矩阵xa和第二特征矩阵xb为原始特征分片形式的数据的情况下,总特征矩阵可以表示为χ=[xa xb],相应的,公式(4)可以变形为:
[0108][0109][0110]
相应的,在一个实施例中,所述第一多方安全计算包括如下步骤:
[0111]
在步骤11,第一方a基于第一质心分片《μ
(t-1)
》a,与第二方b持有的第二质心分片《μ
(t-1)
》b,执行包括安全矩阵乘法的安全计算,确定第一中间结果z1;
[0112]
在步骤12,第一方a基于第一特征矩阵xa和第一质心分片《μ
(t-1)
》a进行本地运算,确定第二中间结果z2;
[0113]
在步骤13,第一方a基于第一特征矩阵xa,与第二方b持有的第二质心分片《μ
(t-1)
》b执行安全矩阵乘法,确定第三中间结果z3;
[0114]
在步骤14,第一方a基于第一质心分片《μ
(t-1)
》a,与第二方b持有的第二特征矩阵xb执行安全矩阵乘法,确定第四中间结果z4;
[0115]
在步骤15,第一方a基于第一中间结果z1、第二中间结果z2、第三中间结果z3和第四中间结果z4,确定第一距离分片《d
(t)
》a。
[0116]
本实现方式中,第一方a可以首先基于第一质心分片《μ
(t-1)
》a,与第二方b持有的第二质心分片《μ
(t-1)
》b,执行包括安全矩阵乘法的安全计算,确定第一中间结果z1(即前述的《u》的由第一方a持有的一个分片)。
[0117]
其中,《u》=(《μ
(t-1)
》a 《μ
(t-1)
》b)2=(《μ
(t-1)
》a)2 (《μ
(t-1)
》b)2 2《μ
(t-1)
》a*《μ
(t-1)
》b;
ꢀꢀ
(8)
[0118]
通过公式(8)可知,《μ
(t-1)
》a由第一方a持有,(《μ
(t-1)
》a)2可以在第一方a本地计算得到。《μ
(t-1)
》b由第二方b持有,(《μ
(t-1)
》b)2可以在第二方b本地计算得到,对于《μ
(t-1)
》a*《μ
(t-1)
》b可以由第一方a基于《μ
(t-1)
》a,与第二方b持有的《μ
(t-1)
》b,执行安全矩阵乘法,以使得第一方a得到《μ
(t-1)
》a*《μ
(t-1)
》b的一个分片《a》a,第二方b得到《μ
(t-1)
》a*《μ
(t-1)
》b的另一个分片《a》b。
[0119]
接着,第一方a基于计算所得的(《μ
(t-1)
》a)2和分片《a》a得到第一中间结果z1,即《u》的由第一方a持有的一个分片,第二方b基于计算所得的(《μ
(t-1)
》b)2和分片《a》b得到《u》的另一个分片,可以称为第五中间结果z5。
[0120]
之后,由于第一特征矩阵xa和第一质心分片《μ
(t-1)
》a均由第一方a持有,则第一方a基于第一特征矩阵xa和第一质心分片《μ
(t-1)
》a进行本地运算,确定第二中间结果z2。
[0121]
同理的,在第二方b侧,由于第二特征矩阵xb和第二质心分片《μ
(t-1)
》b均由第二方b持有,则第二方b基于第二特征矩阵xb和第二质心分片《μ
(t-1)
》b进行本地运算,确定其第六中间结果z6。
[0122]
通过上述公式(5)、(6)和(7)可知,为了计算距离矩阵d
(t)
的第一距离分片《d
(t
)》a和第二距离分片《d(
t
)》b,第一方a还需要基于其持有的第一特征矩阵xa,与第二方b持有的第二质心分片《μ
(t-1)
》b执行安全矩阵乘法,确定出第三中间结果z3,即,即的一个分片,同时,第二方b得到的另一个分片,可以称为第七中间结果z7。
[0123]
第一方a还需要基于其持有的第一质心分片《μ
(t-1)
》a第二方b持有的第二特征矩阵xb执行安全矩阵乘法,确定出第四中间结果z4,即的一个分片,同时,第二方b得到的另一个分片,可以称为第八中间结果z8。
[0124]
接着,第一方a基于第一中间结果z1、第二中间结果z2、第三中间结果z3以及第四中间结果z4,得到第一距离分片《d
(t)
》a(实际为《d

(
t
)》a)。
[0125]
相应的,第二方b基于第五中间结果z5、第六中间结果z6、第七中间结果z7以及第八中间结果z8,得到第二距离分片《d(
t
)》b(实际为《d

(
t)
》b)。
[0126]
在又一个实施例中,第一特征矩阵xa和第二特征矩阵xb为纵向切分形式下的数据,通过前述公式(5)可知,在步骤13,第一方a可以基于第一特征矩阵xa,与第二方b持有的第一子矩阵的第二方分片《μ
(t-1)

b1
执行安全矩阵乘法,得到第三中间结果z3(即(即的一个分片,而的另一个分片有第二方b持有)。
[0127]
在步骤14,第一方a基于第二子矩阵的第一方分片《μ
(t-1)

a2
,与第二方b持有的第二特征矩阵xb执行安全矩阵乘法,得到第四中间结果z4(即的一个分片,而的另一个分片有第二方b持有)。
[0128]
在一个实施例中,该安全矩阵乘法可以是基于秘密分享协议的通用矩阵乘法,或者可以是基于同态加密协议和秘密分享协议的稀疏矩阵乘法。
[0129]
一种实现中,在该安全矩阵乘法是基于秘密分享协议的通用矩阵乘法的情况下,第一方a和第二方b需要分别针对其参与通用矩阵乘法的矩阵(例如第一特征矩阵xa和第一子矩阵的第二方分片《μ
(t-1)

b1
)生成乘法三元组。可以理解的是,样本对象确定,第一特征矩阵xa以及第二特征矩阵xb确定,相应的,该情况下,第一方a可以离线预先确定出第一特
征矩阵xa的乘法三元组,第二方b也可以离线预先确定出第二特征矩阵xb的乘法三元组,之后在基于秘密分享协议的通用矩阵乘法进行安全计算时,可以直接读取相应的乘法三元组,以在一定程度上减少数据聚类过程中在线阶段消耗的时间。
[0130]
在一种实现中,该安全矩阵乘法是基于同态加密协议和秘密分享协议的稀疏矩阵乘法的情况下;具体的,在步骤13具体配置为,在步骤131,第一方a获得第二质心分片密文[《μ
(t-1)
》b]
pk
,第二质心分片密文[《μ
(t-1)
》b]
pk
是第二方b利用第一目标公钥pk1对第二质心分片《μ
(t-1)
》b同态加密所得的。该第一目标公钥pk1为第二方b基于同态加密协议所生成的,第二方b还私密持有第一目标公钥pk1对应的第一目标私钥sk1。第二方b作为稀疏矩阵乘法过程中的数据加密方。
[0131]
在步骤132,第一方a计算第一特征矩阵xa与第二质心分片密文的乘积[《μ
(t-1)
》b]
pk1
,得到第一乘积密文;该第一乘积密文可以表示为[z]
pk1
=xa*[《μ
(t-1)
》b]
pk1
,基于同态加密协议中同态加密算法的同态性,[z]
pk1
=xa*[《μ
(t-1)
》b]
pk1
=[xa*《μ
(t-1)
》b]
pk1

[0132]
在步骤133,第一方a生成第一随机矩阵s1,作为第一乘积密文[z]
pk1
的第一结果分片,将该第一结果分片作为第三中间结果z3。可以理解的,该第一随机矩阵s1属于第二执行分片密文所在数据域φ,在第一目标公钥pk1和第一目标私钥sk2确定的情况下,数据域φ确定。
[0133]
在步骤134,第一方a基于第一乘积密文[z]
pk1
和第一随机矩阵s1,确定第一乘积密文[z]
pk1
的第二结果分片密文[s2]
pk1
,将其发送至第二方b,以使第二方b解密第二结果分片密文[s2]
pk
,得到第二结果分片s2,作为与第三中间结果z3对应的第二方b中间结果。
[0134]
具体的,第一方a确定第二结果分片密文[s2]
pk1
的过程,可以通过如下公式(9)表示:
[0135]
[s2]
pk1
=([z]
pk1-s1)mod φ;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(9)
[0136]
第一方a得到第二结果分片密文[s2]
pk1
之后,将第二结果分片密文[s2]
pk1
发送至第二方b。第二方b利用第一目标私钥sk1解密第二结果分片密文[s2]
pk1
,得到第二结果分片s2,即前述的第七中间结果z7,由此,第一方a与第二方b执行稀疏矩阵乘法,第一方a得到前述的第三中间结果z3,第二方b得到前述的第七中间结果z7。
[0137]
在又一种实现中,该安全矩阵乘法是基于同态加密协议和秘密分享协议的稀疏矩阵乘法的情况下;第一方a作为稀疏矩阵乘法过程中的数据加密方,具体的,在步骤13还可以具体配置为,在步骤135,第一方a利用第二目标公钥pk2加密第一特征矩阵xa,得到第一矩阵密文[xa]
pk2
,将其发送至第二方b。其中,该第二目标公钥pk2为第一方a基于同态加密协议所生成的,第一方a还私密持有第二目标公钥pk2对应的第二目标私钥sk2。
[0138]
在步骤136,第一方a从第二方b接收第三结果分片密文[s3]
pk2
,对第三结果分片密文进行解密,得到第三结果分片明文s3,作为第三中间结果z3,其中,第三结果分片密文[s3]
pk2
是,第二方b基于第二乘积密文[z]
pk2
和第二方b所生成的第二随机矩阵s3而确定的,第二乘积密文[z]
pk2
是第一矩阵密文[xa]
pk2
与第二方b持有的第二质心分片《μ
(t-1)
》b的乘积结果,第二随机矩阵s3作为第二方b持有的与第三中间结果z3对应的第二方b中间结果,即前述的第七中间结果z7。
[0139]
其中,第三结果分片密文[s3]
pk2
的确定过程可以参见前述的公式(8),在此不再赘述。第一方a得到第三结果分片密文[s3]
pk2
之后,利用其私密持有的第二目标私钥sk2,对第
三结果分片密文进行解密,得到第三结果分片明文s3,即得到第三中间结果z3。
[0140]
之后,第一方a得到距离矩阵d
(t)
的第一距离分片《d
(t)
》a,且第二方b得到距离矩阵d
(t)
的第二距离分片《d
(t)
》b后,接着,在步骤s320,第一方a基于第一距离分片《d
(t)
》a,与第二方b就其持有的第二距离分片《d
(t)
》b执行安全比较计算,得到类簇索引矩阵c
(t)
的第一索引分片《c
(t)
》a。其中,该类簇索引矩阵c
(t)
表征所有样本对象各自所属的类簇c,类簇索引矩阵c
(t)
的第二索引分片《c
(t)
》b由第二方b持有。
[0141]
在一种实现方式中,第一方a可以对于任意样本对象,基于第一距离分片《d
(t)
》a中该样本对象对应的k个距离值分片(与k个质心的距离值分片),与第二方b就其持有的第二距离分片《d
(t)
》b中该样本对象对应的k个距离值分片,针对任意两个类簇对应的距离(各类簇对应的两个距离值分片)执行安全比较计算,得到比较结果,并得到进行比较的两个类簇各自对应的索引值的分片(即索引值分片),将所得比较结果表征与样本对象距离更小的质心所对应类簇对应的两个距离值分片,与当前未比较过的任一类簇对应的两个距离值分片执行安全比较计算,并得到进行比较的两个类簇各自对应的索引值的分片(即索引值分片),依次类推,得到该样本对象对应的索引向量的分片。
[0142]
举例而言,类簇即质心包括6个,针对样本对象m而言,可以是基于第一距离分片《d
(t)
》a中该样本对象m对应的6个距离值分片(与6个质心的距离值分片),与第二方b就其持有的第二距离分片《d
(t)
》b中该样本对象m对应的6个距离值分片,针对类簇1对应的两个距离值分片,以及类簇2对应的两个距离值分片执行安全比较计算,得到比较结果1,并得到类簇1和类簇2各自对应的索引值的分片(即索引值分片),将比较结果1表征与样本对象m距离更小的质心所对应类簇(例如类簇1,此时类簇1对应的两个索引值分片为1的两个分片,类簇2对应的两个索引值分片为0的两个分片)对应的两个距离值分片,与当前未比较过的任一类簇(即类簇3-6中的任一个,例如类簇3)对应的两个距离值分片执行安全比较计算,得到比较结果2,并得到类簇2和类簇3各自对应的索引值分片;将该比较结果2表征与样本对象m距离更小的质心所对应类簇(例如类簇2,此时类簇2对应的两个索引值分片仍未为1的两个分片,类簇3对应的两个索引值分片为0的两个分片)对应的两个距离值分片,与当前未比较过的任一类簇(即类簇4-6中的任一个,例如类簇4)对应的两个距离值分片执行安全比较计算,得到比较结果3,以此类推,得到该样本对象m对应的索引向量的分片。
[0143]
接着,基于各个样本对象对应的索引向量的分片,组合得到类簇索引矩阵c
(t)
的第一索引分片《c
(t)
》a。同理的,第二方b可以得到各样本对象对应的索引向量的另一分片,通过其得到的各样本对象对应的索引向量的另一分片,组合得到类簇索引矩阵c
(t)
的第二索引分片《c
(t)
》b。
[0144]
在一个实施例中,为了更好的提高数据聚类过程的速度,提高数据聚类效率,在步骤s320,具体配置为,在步骤21,第一方a基于预设的类簇数量k构建二叉树的叶子节点。
[0145]
在步骤22,对于任意样本对象,针对二叉树的各层节点指示的类簇中的相邻两个类簇,利用第一距离分片《d
(t)
》a中该样本对象对应于该两个类簇的两个距离值分片,与第二方执行安全比较算法,得到距离更近的类簇作为下一层节点,直到达到根节点;
[0146]
在步骤23,根据各个样本对象的根节点,确定第一索引分片。
[0147]
本实现方式中,第一方a基于预设的类簇数量k构建二叉树的叶子节点,其中,叶子节点包括k个,每个叶子节点对应一个类簇c,该二叉树可以包括k-1个比较模块
(comparison module,cmpm),用于针对指定的相邻节点各自所指示类簇c对应的距离值分片(一个类簇对应有两个距离值分片,分别由第一方a和第二方b持有),执行安全比较算法。可以理解的,该二叉树也可以由第二方b构建。
[0148]
第一方a对于任意样本对象,针对二叉树的各层节点指示的类簇c中的相邻两个类簇,利用第一距离分片《d
(t)
》a中该样本对象对应于该两个类簇的两个距离值分片,与第二方第二距离分片《d
(t)
》b中该样本对象对应于该两个类簇的两个距离值分片,执行安全比较算法,得到距离更近的类簇作为下一层节点,直到达到根节点,进而根据各个样本对象的根节点,确定第一索引分片《c
(t)
》a。
[0149]
如图4所示,为第一方a基于类簇数量k(6),构建的二叉树的一种示意图,其中,二叉树6个叶子节点,包括4层节点,包括5个比较模块“cmpm”,每个类簇均对应一个初始的索引值,即每一个叶子节点对应存储有一个初始的索引值,如图4所示,6个叶子节点中每一个叶子节点的右侧表示的数值1(初始的索引值);6个叶子节点中每一个叶子节点的左侧,对应表示输入比较模块的第一距离分片中(和第二距离分片中)该样本对象对应于该叶子节点所指示的类簇的距离值分片的入口。
[0150]
图4所示示例,仅是为了清楚的说明利用二叉树结构进行安全比较计算的过程的比较逻辑。图4中,各数值加《》表示在计算过程中各数值以分片的形式。也就是说,在该过程中,二叉树各节点的输入均是距离值分片,且二叉树的各节点得到索引值均以分片的形式存在,各分片分别由第一方a和第二方b持有。相应的,对于样本对象m,基于二叉树的根节点,第一方a可以得到该样本对象m对应的索引向量的一个分片,同理的,第二方b可以得到该样本对象m对应的索引向量的另一个分片。
[0151]
具体的,如图4所示,首先,第一方a针对任意的样本对象,针对二叉树的第4层(即图中的layer4)的各叶子节点指示的类簇中的相邻两个类簇,即分别为前两个叶子节点指示的类簇1和2,对应一个比较模块;中间两个叶子节点指示的类簇3和4,对应一个比较模块;后两个叶子节点指示的类簇5和6,对应一个比较模块。
[0152]
如图4中所示,第一方a首先利用第一距离分片《d
(t)
》a中样本对象m对应于类簇1和2的两个距离值分片,与第二方b的第二距离分片《d
(t)
》b中该样本对象m对应于类簇1和2的两个距离值分片,执行安全比较算法(即输入第4层的前两个节点对应的比较模块cmpm),得到比较结果,具体为样本对象m与类簇1对应的当前质心的距离值小于该样本对象与类簇2对应的当前质心的距离值。相应的,比较模块输出1(左侧输入小,为真),则类簇1(所对应节点)对应的初始的索引值1*1,类簇2(所对应节点)对应的初始的索引值1*0;相应的,二叉树的第3层(即图中的layer3)的第一个节点对应的索引向量如图4所示为10,第3层的第一个节点指示的类簇为类簇1。
[0153]
对应于类簇3和4,第一方a利用第一距离分片《d
(t)
》a中样本对象m对应于类簇3和4的两个距离值分片,与第二方b的第二距离分片《d
(t)
》b中该样本对象m对应于类簇3和4的两个距离值分片,执行安全比较算法(即输入第4层的中间两个节点对应的比较模块cmpm),得到比较结果,具体为样本对象m与类簇3对应的当前质心的距离值大于该样本对象与类簇4对应的当前质心的距离值。相应的,比较模块输出0(左侧输入大,为假),则类簇3对应的初始的索引值1*0,类簇4对应的初始的索引值1*1;相应的,二叉树的第3层的第二个节点对应的索引向量如图4所示为01,第3层的第二个节点指示的类簇为类簇4。
[0154]
对应于类簇5和6,第一方a利用第一距离分片《d
(t)
》a中样本对象m对应于类簇5和6的两个距离值分片,与第二方b的第二距离分片《d
(t)
》b中该样本对象m对应于类簇5和6的两个距离值分片,执行安全比较算法(即输入第4层的后两个节点对应的比较模块cmpm),得到比较结果,具体为样本对象m与类簇5对应的当前质心的距离值小于该样本对象与类簇6对应的当前质心的距离值。相应的,比较模块输出1,则类簇5对应的初始的索引值1*1,类簇6对应的初始的索引值1*0;相应的,二叉树的第3层的第三个节点对应的索引向量如图4所示为10,第3层的第三个节点指示的类簇为类簇5。
[0155]
接着,在二叉树的第3层,后两个节点分别指示类簇4和5,对应一个比较模块。对应于类簇4和5,第一方a利用第一距离分片《d
(t)
》a中样本对象m对应于类簇4和5的两个距离值分片,与第二方b的第二距离分片《d
(t)
》b中该样本对象m对应于类簇4和5的两个距离值分片,执行安全比较算法(即输入第3层的后两个节点对应的比较模块cmpm),得到比较结果,具体为样本对象m与类簇4对应的当前质心的距离值大于该样本对象与类簇5对应的当前质心的距离值。相应的,比较模块输出0,则第3层的第二个节点的索引向量01*0,第3层的第三个节点的索引向量10*0;相应的,二叉树的第二层的第二个节点对应的索引向量如图4所示为0010,第2层的第二个节点指示的类簇为类簇5。
[0156]
在二叉树的第2层,第一个节点指示的类簇等同于第3层第一个节点指示的类簇,为类簇1。第2层的两个节点对应一个比较模块。对应于类簇1和5,第一方a利用第一距离分片《d
(t)
》a中样本对象m对应于类簇1和5的两个距离值分片,与第二方b的第二距离分片《d
(t)
》b中该样本对象m对应于类簇1和5的两个距离值分片,执行安全比较算法(即输入第2层(即图中的layer2)的两个节点对应的比较模块cmpm),得到比较结果,具体为样本对象m与类簇1对应的当前质心的距离值大于该样本对象与类簇5对应的当前质心的距离值。相应的,比较模块输出0,则第2层的第一个节点的索引向量10*0,第2层的第二个节点的索引向量0010*1;相应的,二叉树的第一层的节点对应的索引向量如图4所示为000010,第1层(即图中的layer1)的节点指示的类簇为类簇5。
[0157]
第一方a在得到各个样本对象的根节点,即根节点对应的索引向量的一个分片之后,可以组合得到第一索引分片。同理的第二方b在得到各个样本对象的根节点,即根节点对应的索引向量的另一个分片之后,可以组合得到第二索引分片。
[0158]
之后,在步骤s330,第一方a基于第一特征矩阵xa及第一索引分片《c
(t)
》a,与第二方b执行第二多方安全计算,得到本轮迭代更新后的第一质心分片《μ
(t)
》a,更新后的第二质心分片《μ
(t)
》b由第二方b持有。
[0159]
本步骤中,第一方a基于第一特征矩阵xa及第一索引分片《c
(t)
》a,与第二方b就其持有的第二特征矩阵xb及第二索引分片《c
(t)
》b执行第二多方安全计算,得到本轮迭代更新后的第一质心分片《μ
(t)
》a,且更新后的第二质心分片《μ
(t)
》b由第二方b持有。
[0160]
可以理解的是,第一索引分片《c
(t)
》a和第二索引分片《c
(t)
》b可以联合表征出各样本对象所属的类簇,进而统计出各类簇所包含样本对象的数量,即第一方a可以基于第一索引分片《c
(t)
》a与第二方持有的第二索引分片《c
(t)
》b执行安全计算,统计属于各类簇的样本对象的数量。并且,第一方a基于第一特征矩阵xa及第一索引分片《c
(t)
》a,与第二方b就其持有的第二特征矩阵xb及第二索引分片《c
(t)
》b执行第二多方安全计算,可以确定出属于各类簇的样本对象的特征向量之和的第一和分片,另外,属于各类簇的样本对象的特征向量之
和的第二和分片由第二方b持有,进而,第一方a可以基于属于各类簇的各样本对象的特征向量之和的第一和分片及属于各类簇的样本对象的数量,与第二方b就其持有的第二和分片执行安全矩阵乘法,得到本轮迭代更新后的第一质心分片《μ
(t)
》a。并且得到有第二方b持有的本轮迭代更新后的第二质心分片《μ
(t)
》b。
[0161]
一种情况中,可以通过如下公式(10),表示得到本轮迭代更新后的质心矩阵的过程:
[0162][0163]
其中,χi表示第i个样本对象,ci表示第i个样本对象所属类簇,《i
(t)
{ci=j}》表示第t轮迭代过程中的指示函数,以分片的形式存在,分片分别由第一方a和第二方b持有,如果ci=j则等于1,反之等于0,j属于[1,k]之间的整数。(《c
(t)
》a 《c
(t)
》b)
t
χ可以确定出属于各类簇的样本对象的特征向量之和,1
1*n
(《c
(t)
》a 《c
(t)
》b)可以确定出属于各类簇的样本对象的数量。
[0164]
在第一特征矩阵xa和第二特征矩阵xb为横向切分形式的数据的情况下,对于更新第j个类簇的质心的过程,上述公式(10)可以变形为如下公式(11),
[0165][0166]
在第一特征矩阵xa和第二特征矩阵xb为纵向切分形式的数据的情况下,对于更新第j个类簇的质心的过程,上述公式(10)可以变形为如下公式(12),
[0167][0168]
在第一特征矩阵xa和第二特征矩阵xb为原始特征分片形式的数据的情况下,对于更新第j个类簇的质心的过程,上述公式(10)可以变形为如下公式(13),
[0169][0170]
其中,对于更新第j个类簇的质心的过程中,对于公式(10)和(11)中的分母,可有由第一方a在其本地计算得到,对于可有由第二方b在其本地计算得到,对于和则需要第一方a和第二方b执行安全矩阵乘法,使得第一方a和第二方b分别得到相应的分片。其中,表示第一索引分片中第j类簇对应的索引值分片的转置,表示第二索引分片中第j类簇对应的索引值分片的转置。
[0171]
接着,第一方a基于本地计算所得的与第二方b执行安全矩阵乘法所
得到的的分片和的分片,得到属于第j类簇的样本对象的特征向量之和的第一和分片。同理的,第二方b基于其本地计算所得的其与第一方a执行安全矩阵乘法所得到的的分片和的分片,得到属于第j类簇的样本对象的特征向量之和的第二和分片。
[0172]
对于公式(11)、(12)和(13)中的分子,则需要第一方a基于与第二方b所持有的执行安全计算,统计属于第j类簇的样本对象的数量。其中,一种实现中,可以是第一方a和第二方b均持有该属于各类簇的样本对象的数量。另一种实现中,也可以是第一方a持有第j类簇的样本对象的数量的第一数量分片,第二方b持有第j类簇的样本对象的数量的第二数量分片。
[0173]
由公式(11)、(12)和(13)可知需要执行除法运算,在实际计算过程可以将除法运算转换为乘法运算,相应的,第一方a基于第一和分片及属于各类簇的样本对象的数量,与第二方b持有的第二和分片,执行安全矩阵乘法,得到本轮迭代更新后的第j类簇对应的质心分片。
[0174]
接着,第一方a得到各个类簇的更新后的质心的分片之后,将各个类簇的更新后的质心的分片组合,得到更新后的第一质心分片。同理的,第二方b得到各个类簇的更新后的质心的另一分片之后,将各个类簇的更新后的质心的另一分片组合,得到更新后的第二质心分片。
[0175]
本实施例,第一方与第二方之间执行多方安全计算,实现在保护各方隐私数据的前提下完成数据聚类。并且在距离的计算过程中,第一多方安全计算为基于安全矩阵乘法的计算,实现通过一次矩阵的安全计算过程,即得到表征所有样本对象与各类簇的当前质心的距离的距离矩阵的距离分片,减少聚类过程中的计算量和通信量,并提高数据聚类效率。
[0176]
本说明书实施例中,利用稀疏矩阵乘法计算距离矩阵的分片以及质心分片,优化稀疏场景中计算量过大的情况,适用于稀疏场景的矩阵乘法的安全计算。
[0177]
在一个实施例中,所述任意一轮迭代还包括:
[0178]
步骤41,第一方a基于当前质心矩阵μ
(t-1)
的第一质心分片《μ
(t-1)
》a、本轮迭代更新后的第一质心分片《μ
(t)
》a以及预设误差阈值e,与第二方b执行包括安全比较计算的安全计算,得到本轮迭代更新后的质心矩阵μ
(t)
与当前质心矩阵μ
(t-1)
的差值与预设误差阈值e的比较结果,基于比较结果,确定是否达到预设迭代停止条件。
[0179]
具体的,第一方a可以基于当前质心矩阵μ
(t-1)
的第一质心分片《μ
(t-1)
》a及本轮迭代更新后的第一质心分片《μ
(t)
》a,得到当前质心矩阵μ
(t-1)
与本轮迭代更新后的质心矩阵μ
(t)
的差值的第一差值分片,第二方b基于其持有的当前质心矩阵μ
(t-1)
的第二质心分片《μ
(t-1)
》b及本轮迭代更新后的第二质心分片《μ
(t)
》b,得到当前质心矩阵μ
(t-1)
与本轮迭代更新后的质心矩阵μ
(t)
的差值的第二差值分片。进而,第一方a基于第一差值分片及预设误差阈值e,与第二方b持有的第二差值分片执行安全比较计算,得到比较结果。进而基于比较结果,确定是否达到预设迭代停止条件。
[0180]
其中,若比较结果表征本轮迭代更新后的质心矩阵与当前质心矩阵的差值,不大于预设误差阈值,则确定达到预设迭代停止条件,若比较结果表征本轮迭代更新后的质心矩阵与当前质心矩阵的差值,大于预设误差阈值,则确定未达到预设迭代停止条件。
[0181]
具体的可以通过如下公式(14),表示:
[0182][0183]
其中,表示,安全计算当前质心矩阵μ
(t-1)
与本轮迭代更新后的质心矩阵μ
(t)
的差值,均表示安全比较计算当前质心矩阵μ
(t-1)
与本轮迭代更新后的质心矩阵μ
(t)
的差值,与预设误差阈值e的大小。
[0184]
在一个实施例中,所述任意一轮迭代还可以包括:
[0185]
步骤51,第一方a确定迭代轮次是否达到预设迭代轮次阈值,基于所确定结果,确定是否达到预设迭代停止条件。可以理解的,第一方a(和/或第二方b)可以预存有预设迭代轮次阈值,在更新质心矩阵,即第一方a得到更新后的第一质心分片,第二方b得到更新后的第二质心分片,确定当前的迭代轮次是否达到预设迭代轮次阈值,得到确定结果,继而,基于所确定结果,确定是否达到预设迭代停止条件。其中,若确定当前的迭代轮次达到预设迭代轮次阈值,则确定达到预设迭代轮次阈值,若确定当前的迭代轮次未达到预设迭代轮次阈值,则确定未达到预设迭代轮次阈值。
[0186]
其中,在确定达到预设迭代轮次阈值后,可以结束迭代过程,执行之后的聚类过程,在确定未达到预设迭代轮次阈值,则可以继续执行下一轮迭代。
[0187]
在一个实施例中,所述方法还包括:
[0188]
步骤61,若第一方a确定达到预设迭代停止条件,则根据第一索引分片确定各样本对象所属的类簇;和/或,基于更新后的第一质心分片,确定各类簇的质心。
[0189]
其中,若第一方a确定本轮迭代更新后的质心矩阵与当前质心矩阵的差值不大于预设误差阈值,进而确定达到预设迭代停止条件,可以认为本轮次迭代更新后的质心矩阵与当前质心矩阵相同,相应的,第一方a可以根据第一索引分片,与第二方的第二索引分片确定各样本对象所属的类簇。或者,第一方a也可以基于更新后的第一质心分片与第二方更新后的第二质心分片,确定各类簇的质心。后续的,基于所确定的各类簇的质心,确定各样本对应所属的类簇。
[0190]
若第一方a确定当前的迭代轮次达到预设迭代轮次阈值,进而确定达到预设迭代轮次阈值,则第一方a可以基于更新后的第一质心分片与第二方更新后的第二质心分片,确定各类簇的质心。后续的,基于所确定的各类簇的质心,确定各样本对应所属的类簇。
[0191]
上述内容对本说明书的特定实施例进行了描述,其他实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行,并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要按照示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的,或者可能是有利的。
[0192]
相应于上述方法实施例,本说明书实施例,提供了一种基于隐私保护的多方联合数据聚类的装置500,涉及第一方和第二方,所述第一方和第二方分别持有第一特征矩阵和第二特征矩阵,第一和第二特征矩阵用于构成待聚类的所有样本对象的总特征矩阵;所述
装置部署于第一方,其示意性框图如图5所示,包括执行多轮迭代的第一安全计算模块、第一安全比较模块和第二安全计算模块,其中任意一轮迭代包括:
[0193]
第一安全计算模块510,配置为基于第一特征矩阵及当前质心矩阵的第一质心分片,与第二方执行基于安全矩阵乘法的第一多方安全计算,得到距离矩阵的第一距离分片,所述距离矩阵表征所有样本对象与各类簇的当前质心的距离,所述距离矩阵的第二距离分片由第二方持有;
[0194]
第一安全比较模块520,配置为基于所述第一距离分片,与第二方就其持有的第二距离分片执行安全比较计算,得到类簇索引矩阵的第一索引分片,其中,所述类簇索引矩阵表征所有样本对象各自所属的类簇,所述类簇索引矩阵的第二索引分片由第二方持有;
[0195]
第二安全计算模块530,配置为基于所述第一特征矩阵及所述第一索引分片,与第二方执行第二多方安全计算,得到本轮迭代更新后的第一质心分片,更新后的第二质心分片由第二方持有。
[0196]
在一种可选实施方式中,所述第一安全计算模块510,包括:
[0197]
第一确定单元(图中未示出),配置为基于所述第一质心分片,与第二方持有的第二质心分片,执行包括安全矩阵乘法的安全计算,确定第一中间结果;
[0198]
第二确定单元(图中未示出),配置为基于所述第一特征矩阵和所述第一质心分片进行本地运算,确定第二中间结果;
[0199]
第三确定单元(图中未示出),配置为基于所述第一特征矩阵,与第二方持有的第二质心分片执行安全矩阵乘法,确定第三中间结果;
[0200]
第四确定单元(图中未示出),配置为基于所述第一质心分片,与第二方持有的第二特征矩阵执行安全矩阵乘法,确定第四中间结果;
[0201]
第五确定单元(图中未示出),配置为基于所述第一中间结果、第二中间结果、第三中间结果和第四中间结果,确定所述第一距离分片。
[0202]
在一种可选实施方式中,所述第一特征矩阵为所述所有样本对象中第一部分样本对象的全部特征构成的矩阵,所述第二特征矩阵为所述所有样本对象中第二部分样本对象的全部特征构成的矩阵,所述当前质心矩阵和第一质心分片的维度均为k*d维,其中d为所述全部特征的维度,k为预设的类簇数目。
[0203]
在一种可选实施方式中,所述第一特征矩阵为所述所有样本对象的第一部分特征构成的矩阵,所述第二特征矩阵为所述所有样本对象的第二部分特征构成的矩阵;
[0204]
所述当前质心矩阵包括对应于所述第一部分特征的第一子矩阵和对应于所述第二部分特征的第二子矩阵;所述第一质心分片包括所述第一子矩阵的第一方分片和所述第二子矩阵的第一方分片;所述第二质心分片包括所述第一子矩阵的第二方分片和所述第二子矩阵的第二方分片;
[0205]
所述第三确定单元,具体配置为基于所述第一特征矩阵,与第二方持有的所述第一子矩阵的第二方分片执行安全矩阵乘法,得到第三中间结果;
[0206]
所述第四确定单元,具体配置为基于所述第二子矩阵的第一方分片,与第二方持有的所述第二特征矩阵执行安全矩阵乘法,得到第四中间结果。
[0207]
在一种可选实施方式中,所述第一特征矩阵为所述所有样本对象的全部特征的第一特征分片构成的矩阵,所述第二特征矩阵为所述所有样本对象的全部特征的第二特征分
片构成的矩阵,所述当前质心矩阵和第一质心分片的维度均为k*d维,其中d为所述全部特征的维度,k为预设的类簇数目。
[0208]
在一种可选实施方式中,所述安全矩阵乘法是基于秘密分享协议的通用矩阵乘法,或者是基于同态加密协议和秘密分享协议的稀疏矩阵乘法。
[0209]
在一种可选实施方式中,所述安全矩阵乘法是基于同态加密协议和秘密分享协议的稀疏矩阵乘法;所述第三确定单元,具体配置为获得第二质心分片密文,第二质心分片密文是第二方利用第一目标公钥对第二质心分片同态加密所得的;
[0210]
计算所述第一特征矩阵与所述第二质心分片密文的乘积,得到第一乘积密文;
[0211]
生成第一随机矩阵,作为所述第一乘积密文的第一结果分片,将所述第一结果分片作为所述第三中间结果;
[0212]
基于所述第一乘积密文和所述第一随机矩阵,确定所述第一乘积密文的第二结果分片密文,将其发送至所述第二方,以使第二方解密第二结果分片密文,得到第二结果分片,作为与所述第三中间结果对应的第二方中间结果。
[0213]
在一种可选实施方式中,所述安全矩阵乘法是基于同态加密协议和秘密分享协议的稀疏矩阵乘法;所述第三确定单元,具体配置为利用第二目标公钥加密所述第一特征矩阵,得到第一矩阵密文,将其发送至所述第二方;
[0214]
从所述第二方接收第三结果分片密文,对所述第三结果分片密文进行解密,得到第三结果分片明文,作为所述第三中间结果,其中,所述第三结果分片密文是,所述第二方基于第二乘积密文和所述第二方所生成的第二随机矩阵而确定的,所述第二乘积密文是所述第一矩阵密文与第二方持有的第二质心分片的乘积结果,所述第二随机矩阵作为所述第二方持有的与所述第三中间结果对应的第二方中间结果。
[0215]
在一种可选实施方式中,所述第一安全比较模块520,配置为基于预设的类簇数量k构建二叉树的叶子节点;
[0216]
对于任意样本对象,针对二叉树的各层节点指示的类簇中的相邻两个类簇,利用所述第一距离分片中该样本对象对应于该两个类簇的两个距离值分片,与第二方执行安全比较算法,得到距离更近的类簇作为下一层节点,直到达到根节点;
[0217]
根据各个样本对象的根节点,确定所述第一索引分片。
[0218]
在一种可选实施方式中,所述第二安全计算模块530,具体配置为基于所述第一特征矩阵和所述第一索引分片,与第二方持有的第二特征矩阵和第二索引分片进行安全矩阵乘法,确定出属于各类簇的样本对象的特征向量之和的第一和分片,所述属于各类簇的样本对象的特征向量之和的第二和分片由所述第二方持有;
[0219]
基于所述第一索引分片与第二方执行安全计算,统计属于各类簇的样本对象的数量;
[0220]
基于所述第一和分片及属于各类簇的样本对象的数量,与所述第二方就其持有的第二和分片执行安全矩阵乘法,得到本轮迭代更新后的第一质心分片。
[0221]
在一种可选实施方式中,所述装置还包括:
[0222]
第二安全比较模块(图中未示出),配置为基于所述当前质心矩阵的第一质心分片、本轮迭代更新后的第一质心分片以及预设误差阈值,与第二方执行安全比较计算,得到本轮迭代更新后的质心矩阵与所述当前质心矩阵的差值与所述预设误差阈值的比较结果,
基于比较结果,确定是否达到预设迭代停止条件。
[0223]
在一种可选实施方式中,所述装置还包括:
[0224]
第一确定模块(图中未示出),配置为确定迭代轮次是否达到预设迭代轮次阈值,基于所确定结果,确定是否达到预设迭代停止条件。
[0225]
在一种可选实施方式中,还包括:
[0226]
第二确定模块(图中未示出),配置为若达到预设迭代停止条件,则根据所述第一索引分片确定各样本对象所属的类簇;和/或,基于更新后的第一质心分片,确定各类簇的质心。
[0227]
上述装置实施例与方法实施例相对应,具体说明可以参见方法实施例部分的描述,此处不再赘述。装置实施例是基于对应的方法实施例得到,与对应的方法实施例具有同样的技术效果,具体说明可参见对应的方法实施例。
[0228]
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行本说明书所提供的所述基于隐私保护的多方联合数据聚类的方法。
[0229]
本说明书实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现本说明书所提供的所述基于隐私保护的多方联合数据聚类的方法。
[0230]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于存储介质和计算设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
[0231]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
[0232]
以上所述的具体实施方式,对本发明实施例的目的、技术方案和有益效果进行了进一步的详细说明。所应理解的是,以上所述仅为本发明实施例的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献