简单的纯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第三方库


热门话题
Selenium中弹出的java句柄窗口   java将格式化消息从任何片段传递到活动   java如何从int类型的方法返回多个整数   servlets数据不会使用java类和bean插入数据库   java如何修改Solr给出的搜索结果页面?   java如何在wildfly中重定向应用程序路径?   java使用Apache异步HTTP客户端从InputStream构造多部分请求   java解析来自REST的压缩输入流   java上载文件失败,原因是Vaadin Spring PlupLocaddon   使用需要CSRF令牌的旧端点的javascript   java如何在viewpager应用程序中将图像设置为墙纸?   java Axis2与SharePoint 2013(ADFS/FedAuth cookie)   java H2选择:意外的类型39映射   Docker Composition中拒绝java Spring应用程序连接   使用Java的ibm mq ibm mq获取LGETTIME   java循环逻辑中的漏洞   javaspringcom。mongodb。util。JSONParseException   方法调用“振动”可能会产生java。更新到Android Studio 3后出现lang.NullPointerException警告   datetime如何将日历的时间与java进行比较。sql。时间物体?