与Laplace机制的区别
- Laplace机制:针对连续性数据,向原始数据集加入满足Laplace分布的噪声,输出结果为加噪后的数据。
- 指数机制:针对离散型数据,以某个概率返回一组离散数据集中的某个数据。
指数机制Python代码实现
- 已知有一组离散数据{R1,R2,..,Rn},与Laplace机制不同的是,我想输出的是此值域内的某个准确值Ri,至于最终输出的是哪一个,取决于每个数据的概率,其中概率大小与隐私预算(epslion)、敏感度(sensitivity)和打分函数(q())相关。
举个例子:
现在要举办一项体育赛事,有四种可选的运动项目:足球、排球、篮球和网球。观众对四个项目进行投票,然后根据投票结果确定最终要举办哪一个。
- 问题分析:此场景下可将用户投票数作为打分函数,假设目前四个项目的票数分别为{30,25,8,2}
- 输入:打分函数{30,25,8,2},隐私预算(epslion),敏感度(sensitivity)。
- 输出:各项目被选为最终举办项目的概率。
- python代码
import numpy as np
def expMechanism(scores,eps,sensitivity):
for e in eps:
probability0 = []
probability1 = []
for score in scores:
probability0.append(np.exp(0.5*e*score/sensitivity))
sum = np.sum(probability0)
# 归一化处理
for i in range(len(probability0)):
probability1.append(probability0[i]/sum)
print("when epslion={},probability1:".format(e))
print(probability1)
if __name__ == '__main__':
# 打分函数的值
scores = [30,25,8,2]
# 隐私预算epslion
eps = [0, 0.1, 1]
sensitivity = 1
expMechanism(scores,eps,sensitivity)
- 输出结果