2020数据生成综述_Synthesizing Tabular Data using Conditional GAN

摘要

在数据科学中,对表格数据中的行分布进行建模并生成真实的合成数据的能力使各种重要应用成为可能,包括数据压缩,数据披露和隐私保护机器学习。然而,由于表格数据通常包含离散列和连续列的混合,因此构建这样的模型是一项重要的任务。连续列可能有多种模式,而离散列有时不平衡,使得建模困难。为了解决这个问题,我采取了两个主要步骤。(1)我设计了SDGym,一个全面的基准测试,来比较现有的模型,识别表格数据的不同属性,并分析这些属性如何挑战不同的模型。我们的实验结果表明,统计模型,如贝叶斯网络,被约束到一个固定的家庭的可用分布不能有效地模拟表格数据,特别是当连续和离散列。最近提出的深度生成模型能够建模更复杂的分布,但在实践中无法超越贝叶斯网络模型,因为网络结构和学习过程并没有针对可能包含非高斯连续列和不平衡离散列的表格数据进行优化。(2)为了解决这些问题,我设计了CTGAN,它使用条件生成对抗网络来解决表格数据建模的挑战。由于CTGAN使用可逆的数据转换,并通过重新采样数据进行训练,因此它可以解决合成数据生成中的常见挑战。我在基准测试中对CTGAN进行了评估,结果表明它始终显著优于现有的统计和深度学习模型。

1介绍/引言

表格数据是最常见和最重要的数据形式之一。大量的数据,包括人口普查结果、医疗记录和网络日志(从人类与网站的交互中生成)都以表格格式存储。这些数据是有价值的,因为它包含有用的模式,可以帮助决策。随着越来越多的公司、政策制定者和研究机构依赖数据来做出决策,人们已经认识到有必要实现良好的决策,确保隐私保护,以及管理其他问题。正是在这种背景下,对合成数据的需求出现了。

1.1不同领域的表格数据。

-表格数据广泛应用于不同领域,已成为预测潜在需求的一个组成部分。每天当我们打开YouTube时,我们最喜欢的视频已经排好队,只需点击一下即可观看,无需繁琐的搜索。数据可用于预测疾病风险,并为人们提供生活和医疗建议。数据还可以帮助政府和企业做出决策。该领域的增长是指数级的,因为大量数据的可用性激励人们探索不同的应用程序。
-然而,由于使用真实的数据所涉及的质量、数量和隐私问题,人们在创建和探索时通常不会坚持使用原始数据这些应用在各个领域。我们给予几个有代表性的领域内的例子,以显示如何与真实的数据的问题,激励需要合成数据。

1.1.1推荐系统。

-时至今日,只要我们使用互联网,就不可避免地会受到推荐系统的影响。推荐系统是表格数据最有利可图的用例之一,并使亚马逊和谷歌等公司的市值增长到万亿美元。以电影推荐为例,我们介绍了推荐系统是如何建立的,以及出现的问题,并激发了合成数据生成方法的需求。由于MovieLens [19]和Netflix [6]等数据集的可用性,电影推荐是机器学习和数据科学中一个经过充分研究的例子。在电影推荐问题上验证的方法也适用于其他场景,例如亚马逊上的产品推荐[37,24]。

-早期的基于内容的推荐系统[2]使用电影描述和用户配置文件来进行推荐。例如,如果用户对特定演员感兴趣,则推荐系统将推荐该演员的所有电影。要构建一个基于内容的推荐系统,需要一个电影元数据表,比如导演、演员和类型,以及一个用户观看历史表。在训练阶段,使用用户的观看历史来识别用户的兴趣并构造用户简档。例如,如果用户观看恐怖电影的频率高于平均水平,则恐怖标签将被添加到配置文件中。在推断阶段,向用户推荐与简档相关的电影。

-基于内容的方法需要高质量的元数据。在训练模型之前,手动构建元数据以确保质量。最近,基于内容的方法已经被协同过滤方法所取代,因为它们具有上级性能。

-协同过滤[47]是推荐系统中常用的方法。协同过滤方法以用户-项目矩阵M开始。每行M代表用户喜欢的所有电影。如果用户喜欢电影,则行中的条目为1,否则为0。然后M被因式分解为低秩用户矩阵U和低秩电影矩阵V,其中M ~ UVT。用户i对电影j的兴趣程度是用户向量和电影向量UiV的内积,然后根据兴趣程度进行推荐。训练一个协同过滤模型只需要一个用户的观看历史表。

-当以这种方式构建模型时,会出现以下数据问题。数量问题:协同过滤只有在数据集规模很大时才能提供给予优越的上级性能。为了克服小数据集,人们生成大型合成数据集。例如,为了从MovieLens生成合成数据[19],人们将每个真实的用户扩展为几个类似的假用户。1质量问题:对于行业规模的系统来说,扩展数据集是不必要的,因为训练数据的数量通常不是公司的问题。相反,他们的主要问题是数据质量。用户的观看历史是嘈杂的,因为观看电影不一定指示用户喜欢该电影。为了解决这个问题,[35]使用用户的评级过滤训练数据。评分低的电影被淘汰。过滤也是对用户进行的。很少观看电影的用户往往会在训练中提供嘈杂的信号,因此[21]过滤掉观看电影少于20部的用户。不平衡问题:此外,数据分布高度不平衡。例如,由于大多数平台上的中文电影远少于英文电影,因此在推荐这些电影时,他们的模型表现得更差。少数民族也是如此。[38将数据集拆分为较小的数据集,并训练本地模型来解决这些问题。隐私问题:同样需要注意的是,在大容量模型2中,模型可以记住很多信息,包括用户的个人信息。这就带来了泄露敏感的用户信息例如,Netflix的公开推荐数据集可用于识别个人并确定性取向,并已被起诉[49]。

-使用门控递归网络和变压器进行顺序推荐。在这些模型中,预测任务是预测某人接下来会看什么,使用他们的观看历史作为序列。这些模型的性能优于协同过滤,因为它们考虑了顺序信息。例如,当用户连续观看复仇者联盟I和II时,他很可能接下来观看复仇者联盟III。顺序推荐器可以捕捉到这种模式,而协同过滤则不能。为了训练一个顺序推荐系统,需要一个带有时间戳的用户观看历史表。

-隐私问题:这些模型中的参数甚至比协同过滤模型中的参数更大。这些模型也是高度非线性的,可以记住各种模式,这增加了隐私泄露的风险。

-使用表格数据来训练推荐系统涉及数据质量,数据不平衡和数据隐私问题。通过对数据应用各种过滤标准可以提高数据质量。数据不平衡可以通过划分数据和学习局部模型来解决。解决隐私问题更具挑战性。

1.1.2卫生保健。

-大数据也被用于医疗领域,使诊断更加准确和高效。* 数据可用于预测患者是否会出现在预约中[3],以帮助医院改善时间管理和资源利用。* 数据还可以用来判断病人是否患有某种疾病,比如心脏病、肺炎等,这是一个关键的应用。由于医疗数据的问题,这些模型的鲁棒性和公平性受到质疑。收集医疗数据需要专业医生的参与,导致收集成本和数据都很高。[16]使用数据扩充来增加一个医疗数据集的大小。医疗数据也可能存在噪声,医生的错误判断会给数据带来误差。此外,它还存在数据不平衡的问题- [12]表明不平衡的医疗数据会导致不公平的预测。医疗数据还包含大量个人信息,这些信息很容易识别个人,侵犯人们的隐私。

-可穿戴设备还可以收集大量数据,并提供旨在改善人们健康的建议。例如,[46]使用可穿戴设备来跟踪人们的睡眠状况。可穿戴设备收集的数据(包括位置、声音甚至图像)非常敏感,不应离开设备。人们设计算法[8,28]来训练机器学习模型,而无需将其发送到中央服务器。

-使用医疗数据的机器学习系统处理非常敏感的信息并做出关键决策。这些数据的数量、质量、不平衡性和隐私性都应该得到认真处理。

1.1.3数据存储和披露。

-有时,表格数据只是由网站构建或由调查人员收集,然后存储在数据库中,用于完成网站业务,或由统计局发布。这些数据在短期内可能不需要使用机器学习进行分析,但在构建、存储和分发过程中仍会遇到隐私问题。

-国家统计局每隔几年进行一次人口普查,普查结果在网上公布。这些数据对于解决社会问题是有帮助的,但是直接公布准确的人口普查数据很可能会侵犯公民的隐私。如果只公布统计数据,而不公布每个人的数据,数据的研究价值就会降低。因此,人们投入了大量时间来解决人口普查数据问题,同时保护隐私。统计科学界的一些研究人员已经开始使用基于随机化的方法干扰表格数据中的敏感列[44,42,43,32]。

-另一个场景涉及公司内部的数据存储和使用。当用户与公司网站交互时,在该公司的数据库中生成大量记录。用户还可以填写个人信息,如地址,信用卡号码,偏好等,这些信息必须根据通用数据保护条例(GDPR)严格保密。然而,在公司内部,工程师将有需要使用数据的软件开发和错误修复要求。公司不希望其员工访问真实的用户数据,因为这会侵犯用户隐私,因此需要采取措施防止内部人员阅读敏感信息。例如,在Uber,部署了一个系统,以便员工只能访问被干扰的客户数据[29]。据报道,在部署该系统之前,Uber错误地处理了客户数据,允许员工获得未经授权的访问[20]。

1.2合成数据的必要性。

在这里插入图片描述
-尽管每天都有大量的投资机构投入到收集表格数据中,但真实的表格数据并不总能满足人们的要求,表1 - 1总结了不同领域中出现的与数据相关的问题。

  • 数量问题:在某些领域,数据不足是一个问题。特别是如果数据的获取需要具有专业技能的人,例如在医疗领域,数据量和获取数据的成本将变得麻烦了如果真实的数据可以使用合成数据进行补充和增强,那么可以使用更少的现有数据来实现更有价值的应用。

-质量问题:数据质量问题很常见。在数据收集过程中,各种因素可能会影响数据的质量-例如,缺失值和不正确填写问卷的人的离群值。学习数据的分布,修复和增强数据可以减少这个问题的影响。

-不平衡问题:数据不平衡是表格数据的正常状态,因为表格通常有主要和次要类别。在开发模型时,不平衡会导致很多问题。用合成数据补充生态位数据可以解决这个问题。

-隐私问题:此外,大多数表格数据包含敏感信息,可用于识别个人并侵犯其隐私。包含敏感信息的数据往往受到严格保护,研究人员无法接触。如果合成数据可以保留表中的相关性,但删除所有敏感信息,那么它可以用来消除数据披露的障碍。

合成数据的应用, 高质量的合成数据具有重要的应用:
数据理解:学习表格数据的分布可以帮助我们理解底层结构和列之间的关联。
数据压缩:合成数据生成器可用于有效和复杂地存储表格数据。一个小型的生成神经网络可以很容易地存储在便携式设备上,以生成无限数量的行。
数据扩充:生成模型可以生成(更多)训练数据,或者合理地扰动原始数据,这可以提高下游预测模型的性能。
系统测试:与那些(通常)从不切实际的模拟场景中生成的数据集相反,从与其对应的真实的数据集相同的实际底层过程中导出的合成数据集可以用于测试新系统。系统测试有时使用合成数据进行,以保护隐私或防止过度拟合。使用高质量的合成数据可以确保在测试和生产环境中具有相似的性能。
数据泄露:数据隐私是当今的一个重要问题。使用合成数据代替真实的数据可以避免隐私信息的泄露,同时仍然允许数据用于各种应用。

1.3合成数据生成器的类型。

合成数据生成是解决这些数量、质量和隐私问题的有效方法。我们将合成数据生成方法分为两个阶段:
-基于扰动的方法。此类别中的方法修改现有表中的值以修复离群值或减少隐私泄露。这些方法已经研究了很多年。由于用这种方法生成的合成数据中的每一行在真实的数据中都有对应的行,所以这些方法既不能增加数据的大小,也不能提供良好的隐私保护。

-Generation-based methods.。另一类方法试图从某种分布中生成合成数据。这种分布可以是手工制作的,也可以是从数据中学习的。这些方法可以生成任意数量的数据。在某些情况下,可以添加隐私保护机制以提供更好的隐私。使用手工制作的分布生成数据被广泛使用,而使用学习的分布合成数据是最近的研究领域。

-第一阶段中的方法是保护隐私的临时、无效的解决方案,而第二阶段中的方法可以通过用合成数据替代真实的数据来系统地解决数量、质量和隐私问题。

1.4现有的基于代的方法Existing generation-based methods。

-在从现有分布合成表格数据的领域中已经做出了巨大的努力。统计方法和深度学习方法都用于学习真实的数据的分布,以便通过采样生成合成数据。

-统计方法使用一系列预定义的概率分布来拟合新的表格数据集。例如,高斯混合模型可用于对几个连续列的联合分布进行建模,而贝叶斯网络可用于对离散列的联合分布进行建模。然而,由于这些模型受到可用概率分布的限制,它们对于各种数据集不够通用,特别是当数据混合了离散和连续列时。在建模调查数据的情况下,连续的列是很难避免的,人们离散连续列,使数据可以建模的贝叶斯网络或决策树。即使超出模型能力的问题,训练这样的统计模型也是昂贵的,并且这些模型不能扩展到具有数千列和数百万行的大规模数据集。

-深度学习方法构成了数据合成器的另一个主要类别。为表格数据构建高质量深度神经网络的动机来自于此类模型在计算机视觉和自然语言处理方面的成功。像变分自编码器(VAE)[31]和生成对抗网络(GAN)[17]这样的深度生成模型具有两种新功能:第一,学习复杂的高维概率分布的能力,第二,从图像或文本中提取高质量样本的能力。这些能力使视觉和语言的各种重要应用成为可能[26,59,33,57,54]。还可以构建类似的高质量模型来生成合成表格数据-可以从真实的数据中学习列的隐式联合分布,然后可以从该分布中采样合成行。已经提出了一些模型(MedGAN [13],TableGAN [39],PATE-GAN [30]),这些模型通过直接在表格数据上应用全连接网络或卷积神经网络来工作,而不考虑建模表格数据的特定情况。这些模型可以很好地执行数据集,但尚未与现有的统计模型进行彻底比较。

1.5本研究的概述。

-在这个项目中,我们专注于使用深度生成模型来模拟表中行的概率分布。为了彻底理解问题的复杂性,我们设计了一个包含模拟数据集和真实的数据集的基准框架。(See第七章)这个框架称为SDGym,可以自动评估所有数据集上的所有模型,并可以帮助理解不同表格数据的属性及其对不同模型的影响。我们还实现了几种现有的方法,并在不同的数据集和指标上评估了所有方法。

-通过比较现有的模型,我们发现,尽管GAN有潜力对任意分布进行建模,但由于表格数据的几个特殊属性,包括连续列的非高斯分布,离散列的不平衡分布以及离散和连续列的混合,基于GAN的模型无法优于简单的统计方法。(See第4章这些特殊的属性)

-为了应对这些挑战,我们设计了条件表格GAN(CTGAN),这是一种引入了几种新技术的方法。这些包括通过可逆数据转换、架构更改来增强训练过程,以及通过采用条件生成器来解决数据不平衡问题。(See第5章,型号详情。)当应用于相同的数据集并使用一个名为SDGym的基准测试框架进行评估时,CTGAN的表现明显优于贝叶斯网络基线和我们测试的其他新GAN。

-在CTGAN之前,我们做了几次尝试:我们开发了一个基于GAN的模型,称为TGAN,以及一个基于VAE的模型,称为TVAE。(See第6章,有关TGAN和TVAE的详细信息。)在设计这两个模型的过程中,我们获得了很多经验,也更好地理解了这项任务的挑战,这有助于我们后来设计出更好的CTGAN模型。

-该项目的贡献概述如下:
.用于合成数据生成的条件GAN。我们建议CTGAN作为一个合成表格数据生成器,以解决合成表格数据生成中的几个问题。我们发现CTGAN优于贝叶斯网络,并生成高质量的合成数据。
.学习任务和评估指标。生成合成数据是一项复杂的任务。我们清楚地定义了学习任务和评估指标,然后确定了这项任务中固有的挑战。
.综合数据生成算法的基准测试系统。我们设计了一个全面的基准框架,使用几个表格数据集和不同的评估指标,以及几个基线和最先进的方法的实现。在撰写本文时,基准测试有5种深度学习方法,2种贝叶斯网络方法,15个数据集和2种评估机制。
.其他方法。在CTGAN之前,我们设计了不同的方法来生成合成数据,即TGAN和TVAE。
.开源库,我们在GitHub上开源了CTGAN、SDGym和TGAN。在编写时,CTGAN有27颗星和7个叉; SDGym有19颗星和11个叉,TGAN有91颗星和36个叉。
论文的其余部分组织如下:第2章介绍了生成模型的入门;第3章描述了合成数据生成任务和四种现有的方法;第4章列出了这项任务的挑战;第6章介绍了TGAN和TVAE;第5章介绍了我们的模型;第7章解释了我们的基准设计和实现;第8章和第9章给出了我们的实验结果和结论。

2生成模型入门

生成模型是尝试学习真实的数据分布,然后从学习的分布中提取样本的机器学习模型。它符合生成合成数据的目标。合成数据的生成是学习真实的数据的分布,并从获得的分布中采样,同时满足隐私等其他要求。统计生成模型,如贝叶斯网络、高斯混合模型和copula,仅限于特定类别的概率分布,无法对图像或文本等复杂分布进行建模。在本章中,我们将提供一些关于深度生成模型的背景知识,即变分自编码器(VAE)和生成对抗网络(GAN)模型,因为它们在建模图像和文本等复杂分布时非常有效。

2.1变分自动编码器

自动编码器具有编码器E(-)和解码器D(.)。给定数据集X,编码器可以将输入数据的示例编码为隐藏的分布式表示,表示为
在这里插入图片描述
解码器可以采用这种隐藏的表示并重建数据在这里插入图片描述
与自动编码器相比,VAE [31]将隐藏表示视为高斯分布K(.)。编码器以x为例,输出均值向量p和标准差向量o
在这里插入图片描述
这意味着隐藏表示遵循V(p,o 2)。解码器然后从分布中取出一个样本并重建数据
在这里插入图片描述
VAE还将z在所有数据X上的聚合分布约束为JV(O,I)。有了这个约束,VAE变成了一个生成模型,因为用户可以从K(O,I)中采样一个随机向量,并将其馈送到解码器以生成数据。VAE的学习目标是证据下限(ELBO)损失
在这里插入图片描述
第一项是训练模型作为自动编码器工作。在第二学期,KL(p|| q)表示Kullback-Leibler(KL)散度,其测量两个分布p和q之间的距离,
在这里插入图片描述
它将z的分布约束为标准正态分布。当生成数据时,D(-)取z ~ J(O,I)并输出合成样本。当模型收敛时,学习生成器是从多元高斯分布到数据分布的近似映射。编码器和解码器是具有多输入和多输出的神经网络。该模型采用随机梯度下降法进行训练。外部期望值是通过对minibatch取平均值来计算的。在Eq.的项I中的期望。(2.1)通过从分布中采样一个z来计算。

2.2生成对抗网络

Vanilla GAN:一个Vanilla GAN [17]有一个生成器g(-)和一个codeD(-)。生成器被假定为将多元高斯分布投影到任意数据分布。该算法的目的是判断生成器参数化的分布是否与真实的训练数据的分布相同。发电机和发电机在玩一个零和最小-最大游戏。当生成器和递归函数都是完美的时,它们会达到一个纳什均衡:生成器对精确的数据分布进行建模,递归函数无法区分这两种分布。当用于图像生成时,GAN可以生成感知上比VAE更好的图像,因为

-与均方误差相比,该方法给出了更好的学习信号。鉴别器可以很容易地检测清晰和模糊的图像。如果训练数据是清晰的,并且生成器生成模糊的图像,则训练器可以拒绝这些图像。如果生成器生成清晰逼真的图像,即使该图像在像素方面远离训练集中的任何图像,会接受这个形象。通过这样做,图像处理器帮助生成器生成感知上逼真的图像。相比之下,VAE中的均方误差鼓励解码器输出模糊图像。

-在复杂的数据空间(如所有图像)中,GAN正在学习精确的概率分布,而VAE正在优化下限,从而学习近似分布[31]。

生成器g(.)是一个神经网络,它从N(O,I)中取一个随机向量z,并将z投影到数据域中的向量i。The Prosecutor(.)是预测其输入是来自真实的数据分布X还是来自学习的分布IPg的另一神经网络。D(.)输出[0,1]中的连续值,其中0表示输入来自学习的分布,1表示输入来自真实的数据分布。因此,D(-)可以被认为是二元分类器。当训练GAN时,生成器和迭代优化。D(.)首先优化,
在这里插入图片描述
使发电机最大限度地提高欺骗发电机的机会。当优化£g时,只有中的参数!9()是最优的,而D(.)是固定的.类似地,只有D(.)在优化£D时更新。GAN使用随机梯度下降进行训练。在每次迭代中,有两个更新,一个是针对CPU的,另一个是针对生成器的。

首先更新的是数据库。为此,从训练数据中选择一小批示例,以及一小批随机向量。首先,将随机向量输入到生成器并生成一些假数据。那就把真实的数据和假数据的传输。最后,计算ε D并更新其中的参数。

生成器随后更新。为此,请选择另一小批随机向量。使用生成器生成假数据。把这些假的数据输入电脑。然后计算Lg并更新生成器中的参数。

Vanilla GAN很难训练。该模型对超参数敏感,需要很长时间才能收敛。当学习到的分布远离真实的数据分布时-例如在训练开始时-递归只能将小梯度传播到生成器,因此生成器不能有效地学习。Wasserstein GAN:最近对GAN的一个改进是Wasserstein GAN(WGAN)[4]。WGAN使用评论家网络C(.),而不是使用评论家网络。当输入更真实时,评论家网络输出较大的值,当输入看起来很假时,它输出较小的值。为了实现这一点,评论家网络通过以下方式进行训练:
在这里插入图片描述
它试图最大化真实的数据的输出,并最小化假数据的输出。发电机的作用正好相反。它试图最大化评论家网络的输出。所以发电机的损失函数是
在这里插入图片描述
WGAN比普通GAN更上级,因为WGAN实际上最小化了学习分布和真实的数据分布之间的Wasserstein距离。Wasserstein距离具有上级特性,即使两个分布相距较远,它也可以给予合理的梯度,这有利于GAN的训练。在这里,我们展示了WGAN的损失函数如何与Wasserstein距离相关联。回想一下,Wasserstein距离W(.)可以使用KantorovichRubinstein对偶计算为
在这里插入图片描述
其中I f I <; 1表示f是1-Lipschitz函数。比较Eq.(2.2)和等式(2.3),我们观察到ε c是W(X,Pg)的近似。批评家的训练是使近似更准确。在WGAN中,批评者中的参数被裁剪以强制执行1-Lipschitz条件。生成器的训练是最小化Wasserstein距离。

评论家首先更新。要更新评论家网络,需要对一小批真实的数据和一小批随机向量进行采样。使用生成器生成一些假数据。使用真实的数据和伪数据来计算ε c并更新C。更新后,C(.)被修剪到一个小范围,如[-0.1,0.1]或[-0.01,0.01]。

生成器随后更新。对另一小批随机向量进行采样,并使用生成器生成假数据。将假数据输入到critic网络,然后计算£g以更新生成器。

带有梯度惩罚的WGAN:裁剪权重以强制执行1-Lipschitz条件不是最佳解决方案。另一种解决方案是通过约束梯度来强制执行1-Lipschitz条件。该方法被称为WGANGP [18]。这个想法源于这样一个事实,即最佳评论家在真实的数据分布和学习分布上几乎处处具有等于1的梯度范数。WGANGP使用正则化项,强制梯度的范数为1。WGANGP和WGAN之间的区别在于临界损失函数
在这里插入图片描述
其中z用于估计梯度并强制执行Lipschitz约束。J是x和g(z)的随机线性组合,
在这里插入图片描述
U(0,1)表示[0,1]中的均匀分布。在WGANGP中,不再需要裁剪权重。WGANGP可以生成比GAN和WGAN更真实的数据。在这个研究项目中,我们探索使用VAE和GAN来生成合成数据。在我们的TVAE模型中,我们使用VAE来生成合成数据。在我们的CTGAN模型中,使用WGANGP。

3合成数据生成任务及相关工作

在第一章中,我们强调了对合成数据的需求。,合成数据是一个强大的工具,可以克服数据科学中的许多障碍。,高质量的合成数据可以替代真实数据,以减轻隐私问题。,合成数据的质量取决于合成数据是否正确捕获不同列之间的相关性。,在本章中,我们正式定义学习任务,以便可以定量评估合成数据的质量。,由于表格数据的复杂性,我们将任务限制为特定类型的表格数据,即具有独立行的单个表。,然后我们解释一些适合我们任务的模型。

3.1 综合数据生成

由于表格数据可以采用不同的形式,因此它可以表示各种类型的信息。 ,
• 具有独立行的单个表:此类中的表可以被视为来自基础联合分布的多个样本,其中每行都是独立于分布进行采样的。,例如,人们的性别、身高和体重表就属于这一类别。,表中的每一行都是所有 35 个人的性别、身高和体重联合分布中的一个样本人类。,向表中添加一行不会影响其他行的分布。
• 具有依赖行的单表:在某些表中,行之间存在很强的相关性。例如,加油站和销售额的表就属于此类。假设汽油消耗量稳定,则在表中再添加一个加油站是,可能会减少附近几个加油站的销量。另一个很常见的例子是时间序列数据。在时间序列数据中,每一行都依赖于之前的行。
• 多表数据库:有时,使用多个表可以更有效地表示信息。多表数据库中的每个表可以具有依赖或独立的行。例如,典型的电子商务数据库包括用户表、产品表、,用户表和产品表具有独立的行,而交易表是包含相关行的时间序列表。
由于生成合成数据的研究还处于早期阶段,因此我们关注最简单的情况 - 具有独立行的单个表。,学习任务定义:合成数据生成任务是训练一个数据合成器G,它以表作为输入并生成该输入的合成版本。,我们要求输入表包含独立的行,并且仅包含连续和离散列。1表T包含Nc个连续列{CI,…,CNc}和Nd个离散列{D1,…。 ,。 ,。 ,,DNg}。,每一列都被视为一个随机变量。,这些随机变量遵循未知的联合分布 IP(C1:Nc, D1:Nd)。,一行 rj = {ci,j, … , CNc,j, d,j, … , dNd,j} 是联合分布的一个样本。,然后将 T 划分为训练集 Tt,in 和测试集 Ttest。,在 Ttrain 上训练 G 后,通过从 G 中独立采样行来构建 Tsyn。 评估指标:Tsyn 的直接评估要么测试 Tsyn 和 Ttrain 是否从同一分布中采样,要么计算两个 un 之间的距离离散分布。,该测试的现有方法对基本分布做出了强有力的假设。,例如,Z 检验 [10] 假设数据服从高斯分布。,由于这些强有力的假设,这些方法不适用于具有复杂分布的表格数据。,由于直接评估很困难,我们使用两种替代方法。
样本可能性:我们手工制作一个表 T 以用于评估目的。,在这种情况下,Tt,ain 的基本分布(表示为 Ptrain(-))是已知的,并且 Toyn 的基本分布(表示为 Pyn(-))可以近似。 ,IPyn(.) 上的 Ttest 似然和 Ptrain(-) 上的 Tsyn 似然可以揭示两个分布之间的距离。 ,- 机器学习功效:之前的指标需要 Ttrain 和 T8 yn 的基础分布,以便可以计算可能性。,在更一般的情况下,找到潜在的分布是很困难的。,或者,Tsyn 的质量可以通过机器学习应用程序(例如分类或回归)进行评估。,例如,我们可以训练分类器或回归器来使用其他列作为特征来预测一列。,我们可以通过评估从 Tsyn 学习的分类器或回归器是否可以在 Ttest 上实现与在 Ttrain 上学习的模型相同或更高的性能来衡量效果。

3.2 生成合成数据的现有技术

生成完全合成数据的可能性吸引了不同的研究团体,包括统计学、数据库管理和机器学习。,该领域的早期工作,例如 PrivBayes [58],使用传统的贝叶斯网络,但添加了差分隐私学习算法。,最近,GAN 已被用于生成表格数据。 ,GAN 之所以有吸引力,是因为它们在表示数据方面的性能和灵活性,它们在生成和生成数据方面的成功就证明了这一点。操纵图像和自然语言 [4, 18, 59, 57]。
我们调查了 2017 年至 2019 年期间发布的一些最新进展。 ,VeeGAN [50] 使用 GAN 生成 2D 连续数据。 ,[56] 使用 GAN 生成连续的时间序列医疗记录。 ,MedGAN [13] 结合了自动编码器和 GAN 来生成非时间序列连续和/或二进制数据。 ,[9]提出使用 GAN 生成离散表格数据。 ,ehrGAN [11] 生成增强的医疗记录,但没有明确生成合成数据。 ,TableGAN [39]试图解决使用卷积神经网络生成合成数据并显式优化标签列质量的问题,因此其生成的数据可用于训练分类器。 ,PATE-GAN [30]尝试生成差分隐私合成数据。,上述所有基于 GAN 的模型均于 2017 年和 2018 年发布。我们发现 PrivBayes [58]、MedGAN [13]、TableGAN [39] 和 VeeGAN [50] 适合合成具有独立行的单个表。,我们在本节中介绍这 4 种方法2

3.2.1 PrivBayes

PrivBayes [58] 旨在使用贝叶斯网络生成高质量、差分隐私 [15] 的合成数据。
动机:贝叶斯网络可以表示离散变量的联合分布。,使用贝叶斯网络生成差分隐私合成数据涉及三个步骤:(1) 学习贝叶斯网络,(2) 将拉普拉斯噪声注入网络中的每个参数,(3) 从噪声网络中采样。,然而,由于步骤(2)中注入了大量噪声,该过程通常会导致合成数据质量低下。,为了达到一定的隐私级别,不同的网络结构需要不同量的噪声。 ,PrivBayes 提出了一种启发式方法来寻找需要较少注入噪声的良好网络结构。
预处理:贝叶斯网络无法对连续变量进行建模。,在 PrivBayes 中,所有连续变量都被离散化为 16 个相同大小的 bin,因此建模算法仅处理离散值列。
模型细节:贝叶斯网络的原始质量和添加噪声后质量下降之间存在权衡。,例如,给定一个包含 Nd 个离散列的表,(Nd 1)-way4 贝叶斯网络可以完美拟合分布,但网络中的某些权重将具有高灵敏度 5 和低值,这意味着噪声可以在,一个嘈杂的模型。,另一个极端的例子涉及使用 0 路网络。,灵敏度较低,但由于模型只学习边际分布,所以用处不大。,合适的路数在0到Nd-1之间。PrivBayes没有设置固定的路数。,相反,它使用名为 9-有用性的度量来平衡贝叶斯网络的准确性和所需的噪声量。,如果信息的平均规模6与噪声的平均规模之比不小于0,则噪声分布是0有用的。在0有用性的约束下,PrivBayes使用贪心算法来找到最大化互信息的图7。
数据集和评估指标:PrivBayes 在四个真实数据集上进行了广泛评估。,评估机器学习的效果以及边缘分布的距离。,由于该方法提供了电子差分隐私,因此实验中清楚地显示了 c 对合成数据质量的影响。
可重复性:PrivBayes 采用高质量的 C++ 代码实现。 ,8 所有数据集均包含在包中。,我们可以使用代码重现论文中报告的所有结果。

3.2.2 MedGAN

由于健康记录对研究很有价值,但出于隐私原因受到严格保护,因此医疗保健是特别需要合成数据技术的领域。,为了消除这些障碍,MedGAN [13] 使用 GAN 框架来生成完全合成的健康记录。,
动机:在健康记录中,每一列都遵循非常不同的分布,这使得 GAN 模型的学习变得困难。,直接建模不能产生好的结果。,因此,在 MedGAN 中,部署自动编码器将原始数据投影为较低维的表示形式。,之后,使用 GAN 生成这样的表示。,
预处理:该模型支持包含所有二进制列和所有连续列的表。,二进制列简单地表示为 0 或 1。使用最小-最大标准化将连续变量标准化为 [0, 1]在这里插入图片描述
模型详细信息:图 3-1 说明了该模型。,在 MedGAN 中,生成器和判别器在不同的空间工作。,生成器生成隐藏表示。,鉴别器检查原始数据。,因此,生成器的输出应先经过解码器,然后再输入鉴别器,如图 3-1 中的第二个工作流程所示。,在训练过程中,首先训练自编码器,如图 3-1 所示第一个工作流程。,它在训练 GAN 时被修复。,如果表仅包含连续列,则自动编码器的损失函数是均方误差;如果列都是二进制的,则自动编码器的损失函数是交叉熵损失。,生成器和鉴别器使用与普通 GAN [17] 相同的损失函数进行训练。
数据集和评估指标:在三个电子健康记录数据集上进行实验。,评估机器学习效果。,此外,还绘制了每列的边际分布并进行直观比较。在这里插入图片描述在这里插入图片描述
重现性:MedGAN是用Python和TensorFlow实现的。9原始实现不支持混合类型的表。,它仅支持连续变量和二元变量。,由于数据的可用性,我无法重现结果。

3.2.3 TableGAN

TableGAN [39]直接应用DCGAN [41]的思想来生成旨在解决隐私问题的合成数据。,预处理:所有连续列均按照方程式进行归一化。 ,(3.1)。,离散列也会转换为浮点数。,离散列中的每个类别首先由 {0,…, DIl - 1} 中的唯一整数表示,然后除以 |Dil -1。,由于 DCGAN 是为图像设计的,因此输入是矩阵而不是向量,并且表中的一行被重新整形为平方矩阵。,如果列数不完全是平方数,则将在行中填充零以将列数增加到下一个平方数。,例如,如果表有 19 列,则预处理方法首先将 6 个零列附加到表中,然后重新调整每个列的形状
模型详细信息:该模型在生成器和判别器中均使用卷积网络,并以与普通 GAN 相同的方式进行训练。,当表格数据包含标签列时,会向生成器添加预测损失,以显式提高标签列与其他列之间的相关性。
,数据集和评估指标:该模型在四个数据集上进行评估。,评估指标包括机器学习功效和边际分布图。,可重复性:TableGAN 用 Python 和 TensorFlow 实现。10 该软件包包括论文中使用的两个数据集以及用于预处理和训练的脚本。
,由于数据的可用性,我们无法重现所有结果。
https://github.com/mahmoodm2/tableGAN

3.2.4 VeeGAN

https://github.com/akashgit/VEEGAN
尽管 VeeGAN [50] 并非旨在生成表格数据,但它解决了模式崩溃问题,这对于表格数据生成很重要,因为表格数据中的连续列具有多种模式。 (有关表格数据中多模态的详细信息,请参阅第 4 章)
动机:模式崩溃是 GAN 的一个已知问题。 这是因为 GAN 不愿意在图像中生成某些对象,而当数据维度较低时,这种缺陷就很明显(见图 4-2)。 为了解决这个问题,VeeGAN 引入了一个重建器模块,可以检测何时发生模式崩溃并指导生成器克服缺陷。
预处理:VeeGAN 专为连续数据而设计。 所有值均按等式 1 标准化为 [0, 1]。 (3.1)。
模型详细信息:在 VeeGAN 中,重建器执行与生成器相反的操作,并将一行投影回随机向量。 通过生成器、判别器和重构器,我们可以构建两个工作流程,如图 3-2 所示。 三个模块的训练如下:
“ 生成器:损失函数的第一步是欺骗判别器,与普通 GAN [17] 的情况相同。第二步是最小化 z 和 z’ 之间的 L2 距离。

  • 判别器:判别器是 使用交叉熵损失训练为二元分类器。
  • 重建器:重建器还最小化 z 和 z 之间的距离。
    图 3-3 说明了重构器如何帮助解决模式崩溃。 生成器捕获两种模式之一并将 zo 投影到 X2。 但重建器可以将数据空间中的任何点投影到噪声空间。 左模式的数据也投影到与右模式相同的空间,导致投影后重叠。 例如,x1 和 X2 都投影到 zo。 此时,x1和X2通过重构器连接起来。 (XI, zO) 更有可能被判别器分类为真实的,因为判别器从未看到来自左模式的反例。 当生成器从 zo 生成 X2 时,梯度将引导它生成 x1 来欺骗鉴别器,从而消除模式崩溃。
    数据集和评估指标:模型在两个 2D 数据集上进行评估。 评估指标是GAN捕获的可以肉眼观察到的模式数量。
    重现性:VeeGAN是用Python和Tensorflow实现的。”实现与论文中的描述不一致。它还使用了Tensorflow中未记录的API,使得代码难以理解。在尝试模型后,我们未能重现结果。

4 使用 GAN 建模表格数据的挑战

表格数据的几个独特属性使得设计基于 GAN 的模型具有挑战性。 在本节中,我们首先强调这些挑战,因为它们与单表非时间序列数据相关,我们试图在模型中解决这些挑战。 然后,我们总结了时间序列数据和多表数据的其他具有挑战性的属性。

4.1 单表非时间序列数据的挑战

建模并综合生成单表非时间序列数据是综合数据中最简单的问题。 表中的每一行都是独立于所有可能行的分布进行采样的。 有人可能会说,如果将一行数据表示为向量,特别是对连续值使用最小-最大归一化,对离散值使用单热表示,那么为图像设计的 GAN 模型可以很容易地适应表格数据。 然而,这里我们列出了单表非时间序列数据的几个特殊属性,可以打破这种天真的适应。
C1。 混合数据类型。 现实世界的表格数据由混合数据类型(连续数据、序数数据、校准类别数据等)组成。 每列与其他列都有复杂的关联。 传统的图像 GAN 使用 sigmoid 激活来生成每个像素。 对于表格数据,对 GAN 的修改必须同时应用 softmax 和tanh 输出上同时生成离散和连续列的混合。 同时,建模技术应该能够对混合离散连续分布的概率密度进行建模。
C2。 非高斯分布:在图像中,像素的值遵循类高斯分布,可以使用最小-最大变换将其标准化为 [-1, 1]。 tanh 函数通常用在网络的最后一层,以输出此范围内的值。 表格数据中的连续变量通常是非高斯分布,并且具有长尾分布; 因此,大多数生成的值不会以零为中心。 大多数值所在的 tanh 梯度很可能是平坦的 - 这种现象称为梯度饱和。 这导致模型无法通过梯度进行学习。 例如,家庭年收入具有长尾分布。 该专栏的平均价格约为 6 万美元。 然而,也有一些异常值的年收入超过 1 亿美元。 在这种情况下应用最小-最大归一化会出现问题,因为大多数值将被压缩到 [-1, -0.998]。 在此范围内,tanh 的梯度消失。 在图 4-1 中,我们直观地展示了这一场景。 消失的梯度不仅会阻止模型有效地学习列的分布。 它还允许具有较大梯度的其他列占据大部分模型容量。
C3。 多模式分布。 表格数据中的连续列通常有多种模式。 我们观察到 8 个真实数据集中的 57/123 个连续列具有多种模式。 [50] 表明普通 GAN 无法在简单的 2D 数据集上对所有模式进行建模,如图 4-2 所示; 因此它也无法对连续列的多峰分布进行建模。 这是普通 GAN 的一个已知问题 [41,4,18,36]。 Vanilla GAN 仅根据一个示例做出真/假决策,因此,如果生成器找出一个真实的示例并每次都尝试重复该示例,则鉴别器没有足够的信息来找出问题。
C4。 从稀疏的单热编码向量中学习。 为了能够从非序数分类列中学习,分类列被转换为 one-hot 向量。 生成合成样本时,生成模型经过训练以使用 softmax 生成所有类别的概率分布。 这在 GAN 中是有问题的,因为平凡的判别器可以通过检查分布的稀疏性来简单地区分真实数据和虚假数据,而不是考虑行的整体真实性。
C5。 高度不平衡的分类列。 在现实世界的数据集中,大多数分类列的分布高度不平衡。 在我们的数据集中,我们注意到 636/1048 的分类列高度不平衡 - 主要类别出现在超过 90% 的行中,造成严重的模式崩溃。 缺少未成年人类别只会造成数据分布的微小变化,但数据不平衡会导致小类的训练机会不足。 除非使用 PacGAN 等模式崩溃预防机制,否则批评者网络无法检测到此类问题。 这些机制可以防止 GAN 只生成最显着的类别。 次要类别的综合数据预计质量较低,需要重新采样。
C6。 高维度。 表格数据的高维性使复杂性呈指数级增加。 例如,n 个二元变量有 2’ 种可能性。 使用小型神经网络准确地表示概率分布是不可能的,因为没有足够的参数,并且通常没有足够的训练数据。 在这种情况下,任何建模技术都会给估计带来偏差。 例如,当使用 GAN 建模时,在选择特定的网络结构或学习目标时可能会出现偏差。 与统计模型相比,神经网络模型中引入的偏差很难分析。
C7。 缺乏训练数据。 使用小训练数据进行学习是一个具有挑战性的问题。 类似的问题被称为“少样本学习”或“元学习”。 对于图像来说,此类任务更容易,因为不同图像中的内容共享相似的过滤器。 然而,表格数据却截然不同。 有效地将从一张桌子学到的知识转移到另一张桌子上是一项挑战。
C8。 缺失值。 表格数据存在缺失值。 要直接在具有缺失值的表格数据上训练 GAN 模型,应该修改数据表示以正确区分缺失值和已知值,并屏蔽模型以使其对缺失值具有鲁棒性。 另一种方法是在训练模型之前估算缺失值。 然而,数据插补还需要对表进行建模。 数据插补中的错误将传播到学习的 GAN 模型中。
在这里插入图片描述
表 4.1:总结显示现有方法和我们的 CTGAN 是否明确解决了上述挑战 [C1 - C8]。 (* 表示它能够对连续和二元建模。)

4.2 时间序列数据的挑战

时间序列数据是另一种表格数据。 时间序列和非时间序列数据的主要区别在于每行的分布不再独立。 在时间序列数据中,行的分布取决于之前的行。 对时间序列数据进行建模要求模型能够对条件分布进行建模。

4.3 多表数据的挑战

关系数据库中信息复杂的数据以多表的形式存储。 对此类数据进行建模给 GAN 模型带来了更多挑战。 多表数据中,可能存在多个非时间序列表和多个时间序列表。 例如,典型的电子商务网站可能有一个用户表、一个产品表和一个订单表。 用户表和产品表是非时间序列的,而订单表是时间序列的。 对此类分布进行建模仍然具有挑战性,并且需要将 SDV [40] 等启发式算法与不同的 GAN 模型相集成。

条件表格 GAN

现有方法的失败强调了设计一种新方法来生成高质量合成数据的必要性。 我们发现需要适当的预处理方法和改进的学习算法才能使 GAN 处理表格数据。 在本章中,我们将解释我们的 CTGAN 模型。

5.1 符号

我们定义以下符号。 - X1 (B 2 ( … : 连接向量 zi, £2,…gumbel,(x): 在向量 x 上应用带参数 T 的 Gumbel softmax[27] -leaky.,(x): 应用泄漏 ReLU 激活 x 上的泄漏比率 -y - FCev (x):对 u-dim 输入应用线性变换以获得 v-dim 输出。我们还使用 tanh、ReLU、softmax、BN 进行批量标准化 [25], 并下降为辍学[51]。

5.2 特定于模式的标准化

正确表示数据对于训练神经网络至关重要。 离散值自然可以表示为 one-hot 向量,而表示连续值具有任意分布的值是不平凡的。 以前的模型 [13, 39] 使用最小最大归一化将连续值归一化为 [-1, 1]。 在 CTGAN 中,我们设计了一种特定于模式的归一化来处理具有复杂多模式分布的列。
图 5-1 显示了我们对连续列的模式特定标准化。 在我们的方法中,每一列都是独立处理的。 每个值都表示为指示模式的单热向量和指示模式内的值的标量。 我们的方法包含三个步骤。

  1. 对于每个连续列 Ci,使用变分高斯混合模型 (VGM) [7] 来估计模式数 mi 并拟合高斯混合。 例如,在图 5-1 中,VGM 找到三种模式 (mi = 3),即 1、972 和 rj3 。 学习到的高斯混合为 Pc(ci,j) = E _1 p= N(c3=; 'l, #e),其中 y1 和 #k 分别是模式的权重和标准差。
  2. 对于 C 中的每个值 ci,j,计算来自每个模式的 ci,3 的概率。 例如,在图 5-1 中,概率密度为 P1、P2、P3。 概率密度计算为 Pk = PkN(ci,j; Ilk, 0k )。
  3. 从给定的概率密度中采样一种模式,并使用采样的模式对值进行归一化。 例如,在图 5-1 中,给定 pi、P2 和 p3,我们选择第三种模式。 然后我们将 ci,3 表示为指示第三模式的单热向量 #ij = [0, 0, 1],以及表示该模式内的值的标量 aj,= 。
    行的表示变成连续和离散列的串联在这里插入图片描述其中 di,j 是离散值的 one-hot 表示。在这里插入图片描述
    图 5-1:特定于模式的标准化示例。 连续柱的分布(左图中的蓝色虚线)有 3 个模式,这些模式由变分高斯混合模型建模。 在中间的图中,出现了该列 ci 中的一个值。 cij具有来自各模式的P1、P2、P3的概率密度。 它更有可能来自第三种模式。 因此 cij 通过第三模式(即 rq3 和 03)的平均值和标准差进行归一化。

5.3 条件表格GAN架构

传统上,GAN 被输入从标准多元正态分布 .A(O, I) 采样的向量,并通过生成器和判别器或 Critic([4],[18]) 神经网络,最终获得 将 AP(O, I) 映射到数据分布的确定性变换。 这种训练生成器的方法没有考虑分类列中的不平衡。 如果在训练过程中随机采样训练数据,则无法充分表示属于次要类别的行,并且生成器可能无法正确训练。 如果对训练数据进行重采样,生成器将学习重采样的分布,该分布与真实数据分布不同。 这个问题让人想起歧视性建模中的“类不平衡”问题,但挑战更加严重,因为没有一个列可以平衡,并且真实的数据分布应该保持完整。
具体来说,目标是有效地重新采样,以便在训练过程中均匀(但不一定均匀)地对离散属性的所有类别进行采样,并在测试或综合过程中恢复(未重新采样的)真实数据分布。 实现此目的的一种方法是强制生成器匹配给定的类别。 令 k* 为第 i* 个离散列 Di 的值。 必须与生成的样本 i- 相匹配,那么生成器可以解释为给定该特定列的特定值的行的条件分布,即 i- ~ Pg(rowlDj, = k*)。 因此,我们将该生成器称为条件生成器,而基于其构建的 GAN 称为条件 GAN。 此外,在本文中,我们将 CTGAN 构建为基于两个主要模块的条件 GAN:条件生成器 9 和批评者 C。
将条件生成器集成到 GAN 的架构中需要解决以下问题:1)有必要设计条件的表示并为其准备输入,2)生成的行有必要保留 3) 条件生成器有必要学习真实数据条件分布,即 Pg(rowlDj, = k*) = P(rowlDi, = k*),在这里插入图片描述
我们提出了一个由三个关键要素组成的解决方案,即:条件向量、生成器损失和采样训练方法。 条件向量。 我们引入向量 cond 来指示条件 (D. = k*)。 回想一下,在可逆数据转换之后,所有离散列 D1, … , DN 最终都成为 one-hot 向量 di, 。 。 。 , dN 使得第 i 个独热向量为 di = [d k)],其中 k = 1,…,|DjI。 令mi = [m k)],对于k = 1,…,DIl是与第i个one-hot向量di相关联的第i个掩码向量。 因此,条件可以用这些掩码向量表示为在这里插入图片描述
然后,将向量 cond 定义为 cond = mi G… EmN。 例如,对于两个离散列,Di = {1, 2, 3} 和 D2 = {1, 2},条件 (D2 = 1) 由掩码向量 mi = [0, 0, 0] 和 M2 表示 = [1, 0]; 所以条件 = [0, 0, 0, 1, 0]。 ([0, 0, 0] 表示没有为 D1 分配任何值。) 发电机损耗。 在训练期间,条件生成器可以自由地生成任意一组 one-hot 离散向量 {d1, … , 1N}。 特别是,给定条件 (D. = k*)以 cond 向量的形式,前馈传递中的任何内容都不会阻止为 k # k* 生成 di*) =0 或 djk) =1。 提出强制条件生成器产生 * = mi- 的机制是通过添加 mi 之间的交叉熵来惩罚其损失。 和 ai-,对批次的所有实例进行平均。 因此,随着训练的进展,生成器学会将给定的 mi* 精确复制到 di…
抽样训练。 条件生成器产生的输出必须由批评者评估,批评者估计学习的条件分布 Pg(rowlcond) 和实际数据的条件分布 P(rowlcond) 之间的距离。 真实训练数据的采样和条件向量的构造应该符合,以帮助批评者估计距离。 有两种可能性:要么我们从表中随机选择一个实例(行),然后选择其中的条件属性,要么我们从该列中随机选择一个属性(列)和一个值,然后选择一行过滤表 该列的值。 第一种可能性不适合我们的目标,因为我们无法确保在训练过程中对离散属性的所有值进行均匀采样。 另一方面,如果我们认为所有离散列的可能性相同并随机选择一个列,然后考虑其范围内的所有值的可能性相同,则可能出现来自非常低频类别的一行将被过度过采样的情况 ; 所以再次不是一个合适的选择。 因此,出于我们的目的,我们建议采取以下步骤:

  1. 创建 Nd 个零填充掩码向量 mi = [m k)]k=1I…lDi, for i = 1,… Nd, SO 第 i 个掩码向量对应于第 i 列,每个分量与 该列的类别。
    2、从所有Nd个离散列中以等概率随机选择一个离散列Di。 令 i* 为所选列的索引。 例如,在图 5-2 中,所选列为 D2 ,因此 i* = 2。

  2. 在 2、Di. 中所选列的值范围内构建 PMF,使得每个值的概率质量为 其频率的对数那个专栏。

  3. 令k为根据上述PMF随机选择的值。 例如,在图 5-2 中,范围 D2 有两个值,选择第一个值,因此 k 1。

  4. 将第 i* 个掩码的第 k* 个分量设置为 1,即 mi = 1。
    6 . 计算向量 cond = mi … me G mNd。 例如,在图 5-2 中,我们有掩码 mi = [0, 0, 0] 和 m 2* = [1, 0],因此 cond = [0, 0, 0, 1, 0]。
    我们使用 PacGAN 框架,从每个 pac 的训练数据中提取 10 个样本。 该框架下的训练算法在算法 1 中有完整描述。它首先创建与批量大小一样多的条件向量 cond,并从 NA(O, I) 中抽取尽可能多的样本(第 1-3 行)。 两者都被前馈到条件生成器中以生成一批假行(第 4 行)。 PacGAN 的输入是双重的。 一方面,它来自根据 cond 向量对训练表格数据进行采样。 另一方面,它是条件生成器的输出。 两者都按照第 7 行和第 8 行的详细说明进行预处理,然后转发给批评者,以获得其损失 £c(第 9 行)。 在第 10-12 行中,我们按照[18]计算批评者的梯度惩罚。 为了更新批评者的参数,我们使用梯度下降步骤,学习率为 2 - 10-4,#1 = 0.9,/32 = 0.5 和 Adam 优化器(第 13 行)。 为了更新条件生成器的参数,首先需要在条件生成器(第 1-7 行)和批评器(第 15 行)中重复前馈步骤。 这会导致条件生成器丢失,因为在这一步中批评者没有更新。 然后,我们使用类似于批评者参数的梯度下降步骤(第 16 行)。
    最后,条件生成器 g(z, cond) 架构可以形式化地定义记为在这里插入图片描述
    生成用于不同目的的合成数据。 在测试过程中,用户必须为条件 CTGAN 提供随机向量 z(对于任何其他 GAN)和根据离散列及其值范围正确构建的条件向量。 用户可以构造 cond 在离散列中生成具有特定值的行,例如生成 D2 = 1 的多个列。在我们的实验中,i* 被均匀采样,mi 被均匀采样。 遵循 Di 的边际分布。 以便生成的数据有望揭示真实的数据分布。
    在这里插入图片描述

6 生成综合数据的其他方法

在开发 CTGAN 之前,我们多次尝试构建合成数据生成器,包括长短期记忆(LSTM)[23]模型和变分自动编码器模型。 在本章中,我们将描述这些努力。

6.1 TGAN

TGAN [55] 使用 LSTM 逐列生成合成数据。 每列都取决于先前生成的列。 我们使用注意力机制[5]来建模列之间的相关性。 在生成列时,注意力机制会关注与当前列高度相关的先前列。 TGAN 的参数比 CTGAN 更多,因此训练起来更耗时。
预处理 TGAN 使用与 CTGAN 类似的预处理方法。 所有连续列均使用特定于模式的归一化(第 5.2 节)归一化为标量 aij 和向量 #ij。1 所有离散列均表示为 one-hot 向量 di,j。在这里插入图片描述在这里插入图片描述
图 6-1:使用 TGAN 生成器生成简单表格的示例。 该示例有两个连续变量和两个离散变量。 这些列的顺序是 [C1, Di, C2, D2]。 TGAN 按照表中的原始顺序一一生成这四个变量。 每个样本都是通过六个步骤生成的。 每个数值变量都分两步生成,而每个分类变量则一步生成。
图 6-1 显示了 TGAN 的结构以及如何使用它生成表格数据。 我们使用长短期记忆(LSTM)网络作为生成器,并在判别器中使用多层感知器(MLP)。 生成器:我们分两步生成一个数值变量。 我们首先生成值标量 aj,然后生成聚类向量 3。我们一步生成一个分类特征,作为所有可能标签的概率分布。 每个步骤 t 中 LSTM 的输入是随机变量 z、先前的隐藏向量 ft-1 或嵌入向量 ft’_ 1(具体取决于先前输出的类型)以及加权上下文向量 at。 随机变量 z 是从 K(O, I) 中采样的 100 维向量。 基于注意力的上下文向量 at 是之前所有 LSTM 输出 hi:t 的加权平均值。 我们学习一个注意力权重向量 7yt E R’。 y 是模型中的附加参数。 上下文向量计算为 在这里插入图片描述
我们设置 ai = 0,因为没有先前生成的列。 LSTM ht 的输出是一个 100 维向量。 我们将输出投影到隐藏向量 ft = FC1oo+ 100(ht)。 我们进一步将隐藏向量转换为输出变量。

-如果输出是连续变量的值部分,我们将输出计算为 ai = FCioo41(ft)。 t + 1 步骤的隐藏向量是 ft。
-如果输出是连续变量的聚类成员资格,我们将输出计算为 #i = softmax(FCioos5 (ft))。 t+1步的特征向量是ft。
-如果输出是离散变量,我们将输出计算为 di = sof tmax(FClooI-Di (ft)) t + 1 步骤的隐藏向量为 ft = Ei[argk max di],其中 E C RIDIlxOG 是嵌入矩阵 对于离散列 Di。
-fo 是一个特殊的向量,我们在训练过程中学习它。
判别器我们使用两层、全连接的神经网络作为判别器。 网络结构与CTGAN相同。 我们在 TGAN 中使用小批量判别向量 [45],而不是 PacGAN。
损失函数 该模型是可微分的,因此我们使用 Adam 优化器来训练我们的模型。 我们优化生成器,使其能够尽可能欺骗鉴别器。 为了更有效地预热模型,我们通过将离散变量的 KL 散度和连续变量的聚类向量添加到损失函数中来联合优化它们。 添加KL散度项也可以使模型更加稳定。 我们将生成器优化为在这里插入图片描述
其中3’和d’是生成的数据,而3i和di是真实数据。 我们以与普通 GAN [17] 相同的方式优化判别器。

6.2 VAE文件

VAE 通过最小化证据下限 (ELBO) 损失同时训练生成模型 po(x) = f po(xlz)p(z)dz 和推理模型 qw(zlx) [31]
在这里插入图片描述
通常p(zj)是多元高斯分布A(O,I)。 此外,po(xjIzj) 和 qp(zjlxj) 使用神经网络进行参数化,并使用梯度下降进行优化。 当使用 VAE 对表格数据 T 中的行 rj 进行建模时,每行都被预处理为
在这里插入图片描述
这会影响网络 po(rj Izj) 的设计,需要以不同的方式进行设计,以便 p0 (r zj) 可以准确建模并有效训练。 在我们的设计中,神经网络输出 2Nc + Nd 变量的联合分布,对应于 2Nc + Nd 变量 ry。 我们假设 ayj 遵循具有不同均值和方差的高斯分布。 所有 fijy 和 dij 都遵循绝对 PMF。 这是我们的设计。
在这里插入图片描述
在这里插入图片描述
在po(rj Iz)中,权重矩阵和6i是网络中的参数。 这些参数是使用梯度下降来训练的。 q(zjlrj) 的建模与传统的 VAE 类似。
在这里插入图片描述
在这里插入图片描述

7SDGym 基准框架

人们已经提出了许多统计和深度学习方法来对表格数据进行建模。 然而,截至撰写本文时,尚未开发出一致的基准来公平地比较不同的方法。 表格数据具有不同的属性,例如单列或混合列类型、低维度或高维度等。全面的基准测试应包含此类属性的各种组合。 如[53]所示,评估生成模型的指标在很大程度上是独立的。 因此,我们不依赖一种指标来比较不同的模型。 相反,我们的基准测试包含模拟数据和真实数据两部分,并评估多个指标。 模拟数据具有已知的概率分布,用于评估学习数据分布的质量,而真实数据来自真实的机器学习任务,可用于评估真实场景中的性能。 在此基准测试中,我们重点关注模型学习行概率分布的能力。 该基准不会挑战从极少数示例中学习分布的模型。 我们选择的所有数据集至少包含 10, 000 行,并且行数明显高于列数。 在本章的其余部分中,我们将详细描述模拟数据和真实数据基准方面。

7.1 模拟数据

对于模拟数据,我们使用高斯混合模型或贝叶斯网络手工制作了几个数据分布,以控制数据分布。 如图7-1所示,我们手工制作了一个模拟数据生成器S并生成了训练和测试集Ttrain和Ttest。 我们在 Ttrain 上训练了一个数据合成器 G 并生成了合成数据 Ty。 我们使用以下指标评估 G。
生成数据的可能性 £,y:我们计算了 Toy 在 S 上的可能性。由于 S 是已知分布,因此可以轻松计算模拟数据分布上的合成数据的可能性。在某种意义上,可能性可以显示 合成数据的质量。这是一个有缺陷的指标:高似然性并不一定表明合成器良好,因为多次重复同一数据点的平凡 G 可以获得高似然性。
测试数据的可能性 £test:我们使用 Tsyn 将模拟数据生成器重新训练为 S’。S’ 与 S 具有相同的结构,但参数不同。如果 S 是高斯混合模型,我们使用相同数量的高斯分量,并且 重新训练每个分量的均值和协方差。如果 S 是贝叶斯网络,我们保留相同的图并在每条边上学习新的条件分布。我们计算 S’ 上 Ttest 的似然。该度量引入了结构的先验知识 S’ 不一定在 Tsyn 中编码,因此可能是有缺陷的度量。
我们构建了 7 个不同的模拟数据集。 表 7.1 显示了模拟数据的统计信息。 Grid、gridr和ring是由高斯混合模型生成的。 我们按照[50]生成网格和环。 Gridr 是通过向网格中的模式添加随机噪声来生成的。 图 B-1 显示了这三个数据集。 其他四个数据集由贝叶斯网络生成。 图B-2和B-3显示了贝叶斯网络结构。 我们使用来自http://www.的图形结构和概率分布。 bnlearn. com/bnrepository/.在这里插入图片描述

7.2 真实数据

对于真实数据部分,我们想要评估使用合成数据作为机器学习训练数据的有效性。 换句话说,真实数据可以实现应用级评估。 如图7-2所示,我们有训练数据Ttrain和测试数据Ttest。 我们在 Tt,rin 上训练数据合成器 G,并使用 G 生成合成数据 T,。我们在 T,vn 上训练预测模型并测试预测模型
在这里插入图片描述
表 7.1:我们的基准测试中的模拟数据集。 #C、#B 和 #M 分别表示连续列、二元列和多类离散列的数量。使用 T 检验。 我们使用准确度和 F1 评估分类任务的性能,同时使用 R2 评估回归任务。 对于每个数据集,我们选择实现合理性能的分类器或回归器。 由于我们并不是试图选择最好的分类或回归模型,因此我们将多个预测模型的平均性能作为 G 的指标。
我们从 UCI 机器学习存储库中选择成人、人口普查、封面类型、入侵和新闻。 我们从 Kaggle 获得荣誉。 我们将 MNIST 转换为 28x28 和 12x12 图像,将每个图像矢量化为一行数据,并分别称为 MNIST28 和 MNIST12。 表 7.2 显示了这些模拟数据集的统计数据。对于每个真实数据集,我们运行多个分类器和回归器,并选择具有合理性能的模型。 表7.3显示了所选模型和相应的性能。在这里插入图片描述
图 7-2:合成数据生成器基准测试中的真实数据。
在这里插入图片描述
表 7.2:我们的基准测试中的真实数据集。 #C、#B 和 #M 分别表示连续列、二元列和多类离散列的数量。
在这里插入图片描述
表 7.3:为每个真实数据集选择的分类器和回归器以及相应的性能。

8实验结果

在本章中,我们使用 SDGym 对现有统计和深度学习模型以及 CTGAN 和 TVAE 进行基准测试。 我们首先描述我们的实验设置和超参数。 然后,我们展示定量结果,进行一些案例研究,并提出 CTGAN 的消融研究

8.1 设置和超参数

我们使用 SDGym 评估 CLBN、PrivBN、MedGAN、VeeGAN、TableGAN、CTGAN 和 TVAE。 以下是每个模型的设置:
• CLBN:我们使用 Pomegranate 库 [48] 中的实现。 由于 CLBN 仅支持离散变量,因此我们在训练贝叶斯网络之前将连续列离散化为 15 个 bin。
• PrivBN:我们使用原始的C++ 实现并为可执行二进制文件编写Python 包装器。 在实现中,所有连续变量都被离散化为 20 个 bin。 PrivBN 是一个差分隐私数据合成器。 它给合成数据增加了噪音。 为了公平比较,我们使用大量的隐私预算来减少噪声对性能的影响。 我们将E-差分隐私预算设置为10。lhttps://sourceforge.net/projects/privbayes
• MedGAN:我们遵循原始实现 2 中的设置。我们使用具有 128 个隐藏单元的 1 层多层感知器(MLP)作为自动编码器。对于 GAN,我们使用 2 层 MLP。隐藏层大小为(128, 128) 为生成器,(256, 128) 为判别器。我们使用相对较大的正则化权重,等于 le - 3。
• VeeGAN:我们对生成器和重建器使用隐藏大小 (128, 128) 的 2 层 MLP。 我们使用隐藏大小为 128 的 1 层 MLP 作为鉴别器。
• TableGAN:我们在生成器中使用 3 个卷积层,在判别器中使用 3 个反卷积层。
• TVAE 和 CTGAN:我们遵守第 5 章中描述的超参数。
对于 TVAE 和所有基于 GAN 的模型,我们使用批量大小 500。每个模型都使用 Adam 优化器训练 300 轮。 每个时期都会迭代所有训练示例一次。 我们假设对于任何数据集,除了 £syn 之外的任何指标,Ttrain 都能实现最佳性能。 因此,我们提出了输出 Ttrain 的 Identity 方法

8.2 定量结果

实验结果如表8.1、8.2和8.3所示。 括号中的数字是方法的等级(越低越好)。 排名计算如下。 对于每组实验: (1) 对每组中算法的总体指标进行排名。 (2) 取每个算法所有等级的平均值。 为每种算法获得 [1, 7] 范围内的一个分数。 (3)重新对分数进行排序。 在连续数据的情况下,CLBN 和 PrivBN 会受到影响,因为连续数据被离散化。 MedGAN、VeeGAN 和 TableGAN 都遭受模式崩溃的困扰。 通过特定于模式的标准化,我们的模型在二维连续数据集上表现良好。https 😕/github. com/mp2893/medgan

在这里插入图片描述
在贝叶斯网络生成的数据集上,CLBN和PrivBN具有天然的优势。 我们的 CTGAN 的性能比 MedGAN 和 TableGAN 稍好。 令人惊讶的是,尽管将离散列视为连续值,但 TableGAN 在离散数据集上表现良好。 我们的理由是,在我们的模拟数据中,大多数列的类别少于 4 个,因此转换不会导致严重问题。 在真实数据集上,TVAE 和 CTGAN 优于 CLBN 和 PrivBN,而其他 GAN 模型无法获得与贝叶斯网络一样好的结果。 当涉及大规模真实数据集时,学习高质量的贝叶斯网络是很困难的。 真实数据和学习贝叶斯网络生成的合成数据之间存在显着的性能差距。
在这里插入图片描述
我们计算表 8.4 中所示的所有真实数据集上生成的合成数据与训练数据中最近邻之间的距离。 TVAE 和 CTGAN 在机器学习效果方面均名列前茅,但 CTGAN 生成的合成数据与训练数据的距离比 TVAE 更大。 因此,CTGAN 比 TVAE 更好地保护隐私。
在这里插入图片描述
在七个分类数据集上,我们主要使用决策树分类器(DCT)和 MLP 分类器。 表 8.5 显示了这两个分类器的平均性能。 在真实训练数据上,MLP 可以实现比决策树稍好的性能,但在基于贝叶斯的合成数据生成器生成的合成数据上效果不佳。 在 MedGAN、VeeGAN 和 TableGAN 生成的合成数据上,DCT 和 MLP 实现了相似的性能。 我们的 TVAE 和 CTGAN 生成高质量的合成数据,因此 DCT 和 MLP 的性能都更好比在其他合成数据上训练的要多。 MLP比DCT略好,与真实数据一致。在这里插入图片描述

8.3 案例分析

在这里插入图片描述
图 8-1:使用 TableGAN、VEEGAN、TVAE 和 CTGAN 可视化合成网格数据集。 红色标记是地面实况模式,蓝色点是不同合成器生成的合成样本。
图8-1展示了TableGAN、VEEGAN、TVAE和CTGAN在网格数据集上的结果。 显然,TableGAN 和 VEEGAN 不能很好地对数据进行建模。 TableGAN 忽略了左下角,并且没有正确地对任何模式的方差进行建模。 VeeGAN 也失败了,因为许多样本位于边界处。 VeeGAN 还倾向于在相邻模式之间水平或垂直采样大量数据。 例如,在水平线 y = -4 和垂直线 x = 4 上采样许多点。我们的 TVAE 和 CTGAN 成功捕获 25 个模式,很大程度上是因为可逆数据变换可以成功捕获每个轴上的 5 个模式。 TVAE比 CTGAN 更好地捕获方差。 CTGAN 生成的合成数据比真实数据具有更高的方差。 令人惊讶的是,在 TVAE 中,前两行获得的样本少于后三行。在这里插入图片描述
图 8-2:使用 TVAE 和 CTGAN 可视化合成的 gridr 数据集。 红色标记是地面实况模式,蓝色点是不同合成器生成的合成样本。
图 8-2 显示了 gridr 数据集上的 TVAE 和 CTGAN 结果。 在此数据集中,模式是随机扰动的,因此高斯混合模型预处理中找到的模式与数据中的模式并不完全一致。 因此,生成模型需要根据另一个维度的值来正确生成一个维度的数据。 TVAE 在此数据集上完美运行。 它在网格中不会遇到同样的问题。 CTGAN 的工作效果不如 TVAE,因为它无法捕获模式上的扰动。

8.4 消融研究

为了了解 CTGAN 中每个模块的重要性,我们进行了消融研究。 模式特定归一化:在 CTGAN 中,我们使用变分高斯混合模型 (VGM) 来归一化连续列。 我们将其与 (1) GMM5:具有 5 个模式的高斯混合模型、(2) GMM10:具有 10 个模式的高斯混合模型和 (3) MinMax:最小-最大标准化为 [-1, 1] 进行比较。 表 8.6 显示,使用 GMM 会稍微降低性能,而最小-最大归一化会产生最差的性能。 条件向量和采样训练:我们依次删除这两个
在这里插入图片描述
成分。 (1) w/o S.:我们首先禁用采样训练,但生成器仍然得到一个条件向量,并且其损失函数仍然具有交叉熵项。 条件向量是从训练数据频率而不是对数频率中采样的。 (2) w/o C.:我们进一步删除生成器中的条件向量。 表 8.7 显示采样训练和条件向量对于不平衡数据集都很重要。 特别是在信用等高度不平衡的数据集上,删除采样训练会导致 F1 指标的结果为 0%。
表 8.7:采样训练和条件向量的消融研究。
在这里插入图片描述
WGANGP和PacGAN:在论文中,我们使用WGANGP+PacGAN。 在这里,我们将其与三种替代方案进行比较:仅 WGANGP、仅普通 GAN 损失以及普通 GAN + PacGAN。 表 8.8 显示,WGANGP 比普通 GAN 更适合合成数据任务,而 PacGAN 对普通 GAN 损失有帮助,但对 WANGP 来说不那么重要。
在这里插入图片描述

8.5 讨论

TVAE 在某些情况下优于 CTGAN,但 GAN 确实有几个有利的属性,这个结果并不表明我们应该在建模表上始终使用 VAE 而不是 GAN。 CTGAN 相对于 TVAE 有一些优势,即由于 GAN 中的生成器不是直接通过均方误差进行优化,因此使用 DPGAN 和 PATE-GAN 等现有框架更容易使其具有差分私有性。 根据经验,我们计算合成数据与训练数据中最近邻之间的距离。 我们观察到 CTGAN 的距离比 TVAE 大 13%,同时在真实数据上实现相同的精度或 F1 分数。 CTGAN 更加灵活,因为它能够通过其架构捕获变量之间的交互,而 TVAE 本质上不具备这样做的能力。 为此,在涉及强复杂底层结构的场景中,CTGAN 应该优于 TVAE。

9结论和未来的工作

在本文中,实现并开源了一个全面的综合表格数据基准SDGym。 该基准的实施揭示了表格数据建模的挑战以及现有统计和深度学习模型中的问题。 CTGAN 就是为了克服此类问题而设计的。 实验结果表明,CTGAN 可以对分布复杂、类型混合的表格数据进行建模,并且在不同数据集上具有鲁棒性。 CTGAN 是第一个在我们的基准测试中优于贝叶斯网络的深度学习模型。 合成数据有许多用例。 CTGAN可以有效地对表格数据进行建模并生成高质量的合成数据,但需要进一步研究以满足不同类型的应用。 作为未来的工作,我们希望探索以下方向。

  • 生成差异化私有合成数据。 一项重要的应用涉及使用合成数据来克服发布数据时的隐私或官僚障碍。 由于 CTGAN 的性能优于所有其他基于 GAN 的模型,因此创建 CTGAN 的差分隐私版本非常重要。 同样,我们想探索差异化私有 VAE 的可能性。
  • 将 CTGAN 应用于数据增强。 缺乏训练数据是机器学习中的一个严重问题。 合成数据可用于生成大量训练数据。 我们想探索机器学习模型是否可以通过将额外的合成训练数据添加到真实的训练集中而受益。
  • 使用 CTGAN 来了解列之间的底层关系。 理解列之间的因果关系具有挑战性。 我们想要解释学习到的生成模型,以了解列之间的潜在关系。
  • 了解模型收敛的理论保证。 尽管我们凭经验证明 GAN 可用于对离散变量和连续变量的混合进行建模,但仍需要理论论证来保证模型按预期工作。 这样的保证还可以激发更好的学习目标和优化方法以获得更好的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值