IBM 差异隐私库
项目描述
Diffprivlib v0.5
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 由四个主要组件组成:
- 机制:这些是差分隐私的构建块,用于所有实现差分隐私的模型。机制几乎没有或没有默认设置,旨在供实施他们自己的模型的专家使用。但是,它们可以在模型之外用于单独的调查等。
- 模型:该模块包括具有差异隐私的机器学习模型。Diffprivlib 目前有用于聚类、分类、回归、降维和预处理的模型。
- 工具: Diffprivlib 带有许多用于差异私有数据分析的通用工具。这包括差分私有直方图,格式与Numpy 的直方图函数相同。
- 会计师:该
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 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 0f7278d9d655214590899999da317eda9762dc9d8dd9feb8c3735e706ecf82a1 |
|
| MD5 | be6c482ea1cd5bec9af950b62a8b2fdb |
|
| 布莱克2-256 | 567a0f426c11a054efae28cf5c102dc3767588c197548da0186766b74fd31b1e |
diffprivlib -0.5.2-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 3bbe171c241d233a8d52c3cc36632c839fc9b30ec27d9ae5ce6d650e65f0b829 |
|
| MD5 | 961ac01543f33c6a8c0c72b4f431deb4 |
|
| 布莱克2-256 | a46ab4529036c701e20c6de35a8bc3936ff6ee7a400df9d686543b5a2bc517b2 |