IBM差异隐私库
diffprivlib的Python项目详细描述
IBM差异隐私库
您刚刚找到IBM Differential Privacy Library
IBM Differential Privacy Library是一个通用库,用于在Differential Privacy中试验、调查和开发应用程序。
如果您希望使用差异隐私库:
- 体验差异隐私
- 使用基本分类和聚类模型探讨差异隐私对机器学习精度的影响
- 使用我们广泛的机制集合,构建您自己的差异隐私应用程序
diffprivlib兼容:python 3.4–3.7。
入门:ML with differential privacy in 30 seconds
我们正在使用Iris dataset,所以让我们加载它并执行80/20的列车/测试拆分。
fromsklearnimportdatasetsfromsklearn.model_selectionimporttrain_test_splitdataset=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
。
importdiffprivlib.modelsasdpclf=dp.GaussianNB()clf.fit(X_train,y_train)
我们现在可以对看不见的例子进行分类,因为我们知道,经过训练的模型是不同的私有模型,并且保留了训练集中“个人”的隐私(flowers也有权获得他们的隐私!).
clf.predict(X_test)
每次使用.fit()
训练模型时,由于差异隐私的随机性,会产生不同的模型。因此,即使使用相同的训练数据对其进行重新训练,其准确性也会发生变化。你自己试试看!
(clf.predict(X_test)==y_test).sum()/y_test.shape[0]
我们可以很容易地评估模型对各种epsilon
值的准确性,并用matplotlib
绘制它。
importnumpyasnpimportmatplotlib.pyplotaspltepsilons=np.logspace(-2,2,50)bounds=[(4.3,7.9),(2.0,4.4),(1.1,6.9),(0.1,2.5)]accuracy=list()forepsiloninepsilons:clf=dp.GaussianNB(bounds=bounds,epsilon=epsilon)clf.fit(X_train,y_train)accuracy.append((clf.predict(X_test)==y_test).sum()/y_test.shape[0])plt.semilogx(epsilons,accuracy)plt.title("Differentially private Naive Bayes accuracy")plt.xlabel("epsilon")plt.ylabel("Accuracy")plt.show()
恭喜你,你已经完成了你的第一个差异私人机器学习任务与差异隐私库!查看notebooks目录或dive straight in中的更多示例。
内容
diffprivlib由三个模块组成:
- 机制:这些是差异隐私的构建块,用于实现差异隐私的所有模型。机制几乎没有或没有默认设置,是为实现自己的模型的专家而设计的。但是,它们可以用于单独调查等外部模型。
- 模型:此模块包括具有差异隐私的机器学习模型。diffprivlib目前有用于集群和分类的模型。
- tools:diffprivlib附带了许多用于差异私有数据分析的通用工具。这包括不同的私有直方图,格式与Numpy's histogram function相同。
设置
使用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