如何利用数据分析的合成数据质量
利用EDA击败甘斯挑战
机器学习主要是作为以模型为中心的实践发展的,在该实践中,要实现质量结果,等待小型数据处理工作,而是专注于尝试模型家族并执行详尽的参数调整例程。意识到需要有益健康的ML以数据为中心的方法出现了,并试图将数据和数据质量放回主要阶段。
这种转变的主要原因很简单,而良好的模型很重要,因此使用的数据也很重要。正如计算机科学的Adagio所说,“垃圾进垃圾出”,我们期望ML中使用的数据会有所不同吗?虽然良好的模型和良好的数据通常依赖于任务,但良好的数据通常更可扩展,因为有效的数据预处理不应服务,而应提供多种ML任务,转化为较短的迭代循环,涉及所需的结果,并在多个项目中产生复杂的收益。
您是否曾经尝试过或尝试过在选择数据集上进行生成的对抗网络进行数据合成,并想知道如何保证生产数据的质量?
您将有充分的理由关心它,因为实际上,文献表明了GAN学习的许多困难:
- 模式崩溃 -一种特殊的过度拟合,无论给出什么输入,模型都倾向于输出非常相似的输出
- 火车不稳定 -通常,对产生的样品分布和提供给鉴别器的样本的非重叠支持导致训练不稳定,这可能会彻底危害模型学习
- 复杂的收敛动力学 -发电机和鉴别器都可以用实际术语表现出最佳状态,并导致不同的不良结果。理想的平衡是两种模型的平衡匹配,但是没有直接的方法来确保发生这种情况。
好像以上点还不够,最后,甘斯仍然是黑框模型。输入被馈送到模型,并且可以以预期格式检索输出。但是,这几乎没有刮擦具有质量良好的合成数据的含义。
如果您曾经尝试过创建合成数据,那么您可能已经考虑过这个问题。我们可以通过以下困境进行总结:
- 合成数据的许多方面与其质量相关,因此您想彻底
- 进行深入分析可能非常耗时,您不想在此步骤上太长
两者兼而有之是棘手的。这是可以使用开源软件包的地方。这些可以帮助您更快地取得结果,并经常教您新的有效方法来处理旧疼痛。
在本文中,我们将向您展示如何整合数据剖面包裹YDATA合成项目。YDATA合成是一个开源Python软件包,为表格和时间序列数据合成提供了一系列生成模型实现。数据剖面是一种开源解决方案首都一号这使用机器学习来帮助公司监视大数据并检测私人客户信息,以便可以保护它。通过组合这两个软件包,您可以轻松合成数据并配置它以评估生成数据的质量。
在评估合成输出的质量时,我们可以专注于以下方面的组合:
- 隐私,生成的数据是否包含任何敏感信息?(名称,地址,可以使真实世界记录的功能组合)
- 保真度,合成数据如何保留原始数据属性?(边际分布,相关性)
- 实用程序,在下游ML应用程序中使用合成数据的表现如何?(火车合成测试真实,特征重要性分布比较)
对于这项研究,我们关注的是忠诚度,要分析它,我们将采取以下步骤:
- 安装DataProfiler并导入所需的软件包
- 阅读数据集
- 配置数据集
- 数据处理
- 定义并适合合成器
- 样品和后处理合成数据
- 分析合成数据并比较样品
- 保存/加载配置文件以供以后分析
我们将在数据合成流中介绍基本数据综合膜使用量。我们将通过利用数据profiler及其输出来理解哪些预处理导致最佳结果来重点关注数据预处理及其对生产样品的保真度的影响。
完整的代码实现可以是在这里找到。我们将在本教程中探索的数据集可以在卡格格尔 - 心血管疾病。
我们走吧!
1。安装数据剖面和导入所需软件包
在此演示中,我们将为名为ydata_synth启动一个conda环境,安装和使用较小的数据profiler版本来探索我们的合成数据的实用性方面。
导入我们所有必需的软件包:
此时,如果您在系统中运行GPU,则可能需要允许内存增长:
2。阅读数据集
我们将在此演示中使用的数据集是流行的样本心血管疾病数据集。这是一个打开的数据集,因此您可以轻松下载并添加到项目位置中的文件夹中。
我们通过清理一些极其不太可能或什至不可能通过执行以下条件来制定了这些样本:
- 舒张压(下)压力必须大于0
- 收缩压(较高)不得大于240(以上高血压危机
- 舒张压必须低于收缩压值
通过应用这些标准,我们滤除了大约1.9%的记录,并使样本更具代表性人群的代表性。
3。配置数据集
要快速了解有关我们的数据的更多信息,我们可以查看数据剖面师可以提供的。
这剖面
是解锁数据分析的主要类。
根据传递的数据对象的不同非结构化Profiler
,专门用于文本数据或结构化Profiler
,专门用于表格数据,将自动派遣。
创建一个剖面
对于吸烟者样品很简单。有很多信息可以从该对象中解开,我们将重点关注最有用的任务。
从报告的全局部分中,我们可以看到我们没有重复的行,没有丢失的值,而且我们获得了有关数据集架构的一些一般信息。
尽管没有必要,但在这种情况下,可以通过图形
模块的plot_missing_values_matrix
方法。它的输出使我们能够知道缺失值的流行率,它们发生的列以及推断的缺失值是什么。
蓝条意味着我们没有丢失的数据。
让我们看一下功能级别信息,并提取有关数据集的更多知识。
解开我们可以从本报告中看到的一些内容:
- 年龄似乎是天数
- 年龄特征有很多独特的值,但根据描述性统计,它不是统一或正常分布式
- 根据ap_hi和ap_lo的样本值,此功能似乎将其分组为10。但是,唯一值的数量表明相反
这些是在预处理数据时需要考虑的一些有用的见解。
来自图形
模块我们还可以瞥见特征的经验分布plot_histograms
。
这些方法返回matplotlib
还允许您进行进一步定制的数字。
现在我们也知道以下内容:
- 年龄,ap_hi和ap_lo似乎表现出强烈的多模式行为。我们可能想离散这些功能
- 身高和体重似乎几乎正常,但右尾,它们可能可以很好地适合对数正态分布
我们将对数据进行这些见解进行数据预处理。
4.数据预处理
在最后一部分中,通过使用摘要报告和绘制的直方图,我们检测到了一些特征分布,这些特征分布可能很难被我们用作合成器的gans。即年龄和血压特征的多模式分布以及身高和体重特征的偏斜尾巴。我们将进行自定义的预处理流程,以尝试集中我们功能的信息,以便更容易掌握数据关系。
从一些功能工程开始:
- 在年龄的年龄,我们将将几天转换为年,并以5范围的范围bin
- 相对于血压值,四舍五入到最接近的10也应提供不错的结果,我们注意到大多数值实际上已经采用了这种格式。这也类似于医生在检查咨询时阅读动脉压值的方式!
这种预处理的流程将为我们带来许多分类功能。分类分布是捕捉棘手也是。为了避免对分类分布进行建模,我们将将数据的密集表示传递给gans。一些降低维度的技术Scikit学习适合获得数据的密集表示。
为了测试这个额外的处理步骤有助于GAN学习的假设,我们将分为两分,并创建两个培训数据集:
- 仅预处理功能如上所述
- 将尺寸降低技术应用于第一步的输出。
4.1 - 功能工程
年龄特征
动脉压特征
与人工压力相关的功能提取的功能的代码可以是在这里找到。
4.2 - 降低维度
在拟合合成器之前,我们将采用降低维度的技术,以规避生成分类数据的困难。微不足道的选择将直接应用PCA。虽然这可能起作用,但已知PCA不能适当地分类功能,我们将使用非负基质分解。
在本节中,我们准备了两个火车数据集。让我们来定义合成器,我们将从那里进行比较。
5.定义并安装合成器
来自YDATA合成库我们将初始化一个Wasserstein Gan受到渐变罚款,,,,wgangp
。要设置GAN体系结构和培训参数定义,您可以在示例笔记本。
一旦设定了GAN超参数,我们就可以训练模型。为此,我们只需要提供以下输入 - 根据下面的代码段,带有可用的分类和数值列的列表。
6.样品和后处理合成数据
使用拟合合成器,我们可以通过利用样本
方法。样本方法作为输入您要生成的合成样品的数量。
然而,就在合成过程之前,我们进行了一些转换并提取了一些特征。为了使合成数据类似于原始数据,我们需要还原应用的转换。
6.1 - 降低维度的降低
我们通过反转NMF转换和预处理来撤消对流2的更改。
6.2 - 还原功能工程
两种合成样品均为相同的格式。我们需要撤消功能工程步骤,以将两者都置于原始格式中。
年龄
对于年龄,我们可以在每个范围内均匀地采样整数,添加低尺度正常噪声并将几年转换为天数。这应该返回我们可以在真实数据中验证的尖峰行为。
动脉压值
这些功能不需要太多,在功能报告分析中,我们怀疑其中大部分已经四舍五入到最近的10个。
让我们从整个数据集中进行验证。
实际上,超过95%的真实记录被四舍五入为0。我们将使用此信息来简化后处理。
现在,合成数据似乎是原始数据格式。
处理前后的处理操作总结了以下图:
数据预处理图和后处理图。作者的图像
7.比较样品曲线
为了比较合成和真实数据,我们首先创建合成样本的配置文件。我们可以使用plot_histograms
验证合成样品质量并获得忠诚度的初步检查的方法。
通过检查边际图,似乎功能工程 + NMF流量产生了更好的结果,并且确实成功地保留了真实数据的分类分布,而流量1则显示出均匀分布的趋势。年龄值似乎并没有很好地捕获分布的质量中心。可能以5的策略进行了抽样和添加噪声的策略,带走了太多信息,而采样 +噪声策略无法检索这种行为。似乎葡萄糖特征也必须仅代表多数类。
这差异
方法的方法剖面
只要它们共享相同的模式,允许我们获取两个数据配置文件之间的差异。这使我们能够瞥见两个样本之间的相似性,这是将合成样本与真实数据进行比较的有用方法!
该输出非常丰富,我们可以解开以下观察结果:
- 年龄的分布确实关闭了,我们可以看到,差异的平均和中位数实际上是显着的,接近6年的平均值和中位数
- 高血压似乎实际上是相当不错的,差异的标准偏差约为6个,值为80-220的值,差异的平均值和中位数接近0
- 在葡萄糖中,我们可以确认从图中获取的怀疑,合成样本是恒定值,因为该场
命令
指示。好吧,选择一个至少它使多数班级正确!
8.保存/加载配置文件供以后分析
数据探索器还允许保存和加载配置文件。这是您YDATA合成项目的另一个有用功能。为了保存个人资料,您可以使用剖面
节省
方法。
例如,我们可以保存刚刚创建的合成器和合成数据样本概况,并担心一批实验后的样本评估或模型选择。
重新加载数据配置文件加载
方法也很容易:
结论
来自Capital One的Data Profiler具有一组工具,是您的机器学习流程的良好补充。
我们已经看到了如何通过图或丰富的词典获得数据的总体和更详细的数据。我们还学会了如何评估数据集的缺失。
为了比较合成样品的质量,我们使用了差异
为我们提供了一种特殊类型的方法剖面
针对两个样本的差异。
我们了解到训练Wasserstein生成的对抗网络具有梯度惩罚在密集的表示中,与在数据空间中直接学习相比,忠诚度更高。可以应用许多不同的策略来进行预处理,数据剖面对于测试不同的可能性很有用。
这个演示证明了DataProfiler软件包以及如何在一个上下文中使用它YDATA合成项目。
在结束时,请考虑自己被邀请以数据为中心的AI社区,一个社区包装了数据爱好者,您可以在其中找到所有与数据有关的问题。等待您有很多很酷的开源软件包;A松弛域您可以在哪里找到知识,模因,工作清单,活动等等,或者分享您的胜利,损失,问题,结识人并参与讨论。