差分隐私指数机制python代码实现

1,718 阅读1分钟

与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)
  • 输出结果

image.png