sdv-dev/SDV
GitHub: sdv-dev/SDV
SDV 是一个基于机器学习的 Python 库,用于生成高质量的表格合成数据,以解决数据隐私保护、共享受限及测试数据匮乏的问题。
Stars: 3466 | Forks: 414
此代码库属于 The Synthetic Data Vault Project 的一部分,这是来自 DataCebo 的一个项目。
[](https://pypi.org/search/?c=Development+Status+%3A%3A+5+-+Production%2FStable)
[](https://pypi.python.org/pypi/SDV)
[](https://github.com/sdv-dev/SDV/actions/workflows/unit.yml?query=branch%3Amain)
[](https://github.com/sdv-dev/SDV/actions/workflows/integration.yml?query=branch%3Amain)
[](https://codecov.io/gh/sdv-dev/SDV)
[](https://pepy.tech/project/sdv)
[](https://docs.sdv.dev/sdv/demos)
[](https://forum.datacebo.com)
# 概述
**Synthetic Data Vault** (SDV) 是一个 Python 库,旨在成为您创建表格合成数据的一站式解决方案。SDV 使用多种机器学习算法从您的真实数据中学习模式,并在合成数据中模拟这些模式。
## 功能
:brain: **使用机器学习创建合成数据。** SDV 提供多种模型,涵盖经典的统计方法(GaussianCopula)到深度学习方法(CTGAN)。可以为单表、多连接表或时序表生成数据。
:bar_chart: **评估和可视化数据。** 根据多种指标将合成数据与真实数据进行对比。诊断问题并生成质量报告以获取更多洞察。
:arrows_counterclockwise: **预处理、匿名化和定义约束。** 控制数据处理以提高合成数据的质量,选择不同类型的匿名化方式,并以逻辑约束的形式定义业务规则。
| 重要链接 | |
| --------------------------------------------- | ----------------------------------------------------------------------------------------------------|
| [ **教程**][Tutorials] | 亲身体验 SDV。启动教程笔记本并自行运行代码。 |
| :book: **[Docs]** | 通过用户指南和 API 参考了解如何使用 SDV 库。 |
| :orange_book: **[Blog]** | 获取有关使用 SDV、部署模型以及我们合成数据社区的更多见解。 |
| :busts_in_silhouette: **[DataCebo Forum]** | 讨论 SDV 功能、提问并获取帮助 . |
| :computer: **[Website]** | 查看 SDV 网站以获取有关项目的更多信息。 |
# 安装
SDV 在 [Business Source License](https://github.com/sdv-dev/SDV/blob/main/LICENSE) 下公开发布。
使用 pip 或 conda 安装 SDV。我们建议使用虚拟环境以避免与您设备上的其他软件发生冲突。
```
pip install sdv
```
```
conda install -c pytorch -c conda-forge sdv
```
# 快速入门
加载演示数据集以开始使用。该数据集是一个单表,描述了入住一家虚构酒店的客人。
```
from sdv.datasets.demo import download_demo
real_data, metadata = download_demo(modality='single_table', dataset_name='fake_hotel_guests')
```

该演示还包括 **元数据**(metadata),即对数据集的描述,包括每列中的数据类型和主键(`guest_email`)。
## 合成数据
接下来,我们可以创建一个 **SDV synthesizer**(合成器),这是一个可用于创建合成数据的对象。它从真实数据中学习模式并复制这些模式以生成合成数据。让我们使用 [GaussianCopulaSynthesizer](https://docs.sdv.dev/sdv/single-table-data/modeling/synthesizers/gaussiancopulasynthesizer)。
```
from sdv.single_table import GaussianCopulaSynthesizer
synthesizer = GaussianCopulaSynthesizer(metadata)
synthesizer.fit(data=real_data)
```
现在合成器已准备好创建合成数据!
```
synthetic_data = synthesizer.sample(num_rows=500)
```
合成数据将具有以下属性:
- **敏感列已完全匿名化。** 电子邮件、账单地址和信用卡号列包含新数据,因此您不会暴露真实值。
- **其他列遵循统计模式。** 例如,客房类型的比例、入住日期的分布以及房价和客房类型之间的相关性均得以保留。
- **键和其他关系保持完整。** 主键(客人电子邮件)对于每一行都是唯一的。如果您有多个表,主键和外键之间的连接是合理的。
## 评估合成数据
SDV 库允许您通过将合成数据与真实数据进行比较来评估合成数据。首先生成一份质量报告。
```
from sdv.evaluation.single_table import evaluate_quality
quality_report = evaluate_quality(real_data, synthetic_data, metadata)
```
```
Generating report ...
(1/2) Evaluating Column Shapes: |████████████████| 9/9 [00:00<00:00, 1133.09it/s]|
Column Shapes Score: 89.11%
(2/2) Evaluating Column Pair Trends: |██████████████████████████████████████████| 36/36 [00:00<00:00, 502.88it/s]|
Column Pair Trends Score: 88.3%
Overall Score (Average): 88.7%
```
该对象计算 0 到 100%(100 为最佳)范围内的整体质量评分以及详细的细分数据。为了获得更多洞察,您还可以可视化合成数据与真实数据。
```
from sdv.evaluation.single_table import get_column_plot
fig = get_column_plot(
real_data=real_data,
synthetic_data=synthetic_data,
column_name='amenities_fee',
metadata=metadata,
)
fig.show()
```

# 后续步骤?
使用 SDV 库,您可以合成单表、多表和时序数据。您还可以自定义完整的合成数据工作流,包括预处理、匿名化和添加约束。
要了解更多信息,请访问 [SDV 演示页面](https://docs.sdv.dev/sdv/demos)。
## 引用
如果您在研究中使用 SDV,请引用以下论文:
*Neha Patki, Roy Wedge, Kalyan Veeramachaneni*. [The Synthetic Data Vault](https://dai.lids.mit.edu/wp-content/uploads/2018/03/SDV.pdf). [IEEE DSAA 2016](https://ieeexplore.ieee.org/document/7796926).
```
@inproceedings{
SDV,
title={The Synthetic data vault},
author={Patki, Neha and Wedge, Roy and Veeramachaneni, Kalyan},
booktitle={IEEE International Conference on Data Science and Advanced Analytics (DSAA)},
year={2016},
pages={399-410},
doi={10.1109/DSAA.2016.49},
month={Oct}
}
```
[The Synthetic Data Vault Project](https://sdv.dev) 最初于 2016 年在 MIT 的 [Data to AI Lab](
https://dai.lids.mit.edu/) 创建。经过 4 年的研究和企业应用,我们于 2020 年创建了 [DataCebo](https://datacebo.com),旨在发展该项目。
如今,DataCebo 是 SDV 的自豪开发者,这是最大的合成数据生成与评估生态系统。它拥有多个支持合成数据的库,包括:
* 🔄 数据发现与转换。逆向转换以重现真实数据。
* 🧠 多种机器学习模型——从 Copulas 到深度学习——用于创建表格、多表和时间序列数据。
* 📊 衡量合成数据的质量和隐私,并比较不同的合成数据生成模型。
[开始使用 SDV 包](https://bit.ly/sdv-docs) —— 这是一个完全集成的解决方案,是您合成数据的一站式商店。或者,使用独立库来满足特定需求。
标签:Apex, DataCebo, DNS解析, SDV, Synthetic Data Vault, 人工智能, 凭据扫描, 合成数据, 开源项目, 数据仿真, 数据增强, 数据生成, 数据科学, 数据脱敏, 机器学习, 深度学习, 生成式模型, 用户模式Hook绕过, 算法, 统计分析, 网络安全, 表格数据, 资源验证, 逆向工具, 隐私保护