Skip to content

Releases: IBM/differential-privacy-library

Diffprivlib 0.6.4

31 Jan 11:04
Compare
Choose a tag to compare

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

Full Changelog: 0.6.3...0.6.4

Diffprivlib 0.6.3

30 Jun 15:40
Compare
Choose a tag to compare

This release of diffprivlib is a minor update to maintain compatibility with the newly-released Scikit-Learn v1.3.

Fixed

  • Bug in DecisionTreeClassifier and RandomForestClassifier 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 in quantile by @naoise-h in #85

Full Changelog: 0.6.2...0.6.3

Diffprivlib 0.6.2

09 Dec 15:17
9369ae7
Compare
Choose a tag to compare

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 and RandomForestClassifier resulting from recent scikit-learn deprecations

Merged Pull Requests

Full Changelog: 0.6.1...0.6.2

Diffprivlib 0.6.1

24 Nov 17:35
049f463
Compare
Choose a tag to compare

This release is a minor bugfix to support the upcoming release of Numpy 1.24.0

Fixed

  • Numpy's histogramdd has deprecated the normed keyword, which has now been removed from diffprivlib.

Merged Pull Requests

Full Changelog: 0.6.0...0.6.1

Diffprivlib 0.6.0

21 Oct 15:26
f5c5637
Compare
Choose a tag to compare

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 a bounds parameter (similar to other models) instead of the previous feature_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

Full Changelog: 0.5.2...0.6.0

Diffprivlib 0.5.2

13 May 13:07
Compare
Choose a tag to compare

This is a minor release of diffprivlib that adds the snapping mechanism and fixes bugs introduced by Scikit-learn 1.1.0.

Added

  • Snapping mechanism, Snapping (#46, by @danrr)

Fixed

  • Bugs in LinearRegression, LogisticRegression and RandomForestClassifier introduced by release of Scikit-learn 1.1.0 (#65)

New Contributors

  • @danrr made their first contribution in #46

Full Changelog: 0.5.1...0.5.2

Diffprivlib 0.5.1

17 Jan 12:33
936b9af
Compare
Choose a tag to compare

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

01 Oct 12:00
90b319a
Compare
Choose a tag to compare

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 the models module (#41, by mismayil)
  • The Exponential and PermuteAndFlip mechanisms now support monotonic 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 and Bingham 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

Removed

  • The Wishart mechanism has been removed (#42, eeae0d7)

Diffprivlib 0.4.1

29 Jan 17:41
Compare
Choose a tag to compare

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

18 Dec 11:45
Compare
Choose a tag to compare

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 and PermuteAndFlip mechanisms for differentially private selection. The previous (categorical) exponential mechanism has now been renamed ExponentialCategorical.
  • Bingham mechanism to produce a differentially private estimate of the first eigenvector of a covariance matrix.
  • median, quantile and percentile 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 by Laplace().set_epsilon(1).set_sensitivity(1), it is now instantiated by Laplace(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 the Bingham 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