pinakkapoor/dp-analytics
GitHub: pinakkapoor/dp-analytics
一个实用的差分隐私 Python 库,提供常见统计聚合操作的隐私保护实现,附带隐私预算追踪和教学文档。
Stars: 0 | Forks: 0
# dp-analytics
用于常见分析操作的差分隐私库。实现了核心 DP 机制,并将其封装在数据分析师无需先阅读学术论文即可实际使用的接口中。
大多数 DP 库要么是学术参考实现,要么是 Google 庞大的 C++ 框架。本项目介于两者之间 —— 提供分析实际所需的正确机制实现,具备 Python 的人性化设计,并附带解释原理的教学 notebook。
## 包含内容
**机制:**
- Laplace 机制(用于计数、求和)
- Gaussian 机制(用于均值,当需要更紧的界限时)
- Exponential 机制(用于分类/选择查询)
**聚合:**
- 私有计数 (Private count)
- 私有求和 (Private sum)
- 私有均值 (Private mean)
- 私有直方图 (Private histogram)
- 私有分位数 (Private quantiles)(近似)
**隐私预算:**
- 顺序组合追踪
- 单查询 epsilon 分配
- 预算耗尽警告
**Notebooks:**
- `01_what_is_dp.py` — 差分隐私背后的直觉,含可视化
- `02_mechanisms.py` — Laplace/Gaussian 噪声的工作原理,参数调优
- `03_budget.py` — 组合定理及其重要性
- `04_practical_analytics.py` — 真实案例:用户计数、营收聚合
## 安装
```
pip install -e .
```
## 快速开始
```
from dp_analytics import PrivateAggregator
# 创建具有总隐私预算的 aggregator
agg = PrivateAggregator(epsilon=1.0)
# 私有计数
count = agg.count(data, predicate=lambda x: x['status'] == 'active')
print(f"active users: ~{count}") # noisy but unbiased
# 私有均值
avg_revenue = agg.mean(data['revenue'], lower=0, upper=10000)
print(f"avg revenue: ~${avg_revenue:.2f}")
# 检查剩余预算
print(f"budget remaining: {agg.remaining_budget:.2f}")
```
## 准确性与隐私
基本权衡:较小的 epsilon = 更高的隐私 = 更多的噪声 = 更低的准确性。Notebook 中详细介绍了如何针对不同用例选择 epsilon。经验法则:
| epsilon | 隐私级别 | 典型用途 |
|---------|---------|---------|
| 0.1 | 极强 | 敏感的医疗/金融数据 |
| 1.0 | 强 | 大多数分析、用户指标 |
| 5.0 | 中等 | 汇总业务指标 |
| 10+ | 弱 | 几乎无隐私,主要用于测试 |
## 为什么构建这个库
曾在一个使用差分隐私进行产品分析的项目中工作。现有工具要么太学术化,要么对我们所需的场景来说太重。希望能有一种让分析师只需执行 `private_count(users)` 就能得到正确答案,而无需理解 Renyi 散度的工具。
## 参考资料
- Dwork & Roth, "The Algorithmic Foundations of Differential Privacy" (2014)
- Google 的 DP 库:https://github.com/google/differential-privacy
- OpenDP:https://github.com/opendp/opendp
标签:Epsilon管理, 代码示例, 噪声注入, 差分隐私, 拉普拉斯机制, 指数机制, 数据分析, 数据合规, 数据脱敏, 统计聚合, 网络安全, 联邦学习, 逆向工具, 隐私保护, 隐私工程, 隐私组合定理, 隐私计算, 隐私预算, 高斯机制