Programming Differential Privacy第六章

SENSITIVITY 敏感度

目标:
• 定义灵敏度
• 发现计数查询的敏感性
• 找出求和查询的敏感性
• 将平均查询分解为计数和求和查询
• 使用裁剪来限制求和查询的敏感性
正如我们在讨论拉普拉斯机制时提到的,确保差分隐私所需的噪声量对于给定的查询取决于查询的敏感度。敏感度反映了当输入改变输出随之改变的数量级。
在这里插入图片描述

其中𝑓(𝑥)是确定性函数(查询),𝜖是隐私参数,𝑠是𝑓的敏感度。
对于一个将数据集(𝒟)映射为实数的函数𝑓∶𝒟→ℝ,𝑓的全局灵敏度定义如下:
在这里插入asd描述
这里,𝑑(𝑥,𝑥’)表示两个数据集𝑥和𝑥’之间的距离。,如果两个数据集是近邻,则称它们是近邻距离小于等于1。这个距离如何定义对我们获得的隐私的定义有巨大的影响,我们将讨论稍后会详细介绍数据集上的距离度量。
全局敏感度的定义是,对于任何两个相邻的数据集𝑥和𝑥’,𝑓(𝑥)和𝑓(𝑥’)最多为𝐺𝑆(𝑓)。这种灵敏度被称为“全局”,因为它独立于实际的数据集查询(它持有任何选择的邻居𝑥和𝑥’)。另一种测量敏感度的方法叫做局部敏感度要查询的数据集之一;我们将在后面一节中考虑这种度量。现在,当我们说“敏感性”,我们指的是全局敏感性。

6.1 Distance距离

距离度量𝑑(𝑥, 𝑥′) 前面描述的可以用许多不同的方式定义。直觉上如果两个数据集在一个个体的数据中存在差异,那么它们应该等于1(即数据集是相邻的)(这里看的迷迷糊糊的)。这在某些情况下(例如,在美国人口普查中,每个人提交一个包含其数据的单一响应),这个想法很容易形式化,但在其他情况下(如位置轨迹、社交网络和时间序列数据),则极具挑战性。

数据集常见定义是 考虑两者之间不同行数,每个个体数据被包含在单独行内,这个定义通常是有意义的。这个定义的距离往往被编码成两个数据集之间的对称差。
a
• If 𝑥′is constructed from 𝑥 by adding one row, then 𝑑(𝑥, 𝑥′) = 1
• If 𝑥′is constructed from 𝑥 by removing one row, then 𝑑(𝑥, 𝑥′) = 1
• If 𝑥′is constructed from 𝑥 by modifying one row, then 𝑑(𝑥, 𝑥′) = 2
添加或删除一行会产生相邻的数据集;修改一行会产生一个距离数据集
这种特殊的距离定义导致了所谓的无界差分隐私。同时也有有界差分隐私(其中修改数据集中的单行得到一个相邻的数据集。有所对比

6.2 Calculating Sensitivity计算灵敏度

对于将数据集映射到实数的函数,我们可以执行类似的分析。我们将考虑这些函数表示常见的聚合数据库查询:计数、求和和平均值。

6.2.1Counting Queries计数查询

计数查询敏感度为1:因为添加一行输出最多添加1要么新行具有所需的属性,计数增加1,要么没有计数保持不变。(一行被删除时候计数-1)

三种计数查询敏感度都为1
adult[adult['Education-Num'] > 10].shape[0]
adult[adult['Education-Num'] <= 10].shape[0]
adult[adult['Name'] == 'Joe Near'].shape[0]

6.2.2 Summation Queries求和查询

求和查询(SQL中的SUM)对数据集行的属性值求和。

adult[adult['Education-Num'] > 10]['Age'].sum()

这些查询的敏感度不像计数查询那么简单。向数据集中添加新行会增加我们的示例查询结果按新人的年龄排序。这意味着查询的敏感度取决于内容我们添加的行。
例如,我们可以声明敏感度为125——但结果可能是我们添加到数据库中的行相当于一个超过125岁的人,这违反了我们的要求。(反例)有时候数据想要找到一个合理的上界是很难的。
根据经验,当求和属性的值不存在上界和下界时,求和查询的敏感度是无界的。当存在下界和上界时,求和查询的灵敏度等于它们之间的差值。

6.2.3 Average Queries平均查询

平均查询(SQL中的AVG)计算特定列中属性值的平均值

adult[adult['Education-Num'] > 10]['Age'].mean()
40.21262837580829

回答具有差分隐私的平均查询的最简单方法是将其重新表述为两个查询:一个求和查询被计数查询除。对于上面的例子:

adult[adult['Education-Num'] > 10]['Age'].sum() / adult[adult['Education-Num'] > 10]['Age'].shape[0]
40.21262837580829

两个查询的敏感度可以按照上面的描述计算。可以计算每个问题的噪声答案(例如:利用拉普拉斯机制),对噪声答案进行分割,得到差分隐私均值。总这两个查询的隐私代价可以通过顺序组合的方式进行计算。

6.3 Clipping裁剪

无边界查询不能用laplace的差分隐私解决,我们可以用Clipping将其转化为右边界查询。裁剪的基本思想是强制属性值的上下界。在裁剪数据上的求和查询的灵敏度等于在裁剪中使用的上下界之间的差:𝑢𝑝𝑝𝑒𝑟−𝑙𝑜𝑤𝑒𝑟。

adult['Age'].clip(lower=0, upper=125).sum()
1256257

在裁剪过程中损失的信息量和所需的噪声量间存在权衡确保微分隐私。当上下裁剪界较接近时,灵敏度较低,同时,保证差分隐私需要较少的噪声。然而,激进的裁剪通常会从数据中删除大量信息;这种信息损失往往会导致精度的损失,这超过了由较小的灵敏度带来的噪声改善。需要有所权衡
尝试将裁剪边界设置为包含100%的数据集,或者尽可能接近。我们很容易通过查看数据来确定裁剪边界。例如,我们可以通过查看数据集中年龄的直方图来确定一个合适的上界:

我们不能通过看直方图方式确定边界,会泄露隐私的。通常要么数据集属性要么差分隐私查询来确定边界。

为了使用第二种方法,我们通常将下界设置为0,然后慢慢增加上界,直到查询的输出不再变化(这意味着通过增加边界,我们没有包含任何新数据)。为了使用第二种方法,我们通常将下界设置为0,然后慢慢增加上界,直到查询的输出不再变化(这意味着通过增加边界,我们没有包含任何新数据)。例如,让我们尝试com将裁剪边界从0到100的年龄之和,使用拉普拉斯机制对每个年龄进行差分隐私:
已知数据
bb
通过顺序组合,构建此图形的总隐私成本是𝜖= 1,因为我们使用𝜖𝑖= 0.01进行了100次查询。很明显,当upper = 80时,结果会趋于平稳,因此选择这个值作为裁剪边界是一个不错的选择。
未知数据
一种有效的改进方法是根据对数尺度测试上界。
cc

这种方法允许我们用少量查询测试大量可能的边界,但代价是不好确定完美界限。关键是要找到图是相对平滑的(意味着低噪声),也不增加(意味着裁剪边界足够)。这里,这大约发生在28 = 256处,这是我们之前推导的上界的合理近似。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值