简单的纯LDP频率oracle实现

pure-ldp的Python项目详细描述


纯LDP

pure-LDP是一个Python包,它提供各种最先进的LDP算法(包括频率预言器和重攻击器)的简单实现,其主要目标是提供一个简单的接口来使用这些算法。在

本文详细介绍了纯LDP作为纯LDP频率存储器的封装 "Locally Differentially Private Protocols for Frequency Estimation"作者:王等

该软件包实现了本文中详述的所有三个主频预言器:

  1. (最佳)一元编码-低于pure_ldp.frequency_oracles.unary_encoding
  2. (求和/阈值)直方图编码-低于pure_ldp.frequency_oracles.histogram_encoding
  3. (最优)局部哈希-低于pure_ldp.frequency_oracles.local_hashing

该软件包还包括重攻击算法前缀扩展方法(PEM)的实现

  • 这是在pure_ldp.heavy_hitters.prefix_extending

该软件包还包含其他LDP实现:

  1. 苹果的Count Mean Sketch (CMS / HCMS)算法-这在pure_ldp.frequency_oracles.apple_cms
  2. Hadamard Response (HR)-这在pure_ldp.frequency_oracles.hadamard_response下面实现的代码只是回购hadamard_response的纯LDP包装器

安装

使用包管理器pip安装。在

pip install pure-ldp

升级到latest version

^{pr2}$

需要numpy、scipy、xxhash、bitarray和bitstring

使用

importnumpyasnpfrompure_ldp.frequency_oracles.local_hashingimportLHClient,LHServer# Using Optimal Local Hashing (OLH)epsilon=3# Privacy budget of 3d=4# For simplicity, we use a dataset with 4 possible data itemsclient_olh=LHClient(epsilon=epsilon,d=d,use_olh=True)server_olh=LHServer(epsilon=epsilon,d=d,use_olh=True)# Test dataset, every user has a number between 1-4, 10,000 users totaldata=np.concatenate(([1]*4000,[2]*3000,[3]*2000,[4]*1000))foritemindata:# Simulate client-side privatisationpriv_data=client_olh.privatise(item)# Simulate server-side aggregationserver_olh.aggregate(priv_data)# Simulate server-side estimationprint(server_olh.estimate(1))# Should be approximately 4000 +- 200

更多示例请参见example.py。在

托多

  1. 苹果SFP的实现
  2. 谷歌RAPPOR的实现
  3. 频率预言/重击算法的实现详见
  4. 更好的文档!在

致谢

  1. 一些OLH代码是基于Tianhao Wang:repo实现的
  2. Hadamard响应代码只是k2的包装器哈达迈德.py回购中的代码Ziteng Sun

贡献

如果您觉得这个软件包可以以任何方式得到改进,请打开问题或发出请求!在

许可证

MIT

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java变量始终存储0值。为什么?   如何使用Java/REST将Azure blob从一个存储容器移动到另一个存储容器?   java将commons DBCP从1.2升级到1.4,我应该害怕吗?   java如何使用分隔符拆分字符串?   java使用数组读取json对象   java在groovy中切片字符串   交换数组java的两个邻域元素   java移动用于确定字符串是否为回文的逻辑   java Android应用程序在一个活动中崩溃   java Sparkjava将webapp文件夹设置为静态资源/模板的文件夹   java复杂条件表达式,用户易用。   java如何仅在表存在时从表中选择值   java I无法将数据从Recyclerview传递到其他活动   java数据结构最佳设计(大数据)   java Android从DatePickerDialogFragment中删除日历视图   java将数据从Firebase获取到片段   数组。sort()在java中运行不正常