首页 > 编程知识 正文

拉普拉斯分布函数,拉普拉斯分布的方差

时间:2023-05-04 11:11:23 阅读:259215 作者:4499

近在研究差分隐私,先用java实现了mhdjm分布,做了个Hive交互式接口。后来又用python画图,准备做个非交互式数据发布。

差分隐私的原理我先简单介绍一下,Apple 用它来实现信息安全。这里举一个例子来帮助理解,考虑一个医疗数据场景:


       上图显示了一个医疗数据集D,其中每条记录表示一个患者是否患有癌症,当数据集作为科研数据或者社会调研被发布出来时,他对用户仅提供前n 行的统计查询服务,这里选取计数查询,用count (n) 表示前n 行里有多少个人患有癌症。

       这里攻击者A 知道Jack 排在第3行(医疗数据记录一般按一定顺序排列,例如身份证号等),由于不能直接访问D(注意 D 仅提供 count (n) 查询服务), A 一开始并不知道Jack 的第二列属性值是否为1,但是A 可以通过如下攻击获取Jack 的个人隐私信息(是否患有癌症):count (3) - count (2)。

       那么差分隐私技术在该案例中是如何保证信息安全的呢?我们可以把删除掉Jack 一行的数据集(或修改)看成D',要求A 根据D 获取的count 值,与根据D' 获取的count 值的概率分布差不多,假设count (3) 的输出可能来自{1.5, 2},那么count (2) 以近似的概率输出{1.5, 2} 中的任意值,Laplace 机制便能实现此功能,具体证明这里就不说了都是复杂的数学公式。 ϵ-DP的 ϵ 值就是用来控制概率分布的相似性,当 ϵ 越小时,exp( ϵ ) 越接近于1。

       mhdjm分布图:

   


       废话不说上代码,java代码:

[java]  view plain  copy import org.apache.commons.math3.distribution.LaplaceDistribution;  double laplaceMechanismCount(long realCountResult, double epsilon) {  LaplaceDistribution ld = new LaplaceDistribution(0, 1 / epsilon);  double noise = ld.sample();  return realCountResult + noise;  }        python代码:

[python]  view plain  copy import numpy as np  loc, scale = 0., 1.  s = np.random.laplace(loc, scale, 1)  ss=s[0]  print ss  其中epsilon和scale调节保护性的大小。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。