差分隱私保護及應用簡略瞭解
本人數學一直超差,差分隱私保護又是基於概率統計數學知識的,看的真是頭大。。。但還是把所看的東西串起來記錄一下吧。如有看到不正確的地方,還望指正!!
一:差分隱私基本概念
這是差分隱私保護的最基本概念了,首先得理解資料集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>
指數機制:適合用於離散型資料。