基于奇异值分解的本地差分隐私保护的频繁项集挖掘方法
技术领域
本发明属于信息安全
技术领域
。背景技术
随着社会经济和科学技术的发展,包括计算机技术、通信技术、传感器技术等在内的信息技术快速发展和提高,促进了人们现代家庭生活朝着更加便捷、舒适的方向发展。智能家居一词也从概念走向现实,成为人们耳熟能详的词汇。智能家居的智能性主要体现在相关智能设备的自动化执行过程中,通常情况下,存在一个传感器感知触发条件,当条件被满足时,系统会指定对应设备执行相应动作。这样的触发-动作组合是智能家居中智能化实现的基石,系统需要设置合理的组合来帮助用户快速部署智能化应用,同时也需要从用户端学习新的组合用于后续的改进和优化。若将触发和动作都看作用户所拥有的项目,那么在广大用户拥有的触发-动作组合中寻找的频繁出现的组合,也就对应着数据集中的频繁项集。
频繁项集是数据之间的一种常见的关联特性,其具体是指数据集中频繁出现的若干个项目的集合,但是频繁项集挖掘通常需要对用户原始数据进行收集和分析。如何在保护用户隐私信息的同时,实现频繁项集的挖掘,这不仅是各类智能应用得以实现的关键,也是其进一步发展面临的技术难题。
近年来,差分隐私作为一种对隐私保护的严格定义被提出。差分隐私通过对用户个人数据添加满足特定性质的噪声,在保留总体数据统计信息的同时,实现第三方无法推测出个人信息的目的。但是传统差分隐私需要可信的服务器,并且该服务器仍然可以观察到用户的原始数据。为了避免可信第三方服务器的问题,在用户端添加噪声的本地差分隐私技术被提出。用户向服务器上传干扰之后的信息从而避免将原始信息暴露给第三方服务器。
现有技术提出基于频繁项集都是由频繁项目组成的假设来进行频繁项集候选集的猜测,首先在满足本地差分隐私的定义下寻找数据集中的频繁项目,然后根据假设构造频繁项集候选集发送给用户,用户上传个人拥有的项集,服务器通过聚合计算确定最终的top-k频繁项集结果。然而该方法忽略了频繁项目集合可能是由相对不够频繁的频繁项目组成的可能性,会导致部分高关联的频繁项集被忽略,估计结果不准确。
还有人提出了CALM方法,该方法通过将用户分配到设定的边缘表中,用户干扰上传边缘表中对应属性的值,服务器通过聚合恢复得到多属性的联合分布结果。但是该方法用户需要上传多数据,不仅分割了隐私预算导致噪声增大,也增加了通信开销。
如何实现一种基于本地差分隐私的频繁挖掘方法,使其能实现数据隐私、挖掘精度、通信开销三者之间的权衡,是一个难题。
发明内容
发明目的:为了解决上述现有技术存在的问题,本发明提供了一种基于奇异值分解的本地差分隐私保护的频繁项集挖掘方法。
技术方案:本发明提供了一种基于奇异值分解的本地差分隐私保护的频繁项集挖掘方法,具体包括如下步骤:
步骤1:对智能家居用户持有的项目的频次进行估计,将频次按照由大到小排列,选择频次排名前K的项目作为频繁项目并依次编号;
步骤2:将用户分成K组,并将步骤1中选择的K个频繁项目进行两两组合,每一组为一个频繁项目集合,根据频繁项目集合建立K*K维的初始矩阵M;设置初始的频繁项集组FIS,此时FIS为空;
步骤3:令k=1;
步骤4:对M进行奇异值分解,得到两个正交矩阵U和V;服务器将U和VT发送给第k组用户,T为矩阵转置;
步骤5:第k组用户中的第r个用户根据收到的U和VT、FIS和该用户持有的频繁项目,建立与第r个用户对应的奇异矩阵,对该奇异矩阵进行干扰,得到干扰信息,并将该干扰信息上传至服务器,r=1,2,…,R,R为第k组用户中用户的总个数;
步骤6:服务器对收到的R个干扰信息进行聚合分析,从而挖掘出最频繁的频繁项目集合,放入FIS中,并将M中与FIS中频繁项目集合对应的元素的值设置为0;
步骤7:令k=k+1,判断k是否大于K,若是则停止计算,将FIS作为挖掘结果;否则返回步骤4。
进一步的,所述步骤1具体为:将智能家居用户分为三组,第一组的每个用户随机选择一个项目进行干扰,并将干扰信息上传至服务器,服务器对第一组用户发送的干扰信息进行聚合分析,从而得到频次排名为前2*K的项目,这些项目构成候选项目集合;服务器将候选项目集合发送至第二组用户,第二组的每个用户计算自身拥有的项目构成的集合与候选项目集合的交集,并将其中的项目个数作为数据进行干扰,并将干扰信息上传至服务器,服务器对第二组用户发送的干扰信息进行聚合恢复,从而得到抽样数,服务器将抽样数和候选项目集合发送至第三组用户;第三组的每个用户计算自身拥有的项目构成的集合与候选项目集合的交集J,若J中的项目个数小于抽样数,则在J中添加虚拟项目,使得J中项目的个数等于抽样数,第三组中的每个用户从自身拥有的项目构成的集合与候选项目集合的交集中随机选择一个项目进行干扰,并将干扰信息上传至服务器,服务器对第三组用户发送的干扰信息进行聚合恢复,从而得到所有用户持有的项目的频次估计。
进一步的,所述步骤2中根据第i个频繁项目和第j个频繁项目组成的频繁项目集合,计算得到矩阵M中第i行第j列的元素的值:
m(i,j)=min(f(i),f(j))
其中,min(.)为最小值函数,f(i)为第i个频繁项目的频次,f(j)为第j个频繁项目的频次,i=1,2,…,K,j=1,2,…,K。
进一步的,所述步骤5具体为:
步骤3.1:将第r个用户持有的频繁项目与FIS中频繁项目集合逐个进行比较,如果第r个用户持有的频繁项目构成的集合与某个频繁项目集合相同,则将该将该用户对应的奇异矩阵Sr中的元素均设为0,并停止比较,转步骤3.3;如果用户所持有的频繁项目构成的集合与某个频繁项目集合的交集中元素个数为1或0,则第r个用户持有的频繁项目不变;如果第r个用户所持有的频繁项目构成的集合与某个频繁项目集合的交集中元素个数为2,则在用户所持有的频繁项目中删除交集中的任意一个频繁项目,从而更新客户所持有的频繁项目,然后进行下一轮比较,直至FIS中所有的频繁项目集合均被比较完毕,转步骤3.2;
步骤3.2:采用如下K*K维的矩阵Mr表示更新后用户所持有的频繁项目:
其中,Mr(x,y)表示Mr中第x行第y列的元素;x=1,2,...K;y=1,2,...K;Q为更新后用户所持有的频繁项目的编号集合;
根据U和VT,计算第r个用户的奇异矩阵:
Sr=U+*Mr*VT+
其中U+=UT,VT+=V;
步骤3.3:将Sr映射到值域v上,v∈[-1,1],对映射有Sr的值域v进行干扰,得到干扰后的信息第r个用户以概率p将t1上传至服务器,或者以概率1-p将t2上传至服务器,ε为隐私参数。
进一步的,所述步骤6具体为:
服务器对收到的干扰信息进行聚合分析得到估计矩阵根据如下公式计算得到K*K维的矩阵
将矩阵M中与中最大元素值所在位置相同的元素对应的频繁项目集合加入至频繁项集组FIS中。
有益效果:
(1)用户的项目集合信息隐私得到了满足严格的本地差分隐私定义的保护;
(2)频繁项集的挖掘结果准确,不会忽略由非最频繁项目组成的频繁项集;
(3)降低了用户端同服务器端之间的通信开销。
附图说明
图1为本发明的流程图。
具体实施方式
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
本发明基于本地差分隐私框架,提出一种全新的隐私频繁项集挖掘方法,能够在数据隐私、挖掘精度、通信开销三者之间进行最优权衡。基本思想是:首先在分布式的用户端,利用低维度的奇异值矩阵来表示该用户原始的高维度敏感数据矩阵;其次在服务器端,收集不敏感的奇异值并进行恢复最终得到频繁项集组的准确估计。
如图1所示本实施例提供了一种基于奇异值分解的本地差分隐私保护的频繁项集挖掘方法:
步骤1:频繁项目频次估计
用户拥有的项目可能是多种多样的,若将所有可能出现的项目作为输入域,由于差分隐私误差和值域范围呈线性关系,会导致估计的误差过大,进而影响数据实用性。因此,候选项目的范围需要被缩小。
故本发明将使用智能家居的用户分为三组,第一组的每个用户随机选择任意一个项目进行扰动上传至服务器,服务器对收到信息进行聚合分析,从而得到频次排名为前2*k的项目,将这些项目组合成项目集合,将该项目集合作为候选项目集合;服务器将该候选项目集合发送至第二组用户,第二组的每个用户计算自身拥有的项目与候选项目集合的交集,并将该交集中包含的项目的个数作为数据进行扰动后上传,服务器对第二组用户发送的扰动后的数据进行聚合恢复后确定抽样数,服务器将抽样数和候选项目集合发送至第三组用户;第三组中的每个用户计算自身拥有的项目与选项目集合的交集,若交集中项目的个数小于抽样数,则在该交集中添加虚拟项目,使得该交集中项目的个数等于抽样数,第三组中的每个用户从对应的交集中随机选择一个项目进行干扰上传至服务器,服务器对收到的信息进行聚合恢复,服务器能够对用户持有的的频繁项目进行频次估计得到频繁top-K频繁项目,即频次排名在前K名的项目。
步骤2:将用户分成K组,服务器端利用频繁项目估计结果,建立初始矩阵,对此矩阵进行奇异值分解,得到左右矩阵(正交矩阵或左右奇异矩阵)发送至第k组用户,此时k=1,设置初始的频繁项集组FIS,此时FIS为空;
本发明的最终的目的是得到包括top-K(排名前K的频繁项目)的频繁项集组,因此需要将用户分为K组,i,j记为两个不同的频繁项目,f(i),f(j)为分别表示第i个频繁项目的频次和第j个频繁项目的频次,i=1,2,...,K,j=1,2,...,K。服务器根据步骤1得到的频繁项目的频次估计,根据第i个频繁项目与j个频繁项目组成的频繁项目集合,计算得到矩阵M中第i行第j列的元素的值m(i,j)=min(f(i),f(j))。之所以选取两个项目频次的较小值作为矩阵元素,是因为对于任一项目i来说,当其出现的频率为f(i)时,包含它的频繁项目集合频次最高也只能是小于等于f(i)。为了保证估计的准确性,取得各项目集合频次可能出现的最大值;利用奇异值分解M=U*∑*VT得到U,V两个正交矩阵,∑为对角矩阵。为了降低通信开销,本实施例只取n=1个奇异值来近似矩阵得到阶数分别为1*n和n*1的U和VT发送给第一组用户,T为矩阵转置。
步骤3:第k组用户端根据本地拥有的频繁项目和FIS建立矩阵Mr(k=1时,FIS为空,FIS对用户端根据本地拥有的频繁项目不产生影响),再根据U和VT建立奇异值矩阵,并对该奇异值矩阵进行干扰后上传至服务器,本实施例中的干扰为添加差分隐私噪声后;
步骤3.1:将第r个用户持有的频繁项目与FIS中频繁项目集合逐个进行比较,如果第r个用户持有的频繁项目为某个频繁项目集合,则将该将该用户的奇异值矩阵Sr中的元素均设为0,并停止比较,转步骤3.3;如果用户所持有的频繁项目与某个频繁项目集合的交集的个数为1或0,则第r个用户持有的频繁项目不变;如果交集的个数为2,为了避免其他包含频繁该项目的频繁项集的估计受到影响,在第r个用户持有的频繁项目在交集中随机删除一个频繁项目(例如交集中有a,b两个频繁项目,而客户有a,b,d三个频繁项目,则在a,b,d中随机删除a,或随机删除b),从而更新客户所持有的频繁项目,然后进行下一轮比较;直至FIS中所有的频繁项目集合均被比较完毕,转步骤3.2;此步骤中仍然保留原始的用户持有的频繁项目;
步骤3.2:并采用如下K*K维的矩阵Mr表示用户所持有的频繁项目:
其中,Mr(x,y)表示Mr中第x行第y列的元素;x=1,2,...K;y=1,2,...K;Q为更新后用户所持有的频繁项目编号集合;此矩阵中各位置元素都有值,而不是如∑一样的对角矩阵;例如更新后用户所拥有的频繁项目为a,d;而K个频繁项目按照频次排名依次为a,b,c,d,编号依次为1234;用户所拥有的频繁项目编号为1,4;则在Mr矩阵中,11,14,41,44元素值为1,其余为0。
第k组第r个用户收到U和VT后根据正交矩阵的性质得到其对应的Moore-Penrose广义逆矩阵U+=UT,VT+=V;计算第r个用户的奇异矩阵:
Sr=U+*Mr*VT+
步骤3.3:本实施例中由于U和VT的阶数分别是1*n和n*1,所以Sr仅包含一个元素。用户需要对Sr进行差分隐私干扰,干扰方式如下:首先根据左右奇异矩阵U和VT得到奇异值的值域D,将值域D投影到[-1,1]之间,用户将Sj映射到对应的值域v∈[-1,1],随机响应机制以p的概率上传干扰后的信息或者以1-p的概率上传干扰后的信息ε为隐私参数;因此用户仅需向服务器发送1bit数据,大大降低了通信开销。其中p和1-p的定义如下:
步骤4:k=k+1,判断k是否大于K,若是则停止计算,将FIS作为最终的挖掘结果,也既最终的top-K频繁项目集合;否则,服务器端对收到的干扰信息进行聚合分析,挖掘出最频繁的频繁项目集合并放入FIS中,并更新初始矩阵和FIS,并返回步骤3;
服务器首先对收到的干扰信息进行聚合估计,恢复得到估计矩阵然后计算得到矩阵与矩阵M的维数相同,选择中最大的元素,将该最大的元素值在矩阵中的位置对应到矩阵M中,将矩阵M中该位置下的元素对应的频繁项目集合作为加入至频繁项集组FIS中。将矩阵M中与FIS中频繁项目集合对应的元素的值设置为0,对更新后的M进行奇异值分解得到新的正交矩阵,将FIS和新的正交矩阵一同发送给第k组用户。
上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式,在本领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。