跳转到主要内容

生成单表、多表和顺序数据的合成数据

项目描述


此存储库是合成数据仓库项目的一部分,该项目由DataCebo发起。

Dev Status PyPi Shield Unit Tests Integration Tests Coverage Status Downloads Colab Slack

概述

合成数据仓库(SDV)是一个Python库,旨在成为您创建表格合成数据的一站式商店。SDV使用各种机器学习算法从您的真实数据中学习模式,并在合成数据中模拟它们。

功能

:大脑: 使用机器学习创建合成数据。 SDV提供多种模型,从经典统计方法(高斯Copula)到深度学习方法(CTGAN)。生成单个表格、多个连接表格或顺序表格的数据。

:柱状图: 评估和可视化数据。 通过各种度量标准将合成数据与真实数据进行比较。诊断问题并生成质量报告以获取更多见解。

:逆时针箭头: 预处理、匿名化和定义约束。 控制数据处理以提高合成数据质量,从不同类型的匿名化中选择,并以逻辑约束的形式定义业务规则。

重要链接
教程 通过SDV教程笔记本亲自运行代码,获取一些实际操作经验。
:书本: 文档 通过用户指南和API参考了解如何使用SDV库。
:橙色书本: 博客 获取更多关于使用SDV、部署模型以及我们的合成数据社区的信息。
社区 加入我们的Slack工作空间以获取公告和讨论。
:计算机: 网站 查看SDV网站获取有关该项目的更多信息。

安装

SDV在商业源许可证下公开可用。使用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')

Single Table Metadata Example

示例还包括元数据,它是对数据集的描述,包括每列的数据类型和主键(guest_email)。

合成数据

接下来,我们可以创建一个SDV合成器,这是一个您可以使用它来创建合成数据的对象。它从真实数据中学习模式并复制它们以生成合成数据。让我们使用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()

Real vs. Synthetic Data

接下来是什么?

使用SDV库,您可以合成单表、多表和顺序数据。您还可以自定义完整的合成数据工作流程,包括预处理、匿名化和添加约束。

了解更多信息,请访问SDV演示页面

致谢

感谢我们的团队成员多年来构建和维护SDV生态系统!

查看贡献者

引用

如果您在研究中使用了SDV,请引用以下论文

内哈·帕特基,罗伊·韦奇,卡利安·维拉马钱尼。《合成数据宝库》。IEEE DSAA 2016

@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}
}



合成数据宝库项目于2016年在麻省理工学院的数据到AI实验室首次创建。经过4年的企业研究和推广,我们于2020年创建了DataCebo,目标是扩大项目。今天,DataCebo是SDV的骄傲开发者,SDV是最大的合成数据生成和评估生态系统。它拥有多个支持合成数据的库,包括

  • 🔄 数据发现与转换。反转转换以重现现实数据。
  • 🧠 多种机器学习模型 -- 从Copulas到深度学习 -- 以创建表格、多表和时间序列数据。
  • 📊 衡量合成数据的质量和隐私,并比较不同的合成数据生成模型。

开始使用SDV包 -- 一个完全集成的解决方案,是您的合成数据一站式商店。或者,使用独立库以满足特定需求。

项目详情


发布历史 发布通知 | RSS源

下载文件

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

源分发

sdv-1.17.0.tar.gz (133.8 kB 查看哈希值)

上传时间

构建分发

sdv-1.17.0-py3-none-any.whl (152.3 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面