简单的纯LDP频率oracle实现
pure-ldp的Python项目详细描述
纯LDP
pure-LDP是一个Python包,它提供各种最先进的LDP算法(包括频率预言器和重攻击器)的简单实现,其主要目标是提供一个简单的接口来使用这些算法。在
本文详细介绍了纯LDP作为纯LDP频率存储器的封装 "Locally Differentially Private Protocols for Frequency Estimation"作者:王等
该软件包实现了本文中详述的所有三个主频预言器:
- (最佳)一元编码-低于
pure_ldp.frequency_oracles.unary_encoding
- (求和/阈值)直方图编码-低于
pure_ldp.frequency_oracles.histogram_encoding
- (最优)局部哈希-低于
pure_ldp.frequency_oracles.local_hashing
该软件包还包括重攻击算法前缀扩展方法(PEM)的实现
- 这是在
pure_ldp.heavy_hitters.prefix_extending
该软件包还包含其他LDP实现:
- 苹果的Count Mean Sketch (CMS / HCMS)算法-这在
pure_ldp.frequency_oracles.apple_cms
下 - Hadamard Response (HR)-这在
pure_ldp.frequency_oracles.hadamard_response
下面实现的代码只是回购hadamard_response的纯LDP包装器
安装
使用包管理器pip安装。在
pip install pure-ldp^{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。在
托多
- 苹果SFP的实现
- 谷歌RAPPOR的实现
- 频率预言/重击算法的实现详见
- 更好的文档!在
致谢
- 一些OLH代码是基于Tianhao Wang:repo实现的
- Hadamard响应代码只是k2的包装器哈达迈德.py回购中的代码Ziteng Sun
贡献
如果您觉得这个软件包可以以任何方式得到改进,请打开问题或发出请求!在
许可证
- 项目
标签: