《横向联邦学习中 PCA差分隐私数据发布算法》论文算法原理笔记

news2024/11/20 15:17:14

论文地址:https://www.arocmag.com/article/01-2022-01-041.html

论文摘要

     为了让不同组织在保护本地敏感数据和降维后发布数据隐私的前提下,联合使用 PCA进行降维和数据发布,提出横向联邦 PCA差分隐私数据发布算法。引入随机种子联合协商方案,在各站点之间以较少通信代 价生成相同随机噪声矩阵。提出本地噪声均分方案,将均分噪声加在本地协方差矩阵上。一方面,保护本地数据隐私;另一方面,减少了噪声添加量,并且达到与中心化差分隐私 PCA算法相同的噪声水平。理论分析表明, 该算法满足差分隐私,保证了本地数据和发布数据的隐私性,较同类算法噪声添加量降低。实验从隐私性和可用性角度评估该算法,证明该算法与同类算法相比具有更高的可用性。

本文算法主要涉及到的几个知识点

1、PCA:pca主成分分析,广泛应用于数据降维,是将原来的n维特征映射到k维特征上,而这k维是全新的正交特征,即主成分。如何求得这k个主成分?通过计算数据矩阵的协方差矩阵,得到特征值和特征向量,选择top k的特征值对应的特征向量就是k个主成分,它们的方差最大,而这些特征值对应的特征向量组成的矩阵,便可以将数据矩阵转化到新的空间中,实现数据特征降维。
协方差公式: C o v ( X , Y ) = E [ ( X − E ( X ) ) ( Y − E ( Y ) ) ] = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) Cov(X,Y)=E[(X-E(X))(Y-E(Y))]=\frac{1}{n-1}\sum_{i=1}^n(x_i-\bar x)(y_i-\bar y) Cov(X,Y)=E[(XE(X))(YE(Y))]=n11i=1n(xixˉ)(yiyˉ)上式是两维的情况,多维的话就是一个协方差矩阵:
C o v ( X , Y , Z ) = [ C o v ( X , X ) C o v ( X , Y ) C o v ( X , Z ) C o v ( Y , X ) C o v ( Y , Y ) C o v ( Y , Z ) C o v ( Z , X ) C o v ( Z , Y ) C o v ( Z , Z ) ] Cov(X,Y,Z)=\begin{bmatrix} Cov(X,X) & Cov(X,Y) & Cov(X,Z) \\ Cov(Y,X) & Cov(Y,Y) & Cov(Y,Z) \\ Cov(Z,X) & Cov(Z,Y) & Cov(Z,Z) \end{bmatrix} Cov(X,Y,Z)= Cov(X,X)Cov(Y,X)Cov(Z,X)Cov(X,Y)Cov(Y,Y)Cov(Z,Y)Cov(X,Z)Cov(Y,Z)Cov(Z,Z) 还有一个概念叫散度矩阵,是衡量数据的分散程度: S = ( n − 1 ) × C o v ( X , Y ) S=(n-1)\times Cov(X, Y) S=(n1)×Cov(X,Y)这两者求出的特征向量是一致的。因此,整个PCA的求解过程可以如下:

  1. 求解整个样本的均值, μ = 1 n ∑ i = 1 n X i \mu=\frac{1}{n}\sum_{i=1}^nX_i μ=n1i=1nXi,这里 μ \mu μ也是一个m维(即m个特征)的向量。
  2. 求协方差cov, c o v = 1 n − 1 ( X − μ ) T ( X − μ ) cov=\frac{1}{n-1}(X-\mu)^T(X-\mu) cov=n11(Xμ)T(Xμ)
  3. 根据协方差求特征值 Λ = [ λ 1 , λ 2 , . . . , λ m ] m × 1 \Lambda=[\lambda_1,\lambda_2,...,\lambda_m]_{m\times 1} Λ=[λ1,λ2,...,λm]m×1和特征向量 A = [ α 1 , α 2 , . . . , α m ] m × m \Alpha=[\alpha_1,\alpha_2,...,\alpha_m]_{m\times m} A=[α1,α2,...,αm]m×m.
  4. 最后利用特征向量进行降维: Y = [ X n × m Λ m × k ] n × k Y=[X_{n\times m}\Lambda_{m\times k}]_{n\times k} Y=[Xn×mΛm×k]n×k,其中 Λ m × k \Lambda_{m\times k} Λm×k是按照特征值倒排的k个特征向量。

2、差分隐私:( ϵ , δ \epsilon,\delta ϵ,δ)-差分隐私的定义,假设数据集 X X X X ′ X' X是“邻居数据集”,给定一个算法 f , O ⊆ r a n g e ( f ) f,O\subseteq range(f) fOrange(f),如果 P r [ f ( x ) ∈ O ] ≤ e ϵ P r [ f ( x ′ ) ∈ O ] + δ Pr[f(x)\in O] \le e^{\epsilon}Pr[f(x') \in O]+\delta Pr[f(x)O]eϵPr[f(x)O]+δ则算法 f f f满足( ϵ , δ \epsilon,\delta ϵ,δ)-差分隐私,其中 ϵ \epsilon ϵ为隐私预算,是个经验值,且值越小,隐私保护水平越高, δ \delta δ是个差分隐私引入的松弛值。白话总结:差分隐私就是在引入噪声的情况下,实现数据的安全性。
具体的原理理解参考:https://zhuanlan.zhihu.com/p/139114240,
这篇文章中使用了差分隐私实现逻辑回归模型:https://zhuanlan.zhihu.com/p/464987876

差分隐私噪声引入机制:Laplace(拉普拉斯)机制、Exponential(指数)机制、Gaussian(高斯)机制。本文使用的是高斯机制

3、PCA高斯机制:假设算法 f ( X ) = X X T f(X)=XX^T f(X)=XXT,对 f ( X ) f(X) f(X)的输出加上满足 N ( 0 , τ 2 ) N(0,τ^2) N(0,τ2)分布 τ = Δ f 2 l n ( 1.25 / δ ) / ϵ τ=\Delta f \sqrt{2ln(1.25/ \delta)}/\epsilon τ=Δf2ln(1.25/δ) /ϵ的随机噪声,则 f ( X ) f(X) f(X)满足 ( ϵ , δ ) (\epsilon, \delta) (ϵ,δ)-差分隐私。其中 X T X X^TX XTX X X X的协方差矩阵。 Δ f = max ⁡ X , X ′ ∣ ∣ f ( X ) − f ( X ′ ) ∣ ∣ 2 \Delta f=\displaystyle\max_{X,X'}||f(X)-f(X′)||_2 Δf=X,Xmax∣∣f(X)f(X)2 f f f l 2 l_2 l2敏感度, X X X X ′ X′ X为邻居数据集。
例如:设 X = ( x 1 , x 2 , . . . , x n ) X=(x_1,x_2,...,x_n) X=(x1,x2,...,xn) X ′ = ( x 1 , x 2 , . . . , x n ′ ) X'=(x_1,x_2,...,x'_n) X=(x1,x2,...,xn)为邻居数据集,且 ∣ ∣ x i ∣ ∣ 2 ≤ 1 ||x_i||_2≤1 ∣∣xi21 ∀ i ∈ [ n ] \forall i∈[n] i[n],有算法 A = 1 n X X T A=\frac{1}{n}XX^T A=n1XXT A ′ = 1 n X ′ X ′ T A'=\frac{1}{n} X'X'^{T} A=n1XXT,满足 max ⁡ X , X ′ ∣ ∣ A − A ′ ∣ ∣ 2 ≤ 1 n \displaystyle\max_{X,X'}||A-A'||_2≤\frac{1}{n} X,Xmax∣∣AA2n1,则此算法敏感度 Δ f = 1 n \Delta f=\frac{1}{n} Δf=n1,令 τ = 1 n 2 l n ( 1.25 / δ ) / ϵ τ=\frac{1}{n}\sqrt{2ln(1.25/\delta)}/\epsilon τ=n12ln(1.25/δ) /ϵ,对 A A A加上满足 N ( 0 , τ 2 ) N(0,τ^2) N(0τ2)分布的随机噪声,则算法 A A A满足 ( ϵ , δ ) (\epsilon,\delta) (ϵδ)-差分隐私。

本地均分扰动联邦PCA算法(ELFedPCA)

算法思想:在本地生成相同的随机噪声矩阵,通过均分随机噪声矩阵的方式,在本地扰动协方差矩阵,使得在服务器相加后的协方差矩阵满足差分隐私定义;设计隐私保护联合中心化方案,保护本地数据均值和总数的隐私。
使用场景如下:sites每个站点有自己的数据,server负责进行汇总pca,publisher负责发布server降维后的数据。
在这里插入图片描述
前提:设 X ∈ R n × d X\in \R^{n\times d} XRn×d为所有s个站点的数据集合,横向划分数据集 X 1 , . . . , X s X_1,...,X_s X1,...,Xs,第 i i i个站点的数据 X i = ( x i 1 , . . . , X i N i ) T ∈ R N i × d X_i=(x_{i1},...,X_{iN_i})^T\in\R^{N_i\times d} Xi=(xi1,...,XiNi)TRNi×d,其中 d d d为数据集的维度,且各站点的维度相同, N i N_i Ni是站点 i i i的数据量。所有站点的总数据量 n = ∑ i = 1 s N i n=\displaystyle\sum_{i=1}^sN_i n=i=1sNi
算法流程:
1、中心化(减去均值):在不泄露各站点的数据信息的情况下,让站点2生成s-1个和为0的小数 a 2 , a 3 , . . . , a s a_2,a_3,...,a_s a2,a3,...,as与和为0的整数 b 2 , b 3 , . . . , b s b_2,b_3,...,b_s b2,b3,...,bs,然后将 a i , b i a_i,b_i ai,bi发给对应的站点 i i i。各个站点计算自己的sum和count,站点1为: s u m ( s 1 ) = ∑ k = 1 N 1 x 1 k , c o u n t ( s 1 ) = N 1 sum(s_1)=\sum_{k=1}^{N_1}x_{1k},count(s_1)=N_1 sum(s1)=k=1N1x1kcount(s1)=N1其他站点 i i i为: s u m ( s i ) = ∑ k = 1 N i x i k + a i , c o u n t ( s i ) = N i + b i sum(s_i)=\sum_{k=1}^{N_i}x_{ik}+a_i,count(s_i)=N_i+b_i sum(si)=k=1Nixik+aicount(si)=Ni+bi,最后各站点 i i i将计算的sum和count发给站点1进行汇总: s u m ( s ) = ∑ i = 1 s s u m ( s i ) , c o u n t ( s ) = ∑ i = 1 s c o u n t ( s i ) sum(s)=\sum_{i=1}^ssum(s_i),count(s)=\sum_{i=1}^scount(s_i) sum(s)=i=1ssum(si)count(s)=i=1scount(si)由于 ∑ i = 2 s a i = 0 , ∑ i = 2 s b i = 0 \sum_{i=2}^sa_i=0,\sum_{i=2}^sb_i=0 i=2sai=0,i=2sbi=0,所以sum(s)就算所有站点的真实总和,count(s)就是所有站点的真实数据量。从而所有站点的数据的均值为: μ = s u m ( s ) c o u n t ( s ) \mu=\frac{sum(s)}{count(s)} μ=count(s)sum(s)站点1在将计算得到的均值 μ \mu μ发给其他站点,做中心化操作: x i = x i − μ x_i=x_i-\mu xi=xiμ

为什么要去中心化,如图,使得计算主成分时不会受到偏离值的影响。同时中心化是求协方差的一部分, 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) \frac{1}{n-1}\sum_{i=1}^n(x_i-\bar x)(y_i-\bar y) n11i=1n(xixˉ)(yiyˉ)
在这里插入图片描述

2、归一化,由于差分隐私PCA高斯机制要求 ∣ ∣ x i ∣ ∣ 2 ≤ 1 ||x_i||_2\le 1 ∣∣xi21,所以需要对数据进行归一化 x i = x i ∣ ∣ x i ∣ ∣ 2 x_i=\frac{x_i}{||x_i||_2} xi=∣∣xi2xi
前两步就是对数据进行 ( 0 , 1 ) (0,1) (0,1)的标准化操作。

3、每个站点计算自己的协方差矩阵: A i = 1 N i − 1 X i T X i A_i=\frac{1}{N_i-1}X_i^TX_i Ai=Ni11XiTXi设所有的站点的数据 X = ( X 1 , X 2 , . . . , X s ) X=(X_1,X_2,...,X_s) X=(X1,X2,...,Xs)的协方差为 1 N − 1 A \frac{1}{N-1}A N11A
4、站点1生成一个随机种子seed,并设置合适的 ϵ \epsilon ϵ δ \delta δ,然后发送 [ s e e d , ϵ , δ ] [seed,\epsilon,\delta] [seed,ϵ,δ]给其他站点,各站点便可以生成相同的服从 N ( 0 , τ 2 ) N(0,τ^2) N(0,τ2)分布 τ = 2 l n ( 1.25 / δ ) / n ϵ τ=\sqrt{2ln(1.25/\delta)}/n\epsilon τ=2ln(1.25/δ) /nϵ ( n n n为所有站点数据量总和)的随机噪声矩阵 E ∈ R d × d E\in\R^{d\times d} ERd×d,将噪声矩阵均分 E ′ = E / s E'=E/s E=E/s ( s s s为所有站点的总和),然后再计算 A i ′ = A i + E ′ A_i'=A_i+E' Ai=Ai+E。便可以将加入均分随机噪声的的协方差矩阵发给站点1。
5、站点1累计所有站点发送来的加入均分随机噪声的协方差矩阵: A ′ = A 1 ′ + A 2 ′ + . . . + A s ′ A'=A_1'+A_2'+...+A_s' A=A1+A2+...+As这个协方差 A ′ A' A和中心化差分隐私PCA加入噪声后的协方差矩阵相同,证明如下: A ′ = A 1 ′ + A 2 ′ + . . . + A s ′ = ( A 1 + E ′ ) + ( A 2 + E ′ ) + . . . + ( A s + E ′ ) A'=A_1'+A_2'+...+A_s'=(A_1+E')+(A_2+E')+...+(A_s+E') A=A1+A2+...+As=(A1+E)+(A2+E)+...+(As+E) = ( A 1 + A 2 + . . . + A s ) + s × E ′ = A + E =(A_1+A_2+...+A_s)+s\times E'=A+E\quad\quad\quad\quad\quad\quad\quad\quad =(A1+A2+...+As)+s×E=A+E
6、随后站点1对 A ′ A' A进行SVD分解,取top k个特征值对应的特征向量,得到 V ′ ∈ R d × k V'\in\R^{d\times k} VRd×k,并将 V ′ V' V发送给其他站点。
7、其他站点计算降维后的数据 Y i = X i V ′ , Y i ∈ R N i × k Y_i=X_iV',Y_i\in \R^{N_i\times k} Yi=XiVYiRNi×k,并将 Y i Y_i Yi发送给站点1进行汇总: Y = ( Y 1 , Y 2 , . . . , Y s ) Y=(Y_1,Y_2,...,Y_s) Y=(Y1,Y2,...,Ys)

实验结果

本文对几个不同的数据集,对比DPdisPCA算法做了CE和SVM分类实验,实验结果如下:在这里插入图片描述

最后本文贡献

1、本文算法ELFedPCA是满足 ( ϵ , δ ) (\epsilon,\delta) (ϵδ)-差分隐私的,可以很好的保护各站点的隐私。
2、本文算法ELFedPCA添加的噪声量比现有文献中的噪声添加量小。因为服从高斯分布的随机噪声方差越大, 噪声越大。现有文献DPdisPCA采用的是在站点本地生成服从 N ( 0 , τ 2 ) N(0,τ^2) N(0,τ2)分布 τ = 2 l n ( 1.25 / δ ) / N i ϵ τ=\sqrt{2ln(1.25/\delta)}/N_i\epsilon τ=2ln(1.25/δ) /Niϵ的随机噪声,因此本地添加噪声的方差与 1 N i 2 \frac{1}{N_i^2} Ni21成正比。而ELFedPCA添加的噪声相当于中心化添加服从 N ( 0 , τ 2 ) N(0,τ^2) N(0,τ2)分布 τ = 2 l n ( 1.25 / δ ) / n ϵ τ=\sqrt{2ln(1.25/\delta)}/n\epsilon τ=2ln(1.25/δ) /nϵ ( n n n为所有站点数据量总和)的随机噪声,其噪声的方差与 1 n 2 \frac{1}{n^2} n21成正比。因为 N i ≪ n N_i \ll n Nin,所以 1 N i 2 > 1 n 2 \frac{1}{N_i^2} > \frac{1}{n^2} Ni21>n21。则ELFedPCA添加的噪声量更小。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/633000.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九、进程程序替换

文章目录 一、进程程序替换(一)概念(二)为什么程序替换(三)程序替换的原理(四)如何进行程序替换1. execl2. 引入进程创建——子进程执行程序替换,会不会影响父进程呢? &…

016、元组(行)结构与dml操作

元组结构与dml操作 元组(行)结构行头信息Pageinspect工具DML操作InsertionDeletionUpdate块空间清理元组(行)结构 t_xmin保存插入此元组的事务的txid。这一行被哪个事务ID所修改t_xmax保存删除或更新此元组的事务的txid。如果此元组未被删除或更新,则t_xmax设置为0,这意味…

数据结构——堆(C语言实现)

文章目录 什么是堆堆的实现堆的结构定义堆的初始化接口堆的销毁接口堆的插入数据接口向上调整建堆接口判断堆是否为空堆的删除数据接口向下调整建堆接口获取堆顶数据获取堆的有效数据个数完整实现代码小结 堆排序堆排序的实现 关于建堆和堆排序时间复杂度的分析向下调整建堆向上…

STL之string

目录 string的基本实现一. string的基本架构二. 常用方法及实现1.初始化和清理a. 构造函数b. 析构函数c. swapd. 拷贝构造e. operator 2.成员访问a. operator[]b. sizec. c_str 3.迭代器iteratora. beginb. end 4.增删查改a. reserveb. resizec. insertd. push_backe. appendf.…

【连续介质力学】连续体运动学

简介 一个质点从t0出发,随着时间有不同的构形,运动的描述是运动学。 所以需要建立运动方程来表征连续体是如何演化及其性质(例如位移、速度、加速度、质量密度、温度等)如何随时间变化 初始构形 或者 参考构形: B …

Java反射与注解

文章目录 一、 注解1.简介2. 元注解3. 自定义注解 二、 反射1. 简介2. 理解Class类并获取Class实例3. 类的加载与初始化4. 类加载器ClassLoader5. 获取运行时类的完整结构6. 动态创建对象执行方法7. 反射操作泛型8. 反射操作注解 一、 注解 1.简介 Annotation是JDK5.0开始引入…

day52|动态规划13-子序列问题

子序列系列问题 300.最长递增子序列 什么是递增子序列: 元素之间可以不连续,但是需要保证他们所在位置是元素在数组中的原始位置。 dp数组dp[i]表示以nums[i]为结尾的最长递增子序列的长度。递归函数:dp[i] max(dp[j]1,dp[j])初始化条件&…

Linux常用命令——gpm命令

在线Linux命令查询工具 gpm 提供文字模式下的滑鼠事件处理 补充说明 gpm命令是Linux的虚拟控制台下的鼠标服务器,用于在虚拟控制台下实现鼠标复制和粘贴文本的功能。 语法 gpm(选项)选项 -a:设置加速值; -b:设置波特率&…

chatgpt赋能python:Python中如何取出字符串中的数字并赋予新的变量

Python 中如何取出字符串中的数字并赋予新的变量 在 Python 中,我们经常需要处理字符串,其中可能包含多种类型的数据。当我们需要获取字符串中的数字时,该怎样做呢?本文将介绍取出字符串中的数字的方法,并赋予新的变量…

chatgpt赋能python:Python利器之数字提取

Python 利器之数字提取 Python 是一门强大的编程语言,被广泛应用在数据分析、人工智能等领域。在很多数据分析的场景下,需要从文本中提取数字,本文将介绍如何使用 Python 快速提取文本中的所有数字。 使用正则表达式提取数字 正则表达式&a…

YOLOv7 模型融合

将两种训练模型的检测结果融合 首先需要两种模型,一个是yolov7原有的模型,另一个是你训练出来的模型 其中yolov7.pt是官方提供的模型,有80个类别 其中yolov7_3.7HRW.pt是我们自己训练的模型,有三个分类,举手、看书、写…

WPF开发txt阅读器6:用树形图管理书籍

txt阅读器系列: 需求分析和文件读写目录提取类💎列表控件与目录字体控件绑定书籍管理系统 TreeView控件 TreeView可以通过可折叠的节点来显示层次结构中的信息,是表达文件系统从属关系的不二选择,其最终效果如下 为了构建这个树…

UnityVR--组件6--Animation动画

目录 新建动画Animation Animation组件解释 应用举例1:制作动画片段 应用举例2:添加动画事件 Animator动画控制器 应用举例3:在Animator中设置动画片段间的跳转 本篇使用的API:Animation、Animator以及Animator类中的SetFlo…

【Python可视化大屏】「淄博烧烤」热评舆情分析大屏

文章目录 一、开发背景二、爬虫代码2.1 展示爬取结果2.3 导入MySQL数据库 三、可视化代码3.1 大标题3.2 词云图(含:加载停用词)3.3 玫瑰图(含:snownlp情感分析)3.4 柱形图-TOP10关键词3.5 折线图-讨论热度趋…

ViewOverlay-使用简单实践

ViewOverlay-使用简单实践 一、ViewOverlay能实现什么?二、基础用法2.1 一个简单案例2.2 overlay.add(drawable)/groupOverlay.add(view)之后,不显示问题解决2.2.1 add(Drawable)方法2.2.1 add(View)方法 一、ViewOverlay能实现什么? 在Andro…

北京软件外包开发流程

随着软件的规模越做越多,功能也越来越复杂,对项目管理和开发人员也提出了更高的要求。软件开发的流程通常包括需求分析、项目评估与计划、设计、编码、测试等多个环节,今天和大家分享这方面的知识,希望对大家有所帮助。 软件外包开…

关系代数表达式练习(针对难题)

教师关系T(T#,TNAME,TITLE)课程关系C(C#,CNAME,TNO)学生关系S(S#,SNAME,AGE,SEX)选课关系SC(S#,C#,SCORE) 检索至少选修了C2,C4两门课程的学生学号: 涉及减法相关: 检索不学C2课的学生姓名和年龄 涉及除法相关: 检索…

使用SQL语句创建存储过程

前言: 本篇文章是记录学校学习SQL server中知识,可用于复习资料. 目录 前言:一、存储过程的创建1、创建简单存储过程2、创建带参数的存储过程3、创建带输出参数的存储过程 二 、使用T一SQL语句管理和维护存储过程2.1 使用sp_helptext查看存储过程student_sc的定义脚本2.2 使用…

Redis安装与启动

概念 简介:Redis是基于内存的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。特点:Redis是用C语言开发的一个开源的高性能健值对(key-value)数据库,官方提供的数据是每秒内查询次数十万加。它存储的value类型比较丰富&a…

问麻了…阿里一面索命27问,过了就60W+

前言 在40岁老架构师尼恩的(50)读者社区中,经常有小伙伴,需要面试阿里、 百度、头条、美团、京东等大厂。 下面是一个小伙伴成功拿到通过了阿里三次技术面试,小伙伴通过三个多小时技术拷问,最终拿到 offe…