DPdisPCA算法原理笔记

news2024/9/21 4:35:09
概要

本文简单理顺《Differentially Private Distributed Principal Component Analysis》论文中的算法原理,它主要提出了一种基于差分隐私的分布式PCA算法,研究了该算法在实验数据以及真实数据中的表现,在参数相同的情况下本算法取得了和没有隐私保护的算法相同级别的效果。

算法原理

一些数学公式上的符号定义
1、 S S S表示分布式中有 S S S个站点;
2、每个站点的数据集 D × N s D\times N_s D×Ns其中 s ∈ [ S ] s \in [S] s[S]表示有 D D D N s N_s Ns个样本量,样本集表示成 X s = [ x s , 1 , x s , 2 , . . . , x s , N s ] X_s=[x_{s,1},x_{s,2},...,x_{s,N_s}] Xs=[xs,1,xs,2,...,xs,Ns]
3、并且样本集的样本满足对 ∀ n ∈ [ N s ] \forall n \in [N_s] n[Ns]都有 ∣ ∣ x s , n ∣ ∣ 2 ≤ 1 , ∀ s ∈ [ S ] ||x_{s,n}||_2 \le 1, \forall s \in [S] ∣∣xs,n21,s[S],简单说就是观察样本符合均值中心化;
4、每个站点的协方差矩阵: A s = 1 N s X s X s T A_s=\frac{1}{N_s}X_sX_s^T As=Ns1XsXsT
5、各站点的总样本数: N = ∑ s = 1 S N s N=\sum_{s=1}^SN_s N=s=1SNs,整体样本: X = [ X 1 , X 2 , . . . , X S ] ∈ R D × N X=[X_1,X_2,...,X_{S}] \in \R^{D\times N} X=[X1,X2,...,XS]RD×N,整体样本的协方差: A = 1 N X X T A=\frac{1}{N}XX^T A=N1XXT

PCA和差分隐私的简单介绍参见:https://blog.csdn.net/superY_26/article/details/131140813

DPdisPCA算法的逻辑如下图:

图中for循环内的逻辑在每个站点执行,主要操作为:
1、计算各站点的协方差 A s A_s As
2、生成服从 N ( 0 , τ 2 ) N(0,τ^2) N(0,τ2)分布 τ = 1 N s ϵ 2 l o g ( 1.25 δ ) τ=\frac{1}{N_s\epsilon} \sqrt{2log(\frac{1.25}{\delta})} τ=Nsϵ12log(δ1.25) 的随机噪声 E E E
3、将协方差加入噪声 A s ^ = A s + E \hat{A_s}=A_s+E As^=As+E
4、求协方差的SVD: A s ^ = U Σ U T \hat{A_s}=U\Sigma U^T As^=UΣUT
5、 计算 P s = U R Σ R 1 2 , ( K < R < < D ) P_s=U_R\Sigma_R^{\frac{1}{2}}, \scriptsize (K<R<<D) Ps=URΣR21,(K<R<<D),并将其发送给aggregator。

循环外则是aggregator的操作:
1、整合每个站点发过来的 P s P_s Ps A c = 1 S ∑ s = 1 S P s P s T A_c=\frac{1}{S}\sum_{s=1}^SP_sP_s^T Ac=S1s=1SPsPsT
2、求 A c A_c Ac的SVD: A c = V Λ V T A_c=V\Lambda V^T Ac=VΛVT
3、按特征值排序去top K的特征向量得到 V K V_K VK

算法中各站点为什么发送 P s P_s Ps给aggregator?
【原因】算法中对于各站点发送截断的P_s是因为考虑通信成本的问题,降低通信量,提升性能。
最好的发送加入噪声的协方差 A s ^ \hat {A_s} As^进行汇总,然后求SVD值。这个被证明效果会更好。

实验结果

在这里插入图片描述

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

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

相关文章

OpenGL之深度测试

文章目录 深度测试深度测试函数源代码 深度测试 深度缓冲就像颜色缓冲(Color Buffer)&#xff08;储存所有的片段颜色&#xff1a;视觉输出&#xff09;一样&#xff0c;在每个片段中储存了信息&#xff0c;并且&#xff08;通常&#xff09;和颜色缓冲有着一样的宽度和高度。深…

Python3 条件控制与循环语句 | 菜鸟教程(八)

目录 一、Python3 条件控制 &#xff08;一&#xff09;Python 条件语句是通过一条或多条语句的执行结果&#xff08;True 或者 False&#xff09;来决定执行的代码块。 &#xff08;二&#xff09;if 语句 1、Python中if语句的一般形式如下所示&#xff1a; 2、注意&#…

<Linux开发>驱动开发 -之-platform 驱动

&#xff1c;Linux开发&#xff1e;驱动开发 -之-platform 驱动 交叉编译环境搭建&#xff1a; &#xff1c;Linux开发&#xff1e; linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下&#xff1a; &#xff1c;Linux开发&#xff1e; -之-系统移植 uboot移植过程详细记…

基于SpringBoot+Vue的民宿管理平台系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

某音短视频评论采集翻页(移动安全篇)

本章测试一个作品的评论及翻页&#xff1a; 以及前面的抓x包方式&#xff0c;在专栏里也有很多&#xff0c;xposed抓包过sslping&#xff0c;通用版本等&#xff1b; https://codeooo.blog.csdn.net/category_11500477.html 翻页通过页码来控制&#xff1a; # -*- coding:…

Docker部署(1)——将jar包打成docker镜像并启动容器

在代码编写完成即将部署的时候&#xff0c;如果采用docker容器的方法&#xff0c;需要将jar包打成docker镜像并通过镜像将容器启动起来。具体的步骤如下。 一、首先下载java镜像 先使用docker search java命令进行搜索。 然而在拉取镜像的时候要注意不能直接去选择pull java ,…

kubernetes(k8s)理论篇

注意&#xff1a;kubeadm与docker是有版本要求的。 如果版本不兼容&#xff0c;初始化 kubeadm是会出现以下问题。 学习k8s掌握知识 基础概念 什么是 Pod 控制器类型 K8S 网络通讯模式 Kubernetes 构建 K8S 集群 资源清单 资源 掌握资源清单的语法 编写 Pod 掌握 Pod 的…

C国演义 [第四章]

第四章 全排列题目理解步骤树形图递归函数递归结束条件单层逻辑 代码 全排列II题目理解步骤递归函数递归结束条件单层逻辑 代码 全排列 力扣链接 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1&#xff1a; 输…

简要介绍 | 深度学习中的自注意力机制:原理与挑战

注1&#xff1a;本文系“简要介绍”系列之一&#xff0c;仅从概念上对深度学习中的自注意力机制进行非常简要的介绍&#xff0c;不适合用于深入和详细的了解。 注2&#xff1a;"简要介绍"系列的所有创作均使用了AIGC工具辅助 深度学习中的自注意力机制&#xff1a;原…

android jetpack databinding的基本使用(java)

目录 databing的基本使用二级页面的绑定自定义BindingAdapter自定义BinddingAdapter的可选旧值双向绑定使用ObservableField来进行双向绑定 在recycleview中使用databinding databing的基本使用 开启databing android {........dataBinding{enable true} }修改布局文件 为布…

Unity UGUI6——UGUI进阶

一、UI 事件监听接口 ​ 目前所有的控件都只提供了常用的事件监听列表 ​ 如果想做一些类似长按&#xff0c;双击&#xff0c;拖拽等功能是无法制作的&#xff0c;或者想让 Image 和 Text&#xff0c;RawImage 三大基础控件能够响应玩家输入也是无法制作的 ​ 而事件接口就是…

Elasticsearch 基本使用(三)条件查询

条件查询 单条件查询matchdebug 查看分词结果match_phrase 多条件查询bool 子元素区别 单条件查询 match match 匹配字段&#xff0c;会对条件分词&#xff0c;然后每个词以or的关系在文档倒排索引内进行查询 GET bank/_search {"query": {"match": {&q…

一起学SF框架系列6.1-模块core-Resource

Java虽然提供了java.net.URL类和各种URL前缀处理程序来负责处理对各种资源的访问&#xff0c;但对于低级别资源的访问来说还是不够充分。例如&#xff0c;没有标准化的实现可用于访问需要从类路径中获取或者相对于一个ServletContext的资源&#xff1b;也没有检查所指向的资源是…

火影手游 问答题小抄

文章目录 Part.I IntroductionPart.II 一些常识Chap.I 基础常识Chap.II 人物相关Chap.III 原作相关Chap.III 游戏相关 Part.III 奥义 & 技能Chap.I S 忍Chap.II A 忍Chap.III B 忍Chap.IV C 忍 Part.IV 针对活动Chap.I 组织樱花祭Chap.II 樱花问答 Pary.V 名言Reference Pa…

群辉DSM7.2安装svn服务

Part1前言 今天研究了一晚上使用群辉安装svn&#xff0c;确实挺多坑的&#xff0c;总结记录一下。我的型号是DS220&#xff0c;版本为DSM 7.2 Part2安装docker 首先打开套件中心&#xff0c;如下图&#xff0c;检索docker 然后点击安装&#xff0c;安装之后打开如下&#xff1a…

Clickhouse之物化视图分享

前言 ClickHouse广泛用于用户和系统日志查询场景中&#xff0c;主要针对于OLAP场景&#xff0c;为业务方提供稳定高效的查询服务。在业务场景下&#xff0c;数据以不同的格式、途径写入到clickhouse。用传统JOIN方式查询海量数据&#xff0c;通常有如下痛点: 每个查询的代码冗…

【TOP生物信息】基于Scanpy的单细胞数据质控、聚类、标注

扫码关注下方公粽号&#xff0c;回复推文合集&#xff0c;获取400页单细胞学习资源&#xff01; 「写在前面」 Python作为一种高级编程语言&#xff0c;被广泛用于单细胞数据分析&#xff0c;有着以下的优势&#xff1a; 「大量的生物信息学库&#xff1a;」 Python拥有大量的…

【UE 从零开始制作坦克】6-坦克开炮

效果 步骤 1. 添加初学者内容包&#xff08;需要用到其中的音效和粒子效果&#xff09; 2. 接下来制作坦克的炮弹 首先新建一个Actor蓝图类&#xff0c;作为所有发射物体&#xff08;炮弹、机枪子弹等&#xff09;的父类&#xff0c;这里命名为“TotalCategoryOfProjectile”…

从清华高材生拿到百万年薪offer说起

这几天在脉脉上看到一个很火的帖子&#xff0c;帖子内容是一位清华姚班毕业的博士&#xff0c;透露其拿到「亚马逊应用科学家」的offer&#xff0c;Base 110k/月&#xff0b;股票400K分四年给&#xff0c;还有195k的签字费。 清华姚班毕业薪资 看到这张截图博主留下了羡慕的泪…

搞懂了,React 中原来要这样测试自定义 Hooks

React 中自定义的 Hooks 为开发者提供了重用公共方法的能力。然而&#xff0c;如果你是一个测试新手的话&#xff0c;测试这些钩子可能会很棘手。本文中&#xff0c;我们将探索如何使用 React Testing Library 测试库来测试自定义钩子。 如何测试 React 组件 开始前&#xff…