1. 程式人生 > >差分隱私保護及應用簡略瞭解

差分隱私保護及應用簡略瞭解

本人數學一直超差,差分隱私保護又是基於概率統計數學知識的,看的真是頭大。。。但還是把所看的東西串起來記錄一下吧。如有看到不正確的地方,還望指正!!

一:差分隱私基本概念

這是差分隱私保護的最基本概念了,首先得理解資料集D和,成為兄弟資料集。兩個資料集中的記錄最多相差一一條記錄,例如:資料集1=(1,2,3,4),資料集2=(1,2,3),資料集3=(2,3,4,5);資料集1和資料集2求差值=(4),只有一條記錄,因此為兄弟資料集。資料集1和資料集3求差值=(1,5),有兩條記錄,因此不是兄弟資料集。

應用例子:

資料如表1所示,其中的每個記錄表示某個人是否患有癌症(1表示是,0表示否)。

我們把表1中前4條記錄當做資料集D1,前5條當做資料集D2。隱私演算法A=count(i)+噪音,其中i=1,2,3.....。

正常情況下:count(4)=2;(前四條記錄,即資料集D1)

                      count(5)=3;(前五條記錄,即資料集D2)

這樣我們就可以推斷第5條記錄的值一定是1,會發生隱私洩露。

差分隱私保護情況下:count(4)+噪音與count(5)+噪音其結果均以幾乎完全相同的概率輸出{2,2,3,4}(這個結果只是假設)中的任意一個。其中幾乎完全相同的概率:兩者的概率差為

差分隱私的基本概念已經瞭解了,那麼怎麼實現差分隱私呢?通過例子我們可以知道這是通過新增噪音來實現的,那麼怎麼產生符合需要的噪音呢?

現有研究常用的兩種噪音機制

Laplace機制:這是適用於連續資料的噪音機制。給定資料集D,上述差分隱私保護基本概念中的隨機演算法A(D)=f(D)+Y,其演算法A提供e-差分隱私保護,Y服從制度引數為 敏感度/e 的Laplace分佈,即Lap(敏感度/e)。

Laplace分佈:位置引數為0、尺度引數為b的Laplace分佈為Lap(b),其概率密度函式為:

通過上述Laplace概念的瞭解,從而得知兩個變數,一個是敏感度,一個是e隱私保護係數。這兩個係數如何確定?這裡只簡單提一下。

敏感度:這主要與隨機演算法A(D)=f(D)+噪音中的f(D)有關。f(D)是作用在資料集上的查詢函式,例如查詢中位數,資料集D(x1,x2,x3,x4,...xm=a,xm+1,xm+2....xn=b)資料集前半截的值全等於a,後半截全等於b。

全域性敏感度為函式f作用在所有兄弟資料集上,兩者的函式結果最大差值。

這裡f=查詢中位數,最大的差值為b-a。

區域性敏感為函式f作用在相鄰兄弟資料集上,兩者的函式結果最大差值。

那麼這的區域性敏感度其區域性敏感度為max(xm-xm-1,xm+1-xm)。

區域性敏感度與全域性敏感度的關係:

這裡e隱私保護係數暫時不做描述。

Laplace機制的實現程式碼:

import org.apache.commons.math3.distribution.LaplaceDistribution;
  

//epsilon為隱私保護引數,1 / epsilon中的1為敏感度。
static double laplaceMechanismCount(long realCountResult, double epsilon) {
        LaplaceDistribution ld = new LaplaceDistribution(0, 1 / epsilon);
        double noise = ld.sample();
        return realCountResult + noise;
    }



pom.xml

 <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-math3</artifactId>
            <version>3.6.1</version>
        </dependency>
    </dependencies>

指數機制:適合用於離散型資料。