Releases: IBM/differential-privacy-library
Diffprivlib 0.6.4
This release of diffprivlib is a minor update to fix a bug in some tools
and to maintain compatibility with the newly-released Scikit-Learn v1.4.
Fixed
- Minor bugs arising from the relase of Scikit-Learn v1.4
- Incorrect bounds calculation in Nan-supporting statistical functions in the
tools
module (#87)
Added
- Support for Python 3.12
Merged Pull Requests
- [DOC] Updating documentation by @naoise-h in #89
- [BUG] Fix bounds calculation in nanmean, etc. by @naoise-h in #90
- [BUG] Fixes for scikit-learn v1.4 by @naoise-h in #91
Full Changelog: 0.6.3...0.6.4
Diffprivlib 0.6.3
This release of diffprivlib is a minor update to maintain compatibility with the newly-released Scikit-Learn v1.3.
Fixed
- Bug in
DecisionTreeClassifier
andRandomForestClassifier
arising from the release of Scikit-Learn v1.3
Merged Pull Requests
- Update readme adding known publications by @stefano81 in #78
- [BUG] Fixes
_Node
class for scikit-learn v1.3 by @naoise-h in #86 - [BUG] Fix
random_state
bug inquantile
by @naoise-h in #85
Full Changelog: 0.6.2...0.6.3
Diffprivlib 0.6.2
This release of diffprivlib is a minor update on 0.6.1 to maintain compatibility with the newly-released Scikit-learn 1.2, while also adding explicit support for Python 3.11.
Added
- Support for Python 3.11
Fixed
- Minor changes to support Scikit-learn's new parameter validation
- Minor changes to
PCA
andRandomForestClassifier
resulting from recent scikit-learn deprecations
Merged Pull Requests
Full Changelog: 0.6.1...0.6.2
Diffprivlib 0.6.1
This release is a minor bugfix to support the upcoming release of Numpy 1.24.0
Fixed
- Numpy's
histogramdd
has deprecated thenormed
keyword, which has now been removed from diffprivlib.
Merged Pull Requests
Full Changelog: 0.6.0...0.6.1
Diffprivlib 0.6.0
This version of diffprivlib supports Python versions 3.8 to 3.10.
Changed
Breaking:
RandomForestClassifier
has been substantially rewritten to fix previously-reported bugs and to improve performance. It now takes abounds
parameter (similar to other models) instead of the previousfeature_domains
parameter (#70)
Non-breaking:
- All diffprivlib models and tools now accept a
random_state
parameter to specify a seed for the random number generator (RNG), or to specify a RandomState instance to be used. The implementation follows closely that of scikit-learn, and more details can be found in the PR #72. - To overcome difficulties with its installation on Windows,
crlibm
is now an optional dependency. (#67)
Merged Pull Requests
- [BUG] Making crlibm an optional dependency by @naoise-h in #67
- [ENH] Refactor RandomForestClassifier by @naoise-h in #70
- [ENH] Add random state support to diffprivlib by @naoise-h in #72
- [MNT] Diffprivlib 0.6 by @naoise-h in #74
Full Changelog: 0.5.2...0.6.0
Diffprivlib 0.5.2
This is a minor release of diffprivlib that adds the snapping mechanism and fixes bugs introduced by Scikit-learn 1.1.0.
Added
Fixed
- Bugs in
LinearRegression
,LogisticRegression
andRandomForestClassifier
introduced by release of Scikit-learn 1.1.0 (#65)
New Contributors
Full Changelog: 0.5.1...0.5.2
Diffprivlib 0.5.1
This release of diffprivlib is a minor update on 0.5, adding explicit support for Python 3.10.
Added
- Support for Python 3.10 (#61)
Full Changelog: 0.5.0...0.5.1
Diffprivlib 0.5.0
This release of diffprivlib features a number of additions, fixes and enhancements. This version of diffprivlib supports Python version 3.7 to 3.9.
Added
- A differentially private random forest classifier,
RandomForestClassifier
, has been added to themodels
module (#41, by mismayil) - The
Exponential
andPermuteAndFlip
mechanisms now supportmonotonic
utility functions as an input parameter (08c4d98) - Templates have been added for issues and pull requests (#52, by stefano81)
- We are transitioning to Github Actions for tests and other checks (#54)
Changed
Breaking:
- Mirroring the equivalent behaviour in scikit-learn (since version 0.23), most parameters for diffprivlib models must now be specified as keyword arguments. Failing to do so will raise a
TypeError
. (5fa781e)
Non-breaking:
- The
Laplace
,Gaussian
,Vector
andBingham
distributions are now securely sampled to prevent privacy leakage due to their floating point representation (#47) - Diffprivlib now requires scikit-learn 0.23, numpy 1.19, and scipy 1.5, or later (#51)
Fixed
- Bug in
quantile
for uniform data fixed (#43, d5ac459) - Optimised upper bound for
var
(#45, by justanotherlad) - Bug in
Exponential
mechanism (#50, by justanotherlad) histogramdd
andhistogram2d
now prioritise bin edges frombins
overrange
. (96ef33c)
Removed
Diffprivlib 0.4.1
This release of diffprivlib is a minor update to v0.4 to fix a bug in models.LinearRegression
.
Fixed
- Bug in
models.LinearRegression
which incorrectly calculated the sensitivity for the objective (#35)
Diffprivlib 0.4.0
This release of diffprivlib includes a number of changes and additions to the existing codebase. A number of the changes may break existing code. This version of diffprivlib supports Python versions 3.6 to 3.8.
Added
Exponential
andPermuteAndFlip
mechanisms for differentially private selection. The previous (categorical) exponential mechanism has now been renamedExponentialCategorical
.Bingham
mechanism to produce a differentially private estimate of the first eigenvector of a covariance matrix.median
,quantile
andpercentile
functions.
Changed
Breaking:
- The
mechanisms
module has been comprehensively refactored, with all mechanism parameters now being specified at initialisation. For example, where previously the Laplace mechanism would have been instantiated byLaplace().set_epsilon(1).set_sensitivity(1)
, it is now instantiated byLaplace(epsilon=1, sensitivity=1)
. - The
Wishart
mechanism has been deprecated and will be removed in version 0.5. The Wishart mechanism is known not to satisfy differential privacy, and is therefore not recommended for use.
Non-breaking:
- The
PCA
model's algorithm has been modified, by using eigenvector sampling (through theBingham
mechanism) to estimate a dataset's principal components. Paper: Amin et al, 2019 - The
LinearRegression
model now uses objective perturbation to satisfy differential privacy. Paper: Zhang et al, 2012