美文网首页
差分隐私2019-03-07

差分隐私2019-03-07

作者: lijunmn | 来源:发表于2019-03-07 11:48 被阅读0次

    差分隐私的定义

    数据的距离:
    对于数据库 x ,它的第一范数为:
    ||x||_1=\sum_{i=1}^{|X|}x_i
    两个数据库 x 和 y 的l_1 距离是||x-y||_1。对于||x||_1表示数据库x的大小。||x-y||_1表示数据x和y不同元素的个数

    (\varepsilon,\delta)\ \ differential\ \ privacy:
    定义1:一个随机算法M,其值域范围为N^{|X|},对于所有的S\in Range(M),和对于所有的x和y, 满足||x||_1\le1有:
    Pr[M(x)\in S] \le exp(\varepsilon)Pr[M(y)\in S]+\delta
    \delta=0时,其满足\varepsilon-differential private

    Laplace 机制

    通过Laplace 函数可以个某个查询f增加噪音,实现差分隐私
    定义2:Laplace 分布,随机变量x满足以下式子,其中a,b是参数
    L(x|a;b)=\frac{1}{2b}exp(-\frac{x-a}_{b})
    服从这个分布的随机变量X满足\sigma^2=2b^2
    在利用Laplace 增加噪音实现差分隐私时,需要将均值a,设置为0,我们将此事的Laplace 密度函数记作L(b)
    定义3:函数f 的ℓ1敏感度\nabla f,对于一个函数f : N^{|X|} → R^k ,有
    \nabla f=\mathop{max}_{ \overset{x,y\in N^{|X|}}{||x-y||_1=1}} ||x-y||_1.

    定义4:Laplace 机制:对于函数f : N^{|X|} → R^k ,Laplace 机制 M 被定义满足如下:
    M_L(x,f(\cdot ),\varepsilon )= f(x)+(Y_1,Y_2,...,Y_k)
    其中Y_i是分别独立地从L(\nabla / \varepsilon)获得的随机变量

    实验实现

    Laplace 函数图形:

    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def laplace_function(x, beta):
        result = (1 / (2 * beta)) * np.e ** (-1 * (np.abs(x) / beta))
        return result
    
    
    # 在-5到5之间等间隔的取10000个数
    x = np.linspace(-5, 5, 10000)
    y1 = [laplace_function(x_, 0.5) for x_ in x]
    y2 = [laplace_function(x_, 1) for x_ in x]
    y3 = [laplace_function(x_, 2) for x_ in x]
    
    plt.plot(x, y1, color='r', label='beta:0.5')
    plt.plot(x, y2, color='g', label='beta:1')
    plt.plot(x, y3, color='b', label='beta:2')
    plt.title("Laplace distribution")
    plt.legend()
    plt.show()
    

    https://blog.csdn.net/qq_38242289/article/details/80798952

    Laplace 的分布

    import matplotlib.pyplot as plt
    import numpy as np
    
    
    def count_zft():
        i=0
        sums=0
        xx=np.random.laplace(0,1,100)
    
        sums=sum(xx)
        return sums
    #    print(sums)
    
    if __name__=='__main__':
    
        vec = list()
        j=0;
        while j<100000:
            vec.append(count_zft())
            j+=1
    
    
    
    
        n, bins, patches = plt.hist(vec, 100, density=True, facecolor='g', alpha=0.75)
        plt.xlabel('sum of nosiy')
        plt.ylabel('Probability')
        plt.title('')
        plt.text(60, .025, r'$\mu=100,\ \sigma=15$')
        plt.axis([-40, 40, 0, 0.06])
        plt.grid(True)
        plt.show()
    
    
    100个噪音和的分布

    相关文章

      网友评论

          本文标题:差分隐私2019-03-07

          本文链接:https://www.haomeiwen.com/subject/mcpqpqtx.html