如何生成公平无偏的合成数据?synthcity之DECAF因果公平实践教程

📅 2026/8/24 9:00:35
如何生成公平无偏的合成数据?synthcity之DECAF因果公平实践教程
如何生成公平无偏的合成数据synthcity之DECAF因果公平实践教程【免费下载链接】synthcityA library for generating and evaluating synthetic tabular data for privacy, fairness and data augmentation.项目地址: https://gitcode.com/gh_mirrors/sy/synthcity在真实世界的数据里偏见无处不在。今天我们将基于 synthcity——一个用于生成与评估合成表格数据的 Python 库用它内置的 DECAFDEbiasing CAusal Fairness因果公平插件手把手教你生成公平无偏的合成数据让下游模型不再继承历史歧视。为什么合成数据需要公平这一课传统的合成数据方法如 GAN、VAE 类模型只关注统计保真让生成数据在分布上接近真实数据。但这带来一个隐藏问题——如果真实数据本身就含有偏见例如薪资受性别影响那么模型学到的偏见也会被原样复制到合成数据中再拿去训练模型歧视就被洗成了白。DECAF 的思路很聪明不改变数据而是改变因果结构。它把数据生成过程显式建模为一张因果有向无环图DAG生成时每个变量都只从它的因果父节点出发重建在生成阶段你只需要切断有偏边例如性别 → 薪资偏见路径就被策略性地移除而数据的真实结构得以保留。核心思想公平性不靠后处理而是靠因果图中的断边来实现任何下游模型在公平数据上训练天然公平。30 秒了解 synthcity 与 DECAFsynthcity 采用插件化架构你只需一行Plugins().get(decaf)就能取到公平合成数据生成器无需关心底层 GAN 训练细节。DECAF 插件位于隐私privacy类别下核心实现见 plugin_decaf.py官方教程见 plugin_decaf.ipynb。它的工作分两步训练基线生成器先用 TabularGAN 学习数据的整体分布保证保真度训练去偏生成器以 DAG 作为结构因果模型注入生成网络使每个变量条件于其因果父节点重建从而具备断边去偏能力。快速上手三步生成公平合成数据先安装环境pip install synthcity第一步准备数据与因果图DECAF 有两种 DAG 用法已知因果结构直接把边列表传入fit(data, dagdag)例如[(gender, salary), (education, salary)]未知因果结构开启struct_learning_enabledTrue默认开启插件会用 pgmpy 自动搜索 DAG支持hillclimb、pc、tree_search、mmhc、d-struct等策略实现见 dstruct.py。第二步训练 DECAF 模型from synthcity.plugins import Plugins model Plugins().get(decaf, n_iter200) model.fit(data, dagdag) # 传入因果图省略 dag 则自动学习第三步断边生成输出公平数据# 切断性别→薪资这条有偏边生成 1000 条公平合成数据 synth_fair model.generate(1000, biased_edges{gender: [salary]})biased_edges参数就是一个边删除字典键为源列名值为要切断的目标列名列表。生成的数据分布依旧逼真但目标变量与敏感变量之间的因果通路已被切断——这就是因果公平的全部魔法。✨DECAF 关键参数速查表参数默认值说明n_iter100去偏生成器训练轮数n_iter_baseline1000基线 GAN 训练轮数影响保真度struct_learning_enabledTrue是否自动搜索 DAGstruct_learning_search_methodtree_searchDAG 搜索策略hillclimb / pc / tree_search / mmhc / d-structstruct_learning_scorek2结构评分函数k2 / bdeu / bic / bdsstruct_max_indegree4每个节点最大父节点数rho1DAG 结构损失权重越大越忠于因果图batch_size200批大小 小建议如果数据集较小几千行以内可以试试struct_learning_search_methodd-struct这是一种可微分、对数值型混合表格数据更友好的结构学习方法相关模型代码在 models/dag/ 目录下。生成之后如何验证公平真的生效了synthcity 自带评估体系见 eval.py可以对比真实数据与合成数据统计保真KL 散度、卡方检验等确认断边后分布没有崩坏实用性与隐私在下游任务上训练模型对比 AUC、用成员推断攻击评估隐私。一个实用的验证手法分别在真实数据和 DECAF 合成数据上训练同一个线性模型预测薪资时把性别当作特征——如果合成数据上的模型对性别的敏感度显著下降说明有偏边被成功切断。常见问题 FAQQ1必须知道真实的因果图才能用 DECAF 吗不需要。默认开启结构学习插件会从数据中自动推断 DAG当然领域专家提供的因果图效果更可控二者可以结合。Q2DECAF 支持多少数据规模它基于 GAN 训练适合中小规模表格数据数千到数万行。更大规模时可适当调大batch_size并减少struct_learning_n_iter。Q3和 DP-GAN、PATE-GAN 这些隐私插件怎么选目标不同DP-GAN / PATE-GAN 解决的是隐私泄露问题DECAF 解决的是偏见/公平问题两者可以叠加思考按需选择。Q4generate时不传biased_edges可以吗可以此时输出等价于一个保真度更高的普通合成数据生成器传入边删除字典后才激活公平去偏能力。总结你的诉求synthcity 方案生成逼真的合成表格数据CTGAN、GaussianGAN 等通用插件生成公平无偏的合成数据DECAFDAG 因果建模 推理时断边去偏生成隐私保护的合成数据DP-GAN、PATE-GAN、PrivBayes量化评估生成质量synthcity.metrics 一键评估用 synthcity 的 DECAF 生成公平合成数据只需要三件事准备好因果图或让插件自动学、训练模型、在生成时指定要切断的有偏边。因果图给了它公平的手术刀基线 GAN 保证了保真的缝合线。完整可运行的 Notebook 见教程 plugin_decaf.ipynb测试示例见 test_decaf.py。【免费下载链接】synthcityA library for generating and evaluating synthetic tabular data for privacy, fairness and data augmentation.项目地址: https://gitcode.com/gh_mirrors/sy/synthcity创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考