Skip to content

专注于结构化表格数据快速生成合成数据的组件

License

Notifications You must be signed in to change notification settings

wunder957/synthetic-data-generator

Repository files navigation

组件简介

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

简介

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

相关论文和数据集链接

论文

数据集

快速开始

从Pypi安装

pip install sdgx

单表数据快速合成示例

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

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

真实数据示例如下:

       age  workclass  fnlwgt  ... hours-per-week  native-country  class
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  class
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

About

专注于结构化表格数据快速生成合成数据的组件

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages