SDV
MIT十年沉淀,用GAN生成「以假乱真」的表格合成数据,保护隐私合规
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
MIT十年沉淀,用GAN生成「以假乱真」的表格合成数据,保护隐私合规
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

图1:SDV 项目 Logo
你有没有想过:如果能把真实的业务数据复制一份,但里面的每一行、每一列都是「假」的——统计规律一模一样,却完全不包含任何真实个人信息——那该有多方便?
这正是 Synthetic Data Vault(SDV) 正在做的事。这个由 MIT Data to AI Lab 于 2016 年发起的数据合成项目,如今已发展成一个完整的开源生态,被全球数百家企业和研究机构用于隐私保护数据共享、软件测试、数据增强等场景。2020 年,核心团队成员创立了商业公司 DataCebo,继续推动该技术的产业化。
在大数据时代,企业积累了大量包含用户行为、财务记录、医疗信息的数据金矿。然而,直接将这些数据开放给第三方或用于算法训练,会带来严重的隐私合规风险——GDPR、CCPA、国内的《数据安全法》都对数据使用提出了严格要求。
SDV 的核心思路是:用机器学习模型「记住」原始数据的统计分布,然后用这个模型生成全新的、但统计特性与原始数据高度相似的人工数据。生成的合成数据既保留了原始数据的「数据形状」(列名、数据类型、值域范围、列间相关性),又不包含任何真实个人的身份信息。
打个比方:如果把真实数据比作一杯咖啡,SDV 的作用就是分析这杯咖啡的成分比例(苦味、酸味、香气),然后用这些分析结果重新调配出一杯外观、口感几乎一致、但不含原咖啡因的「合成咖啡」。品尝者分不出区别,但咖啡因(真实信息)已经被过滤掉了。
SDV 支持三种主流数据场景:
针对独立数据表(Excel 表格、数据库单表等)。这是最基础的使用场景,也是大多数用户接触 SDV 的起点。SDV 提供了多种合成器(Synthesizer),从经典统计方法到深度学习模型一应俱全:
使用方法非常简洁,只需几行代码即可完成从加载数据到生成合成数据的全流程:
from sdv.datasets.demo import download_demo
from sdv.single_table import GaussianCopulaSynthesizer
real_data, metadata = download_demo(modality='single_table', dataset_name='fake_hotel_guests')
synthesizer = GaussianCopulaSynthesizer(metadata)
synthesizer.fit(data=real_data)
synthetic_data = synthesizer.sample(num_rows=500)

图2:单表元数据示例,自动推断列类型和主键
真实业务系统通常包含多张相互关联的表——订单表关联用户表、用户表关联地址表。合成这类数据时,必须保证外键关系的一致性,否则生成的「假」数据在业务逻辑上会自相矛盾。
SDV 提供了 HMA(Hypothetical Data Amalgamation) 算法,专门解决多表关联数据的合成问题。HMA 的核心思路是:先将所有表联合成一个全局模型,学习表间的依赖关系,再统一生成,确保所有外键引用始终有效。
针对用户行为日志、设备传感器数据等具有时间顺序的数据。时序数据的特点是:前后记录之间存在依赖关系(如用户今天的购买行为可能与昨天的浏览记录相关)。SDV 使用 PAR(Pattern-based Autoregressive)算法处理这类数据,在保持时序相关性的同时生成合理的序列数据。
合成数据最怕的不是「假」,而是「假得不像」。如果生成的合成数据统计特性偏离真实数据太远,用它训练出的模型就会产生偏差。
SDV 配套了专门的评估库 SDMetrics,提供多维度的质量评估报告:
from sdv.evaluation.single_table import evaluate_quality
quality_report = evaluate_quality(real_data, synthetic_data, metadata)
# 输出示例:
# Column Shapes Score: 89.11%
# Column Pair Trends Score: 88.3%
# Overall Score (Average): 88.7%
评估维度包括:
同时支持可视化对比,直观展示合成数据与真实数据在同一维度上的分布差异:

图3:合成数据与真实数据可视化对比,评估质量一目了然
SDV 在数据脱敏方面做了不少工作:邮箱、地址、信用卡号等敏感列会自动生成新的匿名值,而非简单置空。这意味着合成数据可以直接分享给外部团队或用于公开数据集发布,而无需担心个人信息泄露。
但需要注意的是:合成数据并非绝对安全。如果攻击者同时拥有关于某个人的部分背景知识(如知道某人是某公司的员工且年龄约30岁),通过反复查询合成数据,仍可能推断出该人在原始数据中的其他敏感信息(这被称为「重识别攻击」)。因此,高敏感场景下仍需谨慎评估合成数据的隐私泄露风险。
SDV 的架构设计高度模块化,核心依赖包括:
| 依赖库 | 作用 |
|---|---|
| CTGAN | 条件生成对抗网络,深度学习合成器核心 |
| Copulas | 统计copula模型,支撑GaussianCopula合成器 |
| DeepEcho | 时序数据合成算法 |
| SDMetrics | 合成数据质量评估 |
| RDT(Reversible Data Transforms) | 数据类型转换,确保GAN能处理离散类别变量 |
| boto3 | AWS S3集成,支持从云存储加载数据 |
| pandas / numpy | 数据处理基础依赖 |
| torch / tensorflow | 深度学习后端(CTGAN使用PyTorch) |
代码组织按功能模块划分:
sdv/single_table/:单表合成器(GaussianCopula, CTGAN, CopulaGAN 等)sdv/multi_table/:多表合成器(HMA 算法)sdv/sequential/:时序数据合成(PAR 算法)sdv/evaluation/:质量评估接口sdv/lite/:轻量级单表合成 API(简化版封装)sdv/constraints/:业务约束定义模块SDV 支持 pip 和 conda 两种安装方式,推荐使用虚拟环境隔离:
pip install sdv
# 或
conda install -c pytorch -c conda-forge sdv
环境要求:Python >= 3.9,支持 Python 3.9 ~ 3.14 全系列版本。
上手门槛:适合有 Python 基础、了解基本机器学习概念的数据从业者。SDV 官方提供了大量 Jupyter Notebook 教程,可通过 Google Colab 直接运行,无需本地安装。
SDV 的出现填补了从「原始数据」到「完全随机假数据」之间的空白——它不是简单的随机生成,也不是对原始数据的直接复制,而是一种基于统计学习的信息保留式数据生成。
从技术演进趋势看,合成数据正成为 AI 时代的重要基础设施:
SDV 作为该领域最具影响力的开源项目之一,配套生态完善(SDMetrics、CTGAN、RDT 等),社区活跃(MIT 背景、DataCebo 商业支持),是进入合成数据领域最值得学习的入门项目。
本分析基于 GitHub 仓库 v1.x 版本,报告生成日期:2026-06-03。License: BUSL-1.1(Business Source License),注意该许可证对商业使用有限制。