差异隐私的属性
1.解释顺序组合、并行组合和后处理的概念
2.计算不同隐私机制的多个应用程序的累积隐私成本
3.确定何时允许使用并行组合
下面定义三种有用的方法用在算法中
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
5.1Sequential Composition
这限制了在同一输入数据上发布不同私有机制的多个结果的总隐私成本。形式上,差异隐私的序列合成定理表示:
• If 𝐹1(𝑥) satisfies 𝜖1-differential privacy
• And 𝐹2(𝑥) satisfies 𝜖2-differential privacy
• Then the mechanism 𝐺(𝑥) = (𝐹1(𝑥), 𝐹2(𝑥)) which releases both results satisfies 𝜖1 + 𝜖2-differential privacy
这段话说明差分隐私具有累积性。顺序组成
顺序组合是差分隐私的一个重要属性,因为它允许设计不止一次查阅数据的算法。当对一个数据集执行多个单独的分析时,顺序组合也很重要,因为它允许个人通过参与所有这些分析来限制他们所产生的“总”隐私成本。
顺序组合给出的隐私成本的界限是一个“上”界限——两个特定的不同的私有发布的实际隐私成本可能比这个小,但永远不会更大。
# plot F1
plt.hist([F1() for i in range(1000)], bins=50, label='F1');
# plot F2 (should look the same)
plt.hist([F2() for i in range(1000)], bins=50, alpha=.7, label='F2');
plt.legend();
形状很相似
# plot F1
plt.hist([F1() for i in range(1000)], bins=50, label='F1');
# plot F3 (should look "pointier")
plt.hist([F3() for i in range(1000)], bins=50, alpha=.7, label='F3');
plt.legend();
F3更集中,因为𝜖 更大
# plot F1
plt.hist([F1() for i in range(1000)], bins=50, label='F1');
# plot F_combined (should look "pointier")
plt.hist([F_combined() for i in range(1000)], bins=50, alpha=.7, label='F_combined');
plt.legend();
F_combined更集中,这意味着它的答案比F1的更准确,所以它的𝜖必须更高(即它比F1产生更少的隐私)是有道理的。
# plot F1
plt.hist([F3() for i in range(1000)], bins=50, label='F3');
# plot F_combined (should look "pointier")
plt.hist([F_combined() for i in range(1000)], bins=50, alpha=.7, label='F_combined');
plt.legend();
事实上,F3看起来“更尖了”!顺序组合产生了几个版本的𝜖的上限,对隐私的实际累积影响可能更低。这里的情况就是这样——在这种情况下,实际的隐私损失似乎略低于由顺序组合确定的上限𝜖。顺序组合是控制总体隐私成本的一种非常有用的方法,我们将看到它在许多不同的方面被使用,但请记住,它不一定是一个精确的界限。
5.2 Parallel Composition
并行组合可以被视为顺序组合的替代方案——这是计算多个数据发布的总隐私成本的第二种方法。并行组合的思想是将数据集分割成不相交的块,并在每个块上分别运行不同的私有机制。由于数据块是不相交的,每个个体的数据出现在恰好的一个数据块中——所以即使总共有k的数据块(因此该机制运行k次),该机制在每个个体的数据上只运行一次。
• If 𝐹(𝑥) satisfies 𝜖-differential privacy
• And we split a dataset 𝑋 into 𝑘 disjoint chunks such that 𝑥1 ∪ … ∪ 𝑥𝑘 = 𝑋
• Then the mechanism which releases all of the results 𝐹(𝑥1), …, 𝐹(𝑥𝑘) satisfies 𝜖-differential privacy
并行组合更好,因为运行F()k次的话,顺序组合说这是k𝜖-differential隐私。并型组合总隐私成本仅为𝜖。
如果数据集中的每个参与者都贡献一行𝑋, 然后此行将恰好出现在其中一个块中𝑥1., …, 𝑥𝑘.这意味着𝐹 将只“看到”此参与者的数据一次,意味着隐私成本𝜖 适合该个人。由于该财产适用于所有个人,因此隐私成本是𝜖 对每个人来说。
5.2.1Histograms柱状图
在我们的上下文中,直方图是对数据集的分析,它根据一个数据属性的值将数据集划分为“箱”,并计算每个箱中的行数。例如,直方图可以计算数据集中达到特定教育水平的人数。
adult = pd.read_csv("adult_with_pii.csv")
adult['Education'].value_counts().to_frame().head(5)
Education
HS-grad 10501
Some-college 7291
Bachelors 5355
Masters 1723
Assoc-voc 1382
直方图对于差分隐私特别有趣,因为它们自动满足并行组合。直方图中的每个“bin”都由一个数据属性的可能值定义(例如,‘Education’‘HS-grad’)。
单行不可能同时拥有一个属性的两个值,因此以这种方式定义容器可以确保它们是分离的。因此,我们已经满足了并行组合的要求,并且可以使用差分隐私机制来释放所有的bin计数,而总私有成本仅为𝜖。
epsilon = 1
f = lambda x: x + np.random.laplace(loc=0, scale=1/epsilon)
s = adult['Education'].value_counts().apply(f)
s.to_frame().head(5)
Education
HS-grad 10500.906639
Some-college 7291.847396
Bachelors 5357.873869
Masters 1723.745979
Assoc-voc 1381.895589
5.2.2Contingency Tables列列表
列联表或交叉表(通常缩写为crosstab)类似于多维直方图。它统计数据集中同时具有多个属性值的行出现的频率。在分析数据时,列联表常用来表示两个变量之间的关系。例如,我们可能希望同时查看基于教育水平和性别的计数:多维表
pd.crosstab(adult['Education'], adult['Sex']).head(5)
与前面看到的直方图一样,数据集中的每个个体只参与了表中出现的一次计数。对于构建列联表时考虑的任何一组数据属性来说,任何一行都不可能同时有多个值。因此,在这里使用并行组合也是安全的。
ct = pd.crosstab(adult['Education'], adult['Sex'])
f = lambda x: x + np.random.laplace(loc=0, scale=1/epsilon)
ct.applymap(f).head(5)
Sex Female Male
Education
10th 295.419180 638.916314
11th 429.561261 742.399131
12th 143.765760 288.433161
1st-4th 41.595746 121.788742
5th-6th 83.902621 249.121173
也可以生成包含2个以上变量的列联表。不过,考虑一下每次添加变量时会发生什么:每次计数都会变小。直观地说,当我们将数据集分成更多的块时,每个块包含的行更少,因此所有的计数都更小。
这些减少的计数可能会对我们从中计算的差分隐私结果的准确性产生重大影响。如果我们从信号和噪声的角度考虑问题,一个大的计数代表一个强信号——它不太可能被相对较弱的噪声(如我们上面添加的噪声)干扰太多,因此即使添加了噪声,结果也可能有用。然而,一个小的计数表示一个弱信号——可能和噪声本身一样弱——在我们添加噪声之后,我们将无法从结果中推断出任何有用的东西。
因此,虽然并行组合看起来给了我们一些“免费”的东西(相同的隐私成本却得到了更多的结果),但事实并非如此。并行组合只是沿着不同的轴移动了准确性和隐私之间的权衡——当我们将数据集分割成更多的块并发布更多的结果时,每个结果包含一个更弱的信号,因此它不那么准确。
个人理解:数据分为多个块以后,就好比信号一样,数据越小更容易收到噪声干扰,容易失真,不准确。
5.3 Post-processing
不可能通过某种方式对数据进行后处理来逆转差分隐私提供的隐私保护。
• If 𝐹(𝑋) satisfies 𝜖-differential privacy
• Then for any (deterministic or randomized) function 𝑔, 𝑔(𝐹(𝑋)) satisfies 𝜖-differential privacy
•如果𝐹(𝑋)满足𝜖-differential隐私
•对于任何(确定性或随机)函数𝑔,𝑔(𝐹(𝑋))满足𝜖-differential隐私
后处理特性意味着对差分的输出执行任意计算总是安全的私有机制——没有逆转机制提供的隐私保护的危险。它是可以执行可能减少噪声或改善机制输出中的信号的后处理(例如替换如果查询不应该返回负数,则返回0)。
事实上,许多复杂的差异私有算法利用后处理来减少噪声,提高结果的准确性。