Skip to main content

synthetic-data-generator

Project description

组件简介

高质高效的单表和多表数据合成组件。

简介

Synthetic Data Generator(SDG)是一个专注于结构化表格数据快速生成合成数据的组件。它支持先进的CTGAN、TVAE、CTAB-GAN、OCTGAN、CorTGAN等10种模型,并跟踪业界最新工作,将新发表的优质算法/模型纳入支持清单。SDG不仅支持单表和多表数据的快速生成,还从生产环境的角度出发,提供多元化的部署和多机多卡训练等特性,帮助组织和企业用户快速生成高质量的合成数据,以支持各种应用场景和需求。

重要链接
📖 文档 项目API文档
:octocat: 项目仓库 项目Github仓库
📜 License Apache-2.0 license
举个例子 🌰 AI靶场上运行SDG示例(TBD)

目录

主要特性

  • 支持SOTA工作并进行性能优化
    • 已支持单表和多表数据合成的10种先进算法,SDG会持续跟踪学术界和工业界的最新进展,及时引入支持优秀算法和模型;
    • 针对实际生产需求进行优化,提升模型性能,降低内存开销,支持单机多卡、多机多卡等实用特性。
  • 支持生产环境高效使用
    • 提供自动化部署、容器化技术、自动化监控和报警等生产环境所需技术;
    • 针对负载均衡和容错性进行专门优化,提升组件可用性。
  • 支持中文敏感数据自动检测与匿名化
    • 提供中文敏感数据自动识别能力,包括姓名、身份证号、人名等17种常见敏感字段;
    • 实现对敏感字段的匿名化,保证合成数据的安全性。

算法列表

表1:单表合成算法效果对比(F1-score)

模型 Adult(二分类数据集)(%) Satellite(多分类数据集)(%)
原始数据集 69.5 89.23
CTGAN 60.38 69.43
TVAE 59.52 83.58
table-GAN 63.29 79.15
CTAB-GAN 58.59 79.24
OCT-GAN 55.18 80.98
CorTGAN 67.13 84.27

表2:多表合成算法效果对比

模型 Rossmann(回归数据集)(rmspe) Telstra(分类数据集)(mlogloss)
原始数据集 0.2217 0.5381
SDV 0.6897 1.1719
CWAMT 0.4348 0.818

相关论文和数据集链接

论文

数据集

快速开始

单表数据快速合成示例

# 导入相关模块
from utils.io.csv_utils import *
from models.single_table.ctgan import GeneratorCTGAN
from transform.transformer import DataTransformerCTGAN
from transform.sampler import DataSamplerCTGAN

# 读取数据
demo_data, discrete_cols  = get_demo_single_table()

真实数据示例如下:

       age  workclass  fnlwgt  ... hours-per-week  native-country  label
0       27    Private  177119  ...             44   United-States  <=50K
1       27    Private  216481  ...             40   United-States  <=50K
2       25    Private  256263  ...             40   United-States  <=50K
3       46    Private  147640  ...             40   United-States  <=50K
4       45    Private  172822  ...             76   United-States   >50K
...    ...        ...     ...  ...            ...             ...    ...
32556   43  Local-gov   33331  ...             40   United-States   >50K
32557   44    Private   98466  ...             35   United-States  <=50K
32558   23    Private   45317  ...             40   United-States  <=50K
32559   45  Local-gov  215862  ...             45   United-States   >50K
32560   25    Private  186925  ...             48   United-States  <=50K

[32561 rows x 15 columns]

#定义模型
model = GeneratorCTGAN(epochs=10,\
                       transformer= DataTransformerCTGAN,\
                       sampler=DataSamplerCTGAN)
# 训练模型
model.fit(demo_data, discrete_cols)

# 生成合成数据
sampled_data = model.generate(1000)

合成数据如下:

   age         workclass  fnlwgt  ... hours-per-week  native-country  label
0   33           Private  276389  ...             41   United-States   >50K
1   33  Self-emp-not-inc  296948  ...             54   United-States  <=50K
2   67       Without-pay  266913  ...             51        Columbia  <=50K
3   49           Private  423018  ...             41   United-States   >50K
4   22           Private  295325  ...             39   United-States   >50K
5   63           Private  234140  ...             65   United-States  <=50K
6   42           Private  243623  ...             52   United-States  <=50K
7   75           Private  247679  ...             41   United-States  <=50K
8   79           Private  332237  ...             41   United-States   >50K
9   28         State-gov  837932  ...             99   United-States  <=50K

API

具体接口参数请参考 API文档 【TBD】。

维护者

SDG开源项目由哈尔滨工业大学(深圳)数据安全研究院发起,若您对SDG项目感兴趣并愿意一起完善它,欢迎加入我们的开源社区。

如何贡献

非常欢迎你的加入!提一个 Issue 或者提交一个 Pull Request。

开发环境配置请参考开发者文档

许可证

SDG开源项目使用 Apache-2.0 license,有关协议请参考LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sdgx-0.0.0a0.tar.gz (28.4 kB view hashes)

Uploaded Source

Built Distribution

sdgx-0.0.0a0-py3-none-any.whl (27.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page