新的数据验证库TFDV上线,快来看看有什么新功能

点击上方关注,All in AI中国

作者——Vincent Teyssier

谷歌刚刚发布了他们的最终成品——一个用于端到端的大数据平台TFDV!数据科学的一大痛苦是处理数据质量问题,即数据验证。让我们看看谷歌在第一个版本上是如何交付的以及这个新库有多大用处。

新的数据验证库TFDV上线,快来看看有什么新功能

1. 安装

这是一个通过pip进行的相当标准的安装过程,但请确保已预先安装了一些依赖项,以确保它可以毫无问题地进行编译。就我而言,在Ubuntu 16.04上,我没有安装python-dev和python-snappy以获得更快的性能。如果你开始使用TFX库,Bazel也很好。

新的数据验证库TFDV上线,快来看看有什么新功能

这个TFDV是一个相当新的库,我强烈建议你备份存储库并查看你使用的每个函数接受的参数。

2.加载数据并生成统计数据:

这里没有高深的科学,我们首先导入库,数据集分析/验证的第一步是在数据集上生成_statistics。我将在这里加载一个csv并指定一个分隔符,但你也可以加载一个TFRecords。为方便起见,这里有两个函数定义标题:

新的数据验证库TFDV上线,快来看看有什么新功能

新的数据验证库TFDV上线,快来看看有什么新功能

让我们加载并生成我们的统计数据:

新的数据验证库TFDV上线,快来看看有什么新功能

首先要注意的是,这个操作非常耗费内存。我的数据集只是一个86Mb的csv文件,但是RAM的使用量增加了近1Gb,因此请确保你有大量的RAM可用!

3.可视化统计数据:

生成统计信息后,你有2个选项可以对其进行虚拟化。你可以使用Facets Overview,(根据你的平台的不同,安装起来可能很复杂),或者你可以使用内置的TFDV可视化函数,它提供与Facet完全相同的信息:

新的数据验证库TFDV上线,快来看看有什么新功能

新的数据验证库TFDV上线,快来看看有什么新功能

如果你有大量缺失数据、高标准偏差等,立即发现它们对你来说是非常有用的。但我真的很喜欢Dive模块的Facets,它可以让你以非常直观的方式探索数据集的外观。

4.描述你的数据集以供将来验证

TFDV的主要特征是"模式"的概念。这基本上是对数据外观的描述,因此你可以将此描述与新的数据进行匹配并验证它们。

它描述了数据的标准特征,例如列数据类型、数据的存在/消除,预期值范围。

你可以在你认为是参考数据集的数据集上创建模式,并可以重复使用它来验证同一结构的其他数据集。

另一个有趣的功能是你可以在TFTransform中重用此模式来自动声明数据集结构。

要做到这一点,只需要一行代码就足够了:

新的数据验证库TFDV上线,快来看看有什么新功能

然而,尽管它看起来很简单,Tensorflow团队还是给出了一个警告:

通常,TFDV使用保守启发式方法从统计数据中推断出稳定的数据属性,以避免将模式过度拟合到特定数据集。强烈建议你查看推断的架构,并根据需要对其进行优化,以捕获有关TFDV的启发式可能遗漏的数据的任何领域知识。

为了存储你的模式,TFDV使用protobuf库,它正在成为操纵静态数据(数据结构、转换方案、冻结模型......)的统一方法。

如果有一点我们可能都同意,那就是没有数据集是完美的。领域知识在验证数据时至关重要,考虑到这一点,TFDV附带了助手函数,因此你可以手动地硬编码数据集不应该派生的规则。

每个函数都带有一组你可以访问和修改的属性。例如,让我们描述我们希望函数f1在至少50%的示例中被填充,这可以通过以下方式实现:

新的数据验证库TFDV上线,快来看看有什么新功能

每个函数都由以下组件组成:

函数名称、类型、状态、价值、域名

然后每个组件都有自己的子组件子集。我不会在这里列出它们,但我能给你的最好建议是解析模式protobuf,你会发现类似的东西:

新的数据验证库TFDV上线,快来看看有什么新功能

新的数据验证库TFDV上线,快来看看有什么新功能

你也可以在笔记本上简单地显示它:

新的数据验证库TFDV上线,快来看看有什么新功能

5. 验证更新的数据

现在描述了你的"完美"训练集,但是你每天都在不断地获取ETL的新数据,并寻找一种方法来验证新的设置,这是TFDV的核心。使用先前描述的架构/域,它将解析你的新数据集并报告异常值、丢失或错误的数据。

我认为教程中包含的图片很好地说明了一个良好的管道数据验证链应该是什么样子:

新的数据验证库TFDV上线,快来看看有什么新功能

当你试图为模型生成数据提取管道时,这基本上就是你尝试实现的目标。

让我们获取一个新的CSV文件,加载它,生成统计数据,并使用先前生成的模式解析它以进行验证:

新的数据验证库TFDV上线,快来看看有什么新功能

然后,你可以通过以下方式显示这些异常:

新的数据验证库TFDV上线,快来看看有什么新功能

你将获得一个列表,其中包含以下一条或多条错误消息,这些错误消息描述了新数据集没有满足的条件,以了解架构的预期条件:

新的数据验证库TFDV上线,快来看看有什么新功能

新的数据验证库TFDV上线,快来看看有什么新功能

新的数据验证库TFDV上线,快来看看有什么新功能

新的数据验证库TFDV上线,快来看看有什么新功能

我不得不说,这里的结果让我有些失望......我知道我们只讨论数据验证,但指出错误而不返回包含这些错误的子集感觉有点像未完成的工作。

我也知道这个函数非常昂贵,如果你从Talend或Alooma这样的套餐中获得年度许可,定价在一万到八万美元之间,你会得到一个很好的流程来处理你的缺陷,但我相信TF迟早会走这条路!

你仍然可以在"异常长描述"列中找到更多详细信息,因此你可以很好的理解你所拥有的内容。

另一个好处是,如果你认为可以预测与模式的偏差,你可以轻松地修改原始模式:

新的数据验证库TFDV上线,快来看看有什么新功能

6. 适应不同的数据集配置:

你可能希望使用模式定义验证你的集合,但是根据上下文(在教程示例中我们采用训练和预测,即标签/无标签),你可能需要忽略某些条件。这可以通过以下方式实现:

新的数据验证库TFDV上线,快来看看有什么新功能

7. 比较可视化工具中的不同集合

一张图片说明了一切:

新的数据验证库TFDV上线,快来看看有什么新功能

你可以通过一个比较直观的方式中获得上述所有优势。但是只限2组:

新的数据验证库TFDV上线,快来看看有什么新功能

8. 在TF Transform中重新使用模式

如前所述,你生成的模式将避免你手动描述你的函数类型。它可以通过以下方式加载到TFTransform中:

新的数据验证库TFDV上线,快来看看有什么新功能

9. 最后的说明

总而言之,TFDV正是它所代表的,一种数据验证工具,仅此而已,它与Tensorflow生态系统完美集成,为TFTransform提供了更多自动化,并完成了Google试图为机器学习实践者提供的端到端的框架。它仍然觉得缺少缺陷处理,但考虑到我们已经提供了不同库来减轻我们的缺陷点,我相信这很快就会到来!

你可以在这里找到完整的官方TFDV教程:https://www.tensorflow.org/tfx/data_validation/get_started

相关推荐