Programming Differential Privacy 阅读参考(part 2)

Programming Differential Privacy 阅读参考(part 2)

Programming Differential Privacy 链接

ch4 差分隐私

差分隐私(differential privacy),是一个用数学语言描述的隐私定义

与k-匿名性不同,差分隐私不是数据所具有的属性,而是算法具有的属性,即我们可以证明一个算法满足差分隐私, 如果想证明一个dataset满足差分隐私,我们要证明的是产生此数据集的算法满足差分隐私

定义

  • 机制(mechanism):满足差分隐私的函数
  • 相邻数据集(neighboring dataset):两个数据集中只有一个个体(single individual)的数据不同
  • ε:隐私预算(privacy budget)或称隐私参数,可以用来调整该定义提供的隐私程度,越小的ε要求输出越相似,从而提供更高的隐私保护,较大的ε允许F给出不那么相似的输出,提供更少的隐私性

如果对于所有相邻数据集x和x',和所有可能的输出S,机制F均满足 Pr[F(x)=S] / Pr[F(x')=S] <= eε,则称机制F满足差分隐私

Note:由于F通常是一个随机函数,所以描述其输出的概率分布不是一个单点分布(随机变量以概率1取常数a)

这个定义的重要含义是,无论是否存在任何特定个体的数据,F的输出都将是基本相同的。也就是说,F中内置的随机性是足够的,保证F的输出不会泄露输入是x还是x'

拉普拉斯机制

差分隐私一般用于回答特定的查询(e.g. 数据集中有多少人>=40岁),对这个查询满足差分隐私的简单方法是在答案中添加随机噪声,挑战是要添加足够的噪声满足DP的要求,但不能加太多噪声使得结果变得不可用

为了简化这一过程,提出一些基础机制,具体描述了应添加何种类型的噪声,以及多大的噪声量。最典型的基础机制是拉普拉斯机制(Laplace Mechanism)

根据拉普拉斯机制,对于输出一个数值型结果的函数f(x),按下述方法定义的F(x)满足ε-差分隐私:

F(x)=f(x)+Lap(s/ε)
  • s是函数f的敏感度(sensitivity),即当输入由数据集x变为x'后,f的输出变化量
  • Lap(S) 表示μ=0、尺度参数为S的拉普拉斯分布的sampling
  • 关于拉普拉斯分布,可参考拉普拉斯分布

计数查询(counting query)的敏感度总是为1,如果查询数据集中具有特定属性的行数,那么修改一行,查询的输出最多可以改变1

使用numpy中的random.laplace()可获得拉普拉斯分布的随机值,该函数有三个参数,分别为locscalesize,如果省略size参数,默认输出一个采样值,可参考实例讲解

对于恶意的查询,差分隐私的方法也不会拒绝回答,但会添加足够的噪声使得查询结果对攻击者不可用

ch5 差分隐私的性质

从差分隐私的定义中,可以引出差分隐私机制的三个重要属性:串行组合性、并行组合性、后处理性

串行组合(Sequential composition)

DP机制下,对相同输入数据发布多个查询结果时,串行组合限定了总隐私消耗(total privacy cost),用数学语言描述如下:

  • 如果F1 (x)满足ε1 -DP,且F2 (x)满足ε2 -DP
  • 则同时发布两个结果的机制 G(x)=(F1 (x), F2 (x)) 满足 ε1 + ε2 -DP

串行组合是DP的一个重要属性,可以用来设计多次查询数据的算法;在单个数据集上进行多个独立的分析时,可以允许个体约束他们在所有的分析中产生的隐私消耗。串行组合给出的隐私消耗不一定是严格准确的,是一个上界,对给定的两个数据发布,实际的隐私消耗可能会更小,但不会更大。

如果将np.random.laplace(loc=0, scale=1/epsilon)的返回值绘制成直方图,ε越大,scale越小,形成的直方图看上去更尖锐,输出的结果远离真实答案的可能性越小,所以提供越少的隐私保护

书上给出的F_combined是一个实际的例子,体现的是实际的隐私消耗,因为串行组合性给出了多次发布后总ε的上界,实际的隐私消耗可能会低一些,所以F_combined的曲线看上去更平缓

并行组合(Parallel composition)

并行组合可以看作是串行组合的一种替代方法,其基本思想是将数据集划分成互不相交的数据块(chunk),在数据块上独立地运行DP机制。因为块是不相交的,每个人的数据只会出现在一个数据块中,所以即使分成了k个块,DP机制也只会在每个个体上运行一次,正式地说:

  • 如果F(x)满足ε-DP
  • 将数据集X分成互不相交的k个块,即x1∪x2∪...∪xk =X
  • 则发布所有结果F(x1),F(x2),...,F(xk)的机制满足ε-DP

直方图

直方图(Histogram)是对数据集的分析,直方图根据数据的某个属性,将数据集划分到各个“桶”(bins)中,并统计每个桶中所包含的行数

直方图中的每个“桶”与数据的某个属性值对应,由于对于某个属性,一行数据只会有一个属性值(e.g. 年龄),所以每个桶之间的数据必然互不相交,天然地满足并行组合性

使用到pandas中的函数,可参考pandas简介

  • value_counts():常用于数据表的计数及排序,可以用来查看数据表中,指定列里有多少个不同的数据值,并计算每个不同值在该列中的个数,同时还能根据需要进行排序
  • to_frame():将Series转换成DataFrame

列联表

列联表(Contingency Table)也被称为交叉列表/交叉表,可以看作一个高维直方图

列联表可以统计数据集中,拥有多个特定属性值的数据量,通常用于展示两个变量间的关系(e.g. 性别和受教育水平)。和直方图一样,每个个体只会参与列联表中的一次计数统计

列联表可以包含两个以上的属性,但是增加属性会导致每个计数结果变得更小,真实计数值的缩小会影响差分隐私计数结果的准确性(更容易被噪声淹没)

所以,虽然并行组合看上去可以发布更多的信息而不增加隐私消耗,实际上只是在精确度和隐私之间进行权衡

后处理(Post-processing)

后处理的思想:DP所提供的隐私保护,不可能通过对数据进行某种后处理被逆转。正式地说:

  • 如果F(X)满足ε-DP
  • 则对任意(确定或随机的)函数g,g(F(X))也满足ε-DP

后处理属性意味着:

  • 对DP机制输出的数据进行任意运算都是安全的,不会降低隐私保护的程度
  • 差分隐私可以抵抗基于辅助信息的隐私攻击方法

对计算结果进行后处理,可以降低噪声量、改善输出结果(e.g. 对不应返回负数的查询,将负数替换成0)

点击跳转part 3

posted @ 2022-11-04 16:26  瑞图恩灵  阅读(238)  评论(0编辑  收藏  举报