Skip to main content

IBM 差异隐私库

项目描述

Diffprivlib v0.5

Python 版本 下载 派皮版本 PyPi 状态 构建状态 文件状态 语言等级:Python 编解码器

Diffprivlib 是一个通用库,用于在差分隐私中试验、调查和开发应用程序。

如果您希望:

  • 尝试不同的隐私
  • 使用分类和聚类模型探索差异隐私对机器学习准确性的影响
  • 使用我们广泛的机制集合构建您自己的差异隐私应用程序

Diffprivlib 支持 Python 版本 3.7 到 3.10。

入门:30 秒内具有差异隐私的机器学习

我们正在使用Iris 数据集,所以让我们加载它并执行 80/20 训练/测试拆分。

from sklearn import datasets
from sklearn.model_selection import train_test_split

dataset = datasets.load_iris()
X_train, X_test, y_train, y_test = train_test_split(dataset.data, dataset.target, test_size=0.2)

现在,让我们训练一个差分私有朴素贝叶斯分类器。我们的分类器就像sklearn分类器一样运行,因此您可以快速启动和运行。

diffprivlib.models.GaussianNB可以不带任何参数运行,尽管这会引发警告(我们需要指定bounds参数以避免这种情况)。隐私级别由参数 控制,该参数epsilon在初始化时传递给分类器(例如GaussianNB(epsilon=0.1))。默认值为epsilon = 1.0.

from diffprivlib.models import GaussianNB

clf = GaussianNB()
clf.fit(X_train, y_train)

我们现在可以对未见过的示例进行分类,因为我们知道经过训练的模型具有不同的隐私性,并保留了训练集中“个人”的隐私(花也有权享有他们的隐私!)。

clf.predict(X_test)

每次使用 训练模型时.fit(),由于差分隐私的随机性,会产生不同的模型。因此,即使使用相同的训练数据重新训练,准确性也会发生变化。自己试试就知道了!

print("Test accuracy: %f" % clf.score(X_test, y_test))

我们可以很容易地评估模型对各种epsilon值的准确性,并用 绘制它matplotlib

import numpy as np
import matplotlib.pyplot as plt

epsilons = np.logspace(-2, 2, 50)
bounds = ([4.3, 2.0, 1.1, 0.1], [7.9, 4.4, 6.9, 2.5])
accuracy = list()

for epsilon in epsilons:
    clf = GaussianNB(bounds=bounds, epsilon=epsilon)
    clf.fit(X_train, y_train)
    
    accuracy.append(clf.score(X_test, y_test))

plt.semilogx(epsilons, accuracy)
plt.title("Differentially private Naive Bayes accuracy")
plt.xlabel("epsilon")
plt.ylabel("Accuracy")
plt.show()

差分私人朴素贝叶斯

恭喜,您已经使用差分隐私库完成了您的第一个差分隐私机器学习任务!查看notebooks目录中的更多示例,或直接进入.

内容

Diffprivlib 由四个主要组件组成:

  1. 机制:这些是差分隐私的构建块,用于所有实现差分隐私的模型。机制几乎没有或没有默认设置,旨在供实施他们自己的模型的专家使用。但是,它们可以在模型之外用于单独的调查等。
  2. 模型:该模块包括具有差异隐私的机器学习模型。Diffprivlib 目前有用于聚类、分类、回归、降维和预处理的模型。
  3. 工具: Diffprivlib 带有许多用于差异私有数据分析的通用工具。这包括差分私有直方图,格式与Numpy 的直方图函数相同。
  4. 会计师:BudgetAccountant课程可用于跟踪隐私预算并使用高级组合技术计算总隐私损失。

设置

安装pip

该库旨在与 Python 3 一起运行。可以使用pip(或pip3)从 PyPi 存储库安装该库:

pip install diffprivlib

手动安装

对于最新版本的库,下载源代码或克隆您选择的目录中的存储库:

git clone https://github.com/IBM/differential-privacy-library

要安装diffprivlib,请在项目文件夹中执行以下操作(或者,您可以运行python3 -m pip install .):

pip install .

该库带有一组基本的单元测试pytest。要检查您的安装,您可以通过调用pytest安装文件夹来运行所有单元测试:

pytest

引用 diffprivlib

如果您使用 diffprivlib 进行研究,请考虑引用以下参考论文:

@article{diffprivlib,
  title={Diffprivlib: the {IBM} differential privacy library},
  author={Holohan, Naoise and Braghin, Stefano and Mac Aonghusa, P{\'o}l and Levacher, Killian},
  year={2019},
  journal = {ArXiv e-prints},
  archivePrefix = "arXiv",
  volume = {1907.02444 [cs.CR]},
  primaryClass = "cs.CR",
  month = jul
}

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

diffprivlib-0.5.2.tar.gz (90.6 kB 查看哈希

已上传 source

内置分布

diffprivlib-0.5.2-py3-none-any.whl (167.0 kB 查看哈希

已上传 py3