一种基于差分隐私保护的数据发布方法
技术领域
本发明属于数据分类技术领域,具体涉及一种基于差分隐私保护的数据发布方法。
背景技术
目前,云计算与移动互联网技术与应用日趋成熟,数据共享也是大势所趋,同时数据隐私安全问题也日渐严峻。对于数据拥有者来说,保护发布数据中的隐私信息应当是其首要考虑的问题。尽管业界已经对最险恶的数据盗窃采取了应对措施,但许多计算机系统在某些层面上依然存在易受攻击的弱点。当今的企业,很难对所有的数据信息系统提供充分的保护,从而在数据隐私方面留下巨大漏洞。企业中一些最机密或敏感的信息,如身份证号码、手机号码、银行卡号及其他财务信息,面临着隐私泄露的风险。
然而,在很多应用场合,我们不得不发布一些含有敏感信息的数据,如商场的交易记录或者医院的医疗数据或者用户的手机号码。因此,如何在数据共享的同时保护用户的隐私成为了目前数据隐私保护领域的一大难题。
目前,数据的隐私发布方法有许多,K-匿名法是其中之一,它通过删除数据表中的一些标识符属性信息,保证每种属性至少对应K条数据,以此来避免信息泄漏的风险。对于普通的攻击者而言确实起到了保护作用,然而当攻击者掌握了相当的背景知识之后,这种方法就显得不是那么有效。2006年,Dwork提出了差分隐私保护框架,这是一种兼顾可用性和强隐私保护的数据发布方法,在抵御具有背景知识的攻击上效果尤其显著。虽然它提供了强有力的隐私保障,却牺牲了数据的准确度和可用性,而这种牺牲有时候是得不偿失的。因此现有的差分隐私保护的数据发布方法需要改进。
发明内容
本发明所要解决的技术问题是避免数据直接发布时所带来的信息泄漏的风险,为此提供一种基于差分隐私保护的数据发布方法,其能够对数据进行隐私保护的同时保证数据的高可用性及准确性。
专业术语及其约束:
1.k-项集:每个元素由k个字段组成,这些元素所构成的集合为k-项集,如{ab,cd,ef,...}为2-项集。
2.支持度计数:在数据集中,每个数据字段所出现的次数。
3.噪声支持度计数:添加过噪声之后的支持度计数。
4.隐私预算:通常由使用者定义,用来控制数据隐私保护的强度,也可表示为攻击者攻击成功的概率,本发明中用ρ表示。
5.噪声参数:差分隐私保护方法中,需要向数据集中添加噪声,噪声的大小由该参数决定,本发明中用ε表示。
6.全局敏感度:设有函数f(D)→d,其输入为数据集D输出为向量d,对于任意的邻接数据集D、D′有max||f(D)-f(D′)||为其全局敏感度。
本发明的技术方案具体为一种基于差分隐私保护的数据发布方法,包括如下步骤,
步骤1、对待发布的数据进行预处理,得到可用数据集D和所有1-项集及其支持度计数集合C={t1,t2,...tn};
步骤2、根据用户定义的隐私预算ρ确定噪声参数ε1,向集合C中添加拉普拉斯噪声,并进行初步的约束性处理,得到C′={t′1,t′2,...t′n};
步骤3、根据添加的噪声对数据集D进行处理,若ti>ti′则通过指数机制从不包含项集i的记录中选择(ti-t′i)个记录添加i,若tj<t′j则通过指数机制从包含项集j的记录中选择(t′j-tj)个记录添加j,若tq=t′q则保持不变,最终得到数据集D′;
步骤4、将数据集D′中的1-项集进行组合,得到所有m-项集(m=1,2,...,n)及其支持度计数集合S;
步骤5、使用步骤2中的方式对S集合中的支持度计数集合添加拉普拉斯噪声,得到S′;
步骤6、根据用户需求对S′进行一致性约束处理,以达到数据的可用性,得到满足差分隐私的匿名数据集,并最终发布。
进一步,上述步骤2中根据用户定义的隐私预算ρ确定噪声参数ε1的计算过程如下:攻击者对支持度系数攻击成功的概率可表示为
其中ε1为噪声参数,为达到用户需求,可得不等式:
求解ε1,得到其最优值为2ln2(1-ρ)。
上述步骤2中所述初步的约束性处理,具体方法如下:
设C={t1,t2,...tk},添加拉普拉斯噪声完毕,由噪声序列产生的方式可知ti(i=1,2,...,n)的取值大部分为非正整数行,令f(x)=||(x-C)2||,求解下列最优化问题:
Minf(x)
s.t.x∈N*,
可得C′=x。
步骤3中,发布的k-项集是由加噪1-项集改造的数据集D′产生,而不是直接从原数据集得出。
步骤3中通过指数机制从不包含项集i的记录中选择(ti-t′i)个记录添加i的过程如下:
设记录r有n个项集,每个项集的支持度计数为mn,则取Q(D,r)为可用性函数,即从D中选出记录r的可能性,函数Q(D,r)的全局敏感度为n,指数机制下从集合C中选出记录r的概率为:
其中ri是为此条记录中的第i个模式,ε为选择记录r的隐私预算,按照此概率来进行用户记录的选择。
步骤3中通过指数机制从包含项集j的记录中选择t′j-tj个记录添加j的过程如下:
设记录r有n个项集,每个项集的支持度计数为m
n,则取
Q(D,r)为可用性函数,即从D中选出记录r的可能性,函数Q(D,r)的全局敏感度为n,指数机制下从集合C中选出记录r的概率为:
其中rj是为此条记录中的第j个模式,ε为选择记录r的隐私预算,按照此概率来进行用户记录的选择。
步骤4中由k-项集产生k+1-项集的过程如下:为了得到用户所需的m-项集,可以将两个仅有一个元素不同的k-项集进行组合,即可得到k+1-项集,再将两个仅有一个元素不同的k+1-项集组合,得到k+2-项集,重复此步骤,最终得到所需的m-项集;若合并时不存在这样的两个k-项集,则认为不存在满足要求的k+1-项集。
与现有技术相比,本发明具有以下优点:
1、根据用户的隐私保护需求以及数据规模两者结合来确定添加噪声的隐私预算,使得添加的噪声不会过小,能满足数据保护的目的;也不会过大,能保障数据的准确性。即最大限度的保护数据不被泄露的同时,维持数据的准确性及平稳性。
2、发布的k-项集是由加噪1-项集改造的数据集D′产生,而不是直接从原数据集得出,这使得攻击者无法通过对比两次发布的数据差异来获得用户信息。
3、对加噪后的数据进行一致性约束处理,避免了发布的数据是不符合使用规则的,数据的可用性得到了极大的保证。
附图说明
图1为基于差分隐私保护数据发布方法流程图。
图2为添加拉普拉斯噪声的流程图。
具体实施方式
现结合附图和具体实施例对本发明做进一步详细说明。本发明提出基于差分隐私保护的数据发布方法,如图1所示,包括如下步骤:
步骤1、对待发布的数据进行预处理得到可用数据集D和所有1-项集及其支持度计数集合C={t1,t2,...tn}。
步骤2、根据用户定义的隐私预算ρ确定噪声参数ε1,向集合C中添加拉普拉斯噪声,并进行初步的约束性处理,得到C′={t′1,t′2,...t′n}。
步骤3、根据添加的噪声对数据集D进行处理,若ti>t′i则通过指数机制从不包含项集i的记录中选择(ti-t′i)个记录添加i,若tj<t′j则通过指数机制从包含项集j的记录中选择(t′j-tj)个记录添加j,若tq=t′q则保持不变,最终得到数据集D′。
步骤4、将数据集D′中的1-项集进行组合得到所有m-项集(m=1,2,...,n)及其支持度计数集合S;
步骤5、使用步骤2中的方式对S集合中的支持度计数集合添加拉普拉斯噪声,得到S′;
步骤6、根据用户需求,对S′进行一致性约束处理,以达到数据的可用性,得到满足差分隐私的匿名数据集,并最终发布。
步骤2中,根据下式向集合C中的元素添加拉普拉斯噪声,添加的流程如图2所示:
C′(r)=C(r)+Lap(l/2ln2(1-ρ))
添加的噪声序列L={l1,l2,...,ln}是符合拉普拉斯分布的一组序列,其密度函数为:
在本发明中μ=0,b=l/ε1。
其中C′(r)为噪声支持度计数,C(r)为真实的支持度计数,ρ为用户所能接受攻击数据成功的最大概率,l是对数据集D进行查询时的全局敏感度。
其中Lap(l/2ln2(1-ρ))是保护参数为2ln2(1-ρ)的拉普拉斯噪声,推导过程如下:
在拉普拉斯机制中,引入的参数越小,噪声也越大,保护效果越好,但是数据的误差更大,影响了数据的准确性。为此我们不得不在达到保护数据目的的前提下增大参数,以保证数据的准确性。攻击者对支持度系数的攻击往往通过count查询方式,其成功的概率可表示为
其中ε1为用户的噪声参数,为达到用户需求可得不等式:
解得ε1最优值为2ln2(1-ρ)。进行初步的约束处理过程如下:
设C={t1,t2,...tk}已经加噪完毕,由噪声序列产生的方式可知,ti(i=1,2,...,n)的取值大部分为非正整数行。令f(x)=||x-C||2。求解下列最优化问题:
Min f(x)
s.t.x∈N*。
可得C′=x。
步骤3中,通过指数机制从不包含项集i的记录中选择(ti-t′i)个记录添加i的过程如下:
使用指数机制的目的正是为了保证模式的真实支持度计数不能泄露给数据分析者,其关键之处在于设计可用性函数Q(D,r),即从D中选出记录r的可能性。设记录r有n个项集,每个项集的支持度计数为m
n,则取
由于从数据集D中添加或删除一条记录,影响每个项集的支持度计数至多为1,根据以上可知函数Q(D,r)的全局敏感度为n,由此可以计算出,指数机制下从集合C中选出记录r的概率,表示如下:
其中ri是为此条记录中的第i个模式,ε为选择记录r的隐私预算。按照此计算得出的概率来进行用户记录的选择。
通过指数机制从包含项集j的记录中选择(t′j-tj)个记录添加j的过程中指数机制选择的方法与上述项集i的方法相同,此处不再赘述。
步骤4中,由k-项集产生k+1-项集的过程:
为了得到用户所需的m-项集,可以将两个仅有一个元素不同的k-项集进行组合,即可得到k+1-项集,再将两个仅有一个元素不同的k+1-项集组合,得到k+2-项集,重复此步骤,最终得到所需的m-项集。若合并时不存在这样的两个k-项集,那么显然不存在满足要求的k+1-项集。
例如:某超市交易记录数据表如下:
表1
步骤1,将表1即预发布的数据集D进行预处理,隐藏购物者信息,只保留商品列进行操作,得到所有1-项集及其支持度计数集合C如表2所示。
表2
步骤2,设攻击者攻击成功概率ρ=0.01,由表1可知,每个用户ID所购买商品数量为7,所以删除一条记录将会对7条结果产生影响,所以全局敏感度系数l=7。因此,向表2中的计数添加的满足拉普拉斯分布的噪声为:
Lap(7/2ln2(1-0.01))
其中拉普拉斯分布的概率密度函数为:
实际应用中μ通常取0,b=7/2ln2(1-0.01)。加噪之后的计数如表3所示:
表3
在现实生活中,计数都是正整数,表3中的数据显然不符合要求,一般数据处理到这一步虽然起到了保护作用,但是数据的可用性却遭到严重破坏。因为这样的数据很难被使用,所以必须对其进行初步约束性处理。
通过计算
Min(x1-15.37328)2+(x2-14.74787)2+…+(x20-0.865363)2
s.t.x1+x2+…+x20=175(共有25位用户,每个用户购买7件商品)
x1,x2,x3,...,x20∈N*
所求得的解即为符合实际计数标准的结果C’,如表4所示
表4
步骤3,对照表4(即C′={t′1,t′2,...t′n})与表2(即C={t1,t2,...tk})的差值,对表1(即数据集D)进行修改,正数则添加一条购买记录,负数则删除一条购买记录。具体过程如下:
两表差值为0的如heineken,跳过此步骤保持不变,差值小于0的如olives在C′中的计数比在C中少1,因此需从数据集D中删除一条olives的购买记录。
购买olives的用户有0、1、3、4号等,0号用户被选择到的概率为:
其中Q(D,0)=12+12+7+12+9+14+10是0号用户购买商品的支持度计数总和。其购买的商品bourbon、corned_b、ham、hering、ice_crea、olives、turkey的支持度计数分别为:12、12、7、12、9、14和10。Q(D,ri)为第i号购买olives用户所购买的商品的支持度计数总和。n为购买olives的支持度计数此处为12。依次计算出每个用户被选择的概率之后,按此概率自动选择出一个用户删除其对olives的购买记录,完成对D的修改。
又如turkey在C中的计数比C′中少2,因此需要向两个不含turkey的记录中添加turkey,选择过程如下:
未购买turkey的用户有1、5、7、8号等,1号用户被选择的概率为:
其中Q(D,1)的计算方法与Q(D,0)类似,Q(D,rj)为第j号用户未购买turkey的支持度计数总和,n为turkey的支持度计数此处为10。依次计算出每个用户被选择的概率之后,按此概率选择两个用户,向其购买记录中添加turkey,对D进行修改。最终的选择结果如表5所示:
表5
PRODUCT |
差值 |
按概率选择的CUSTOMERID |
heineken |
0 |
|
olives |
1 |
14 |
bourbon |
1 |
6 |
corned-b |
1 |
21 |
herring |
-1 |
5 |
baguette |
2 |
11,16 |
apples |
2 |
17,13 |
turkey |
-2 |
7,9 |
cracker |
-5 |
6,13,15,16,24 |
ice-cream |
1 |
0 |
coke |
4 |
5,14,17,24 |
peppers |
2 |
3,18 |
avocado |
1 |
21 |
ham |
-1 |
21 |
sardines |
0 |
|
artichoke |
-3 |
0,13,20 |
soda |
0 |
|
steak |
-2 |
2,5 |
chicken |
-2 |
10,21 |
bordeaux |
1 |
9 |
表中第三列为选择插入购买记录或删除购买记录的用户ID编号,对D进行修改后产生的D′如表6所示:
表6
步骤4,如果用户需要对多种商品组合购买的信息进行统计并发布数据,应从数据集D′中进行。此处假设用户需要对购买率最高的两种商品组合进行统计,即取m=2。由表6中数据可得出表7:
表7
corned-b+herring |
10 |
olives+heineken |
8 |
baguette+heineken |
7 |
bourbon+heineken |
7 |
herring+heineken |
7 |
olives+herring |
7 |
corned-b+heineken |
7 |
表7中商品的组合购买数分别为10、8、7、7、7、7、7。
步骤5,向表7中的数据集合S添加拉普拉斯噪声,此数据使用count函数产生,每条记录的增删对count函数的影响至多为1。因此此处的敏感度系数为1,添加噪声为
Lap(1/2ln2(1-0.01)),得到加噪数据如表8所示,也即是数据集合S’:
表8
corned-b+herring |
10.69879 |
olives+heineken |
6.687804 |
baguette+heineken |
6.06702 |
bourbon+heineken |
7.105392 |
herring+heineken |
7.142481 |
olives+herring |
7.640396 |
corned-b+heineken |
6.638711 |
步骤6,对表8中计数进行一致性约束处理,并求解
Min(x1-10.69879)2+(x2-6.687804)2+(x3-6.06702)2
+(x4-7.105392)2+(x5-7.142481)2+(x6-7.640396)2+(x7-6.638711)2;
x1>=x2;x2>=x3;x3>=x4;x4>=x5;x5>=x6;x6>=x7;x7>=0;
x1,x2,...,x7∈N*。
表9为处理好的最终数据:
表9
corned-b+hering |
11 |
olives+heineken |
7 |
baguette+heineken |
7 |
bourbon+heineken |
7 |
herinf+heineken |
7 |
olives+hering |
7 |
corned-b+heineken |
7 |
表4和表9为满足差分隐私保护的匿名数据,可直接进行发布。
需要说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管通过上述优选实施例已经对本发明进行了详细的描述,但本领域技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离本发明所限定的范围。