Releases: Samuel-Maddock/pure-LDP
Releases · Samuel-Maddock/pure-LDP
Version 1.2.0
Bug fix for UEClient _perturb() function to guarantee
If you are using UEClient/UEServer, you should upgrade to this version so that they properly guarantee
Version 1.1.2
Fixed and updated package dependencies on pip
Version 1.1.1
Fixed a pip installation issue
Version 1.1.0
Added new frequency oracles:
- Implemented Google's RAPPOR under
pure_ldp.frequency_oracles.rappor
- Hadamard Mechanism (HM) under
pure_ldp.frequency_oracles.hadamard_mechanism
- Direct Encoding (DE) under
pure_ldp.frequency_oracles.direct_encoding
- A heuristic version of OLH called Fast Local Hashing (FLH) under ```pure_ldp.frequency_oracles.local_hashing``
- Private Count Sketch (PCS) an older version of private sketching under
pure_ldp.frequency_oracles.priv_count_sketch
- SketchRespones (SR) a sketching oracle that uses any generic frequency oracle to perturb sketch rows under
pure_ldp.frequency_oracles.sketch_response
- Zero oracle that just predicts 0 no matter what is aggregated (under
pure_ldp.frequency_oracles.zero_oracle
) - Mainly used for testing/experimenting
Added new heavy hitter implementations:
- Apple's Sequence Fragment Puzzle (SFP) under
pure_ldp.heavy_hitters.apple_sfp
- Bassily et als TreeHistogram under
pure_ldp.heavy_hitters.treehistogram
Other additions:
- Added pre-processing techniques to estimating over the whole domain for any frequency oracle (see the
estimate_all
ofpure_ldp.core._freq_oracle_server
) - Added helpers for frequency oracles and heavy hitters for simulations (under
pure_ldp.simulations.helpers
) - Added a long list of experiments and examples (under
pure_ldp.simulations.paper_experiments.py
)
Bug Fixes and Performance Improvements:
- Fixed wrong perturbation probability being used in Apple's HCMS
- Fixed a whole range of bugs where various parameters of frequency oracles wouldn't update properly
- Performance improvements for local_hashing and unary_encoding
- Fixed bugs in PEM
Version 1.0.6
Bug fixes:
- Hadamard Response now works in low privacy mode (epsilon < 1)
- Hadamard response should properly work via PyPI
New:
- Hadamard Response server has an additional normalisation parameter -
- If normalization = 0 then no normalisation is applied (default)
- If normalization = 1, the estimates are clipped to 0 and normalised
- if normalization=2 then the estimates are projected onto the probability simplex
Version 1.0.5
Changes:
- Added Apple's CMS algorithm under
pure_ldp_frequency_oracles.apple_cms
- Added helper methods to create instances of FOs/HHs in pure_ldp.core
- PEMServer aggregate method now takes a single tuple as an argument (i.e the output of PEMClient.privatise)
- HadamardResponseClient requires hash_funcs generated from HadamardResponseServer
Fixes:
- Updated some docstrings
- Fixed bug with HadamardResponse not permuting data properly
- Fixed typos in the README
- Fixed bugs in examples.py
Version 1.0.4
Breaking changes:
- Package structure has changed, all frequency oracles are now under
pure_ldp.frequency_oracles
i.e for local hashing it is nowfrom pure_ldp.frequency_oracles.local_hashing import LHClient, LHServer
- Heavy hitters are also in their own package (just PEM at the moment)
Bugfixes:
- Fixed examples in example.py
- Added docstrings to PEM package
- Fixed raising errors in base class methods
Version 1.0.3
- Fixed bugs in update_params() for FreqOracleServer and added update_params() for FreqOracleClient
- Reworked core module structure
- Updated some documentation
Version 1.0.2
- Performance Improvements
- Added Prefix Extending Method (PEM) heavy hitter algorithm that uses OLH
- Added hadamard_response frequency oracle, this is a wrapper of hadamard_response
- Added base classes FreqOracleClient, FreqOracleServer in pure_ldp.core that all Frequency Oracles inherit from
- Improved shared aggregation/estimation logic
- Added more helper methods for frequency oracle servers
Version 1.0.1
Bug fixes:
- Fixed README typos
- Converted exceptions into warnings when using a small privacy budget/estimating on small amounts of data
- Fixed long description in setup.py