编者按:在KDD 2017上,Google推出基于TensorFlow的可扩展机器学习平台TFX,主打管理数据、训练模型、模型评估和模型服务四块内容。而今天,TensorFlow宣布开源TXF的一个重要组件:“数据验证(tf.DataValidation)”,可帮助开发人员更好地认识数据,并将其用于机器学习。
ML算法及其性能一直是学术界和工业界关注的一个重点,如果输入数据有误,所有的优化工作就会付诸东流。在数据量较少的时候,理解和验证数据只是一项微不足道的任务,但是在实践中,研究人员使用的数据量往往非常庞大,这就给手动检查造成了巨大压力。因此,自动化数据分析、验证和监管是有必要的。
TFDV(数据验证)是TFX平台的一部分,它也是Google每天用来分析和验证数PB数据的技术。鉴于此前它在数据纠错上一直有不错的表现,Google相信,TFDV也可以被用户作为维持ML模型性能的一个好工具。
在设计TFDV的早期,Google就已经考虑到了在笔记本电脑环境中使用它的需求,所以对于硬件要求,大家可以放宽心。
计算描述性数据统计
TFDV可以计算描述性统计数据,根据存在的特征和值分布的形状快速概述数据。这些统计信息有助于开发人员调查和了解他们的数据,并据此推断数据模式。
用TFDV计算统计信息:
stats = tfdv.generate_statistics_from_tfrecord(data_location=path)
可视化:
推断数据模式
所谓数据模式,就是描述数据的预期性能,它可以包括:
-
预计将出现哪些特征
-
它们的类型
-
每个样本中,一个特征有几个值
-
所有样本中,每个特征的出现几率
-
特征的预期域
简而言之,模式描述了对“正确”数据的期望,因此可被用于检测数据中的错误。但是在实践中,编写模式可能是非常繁琐的,尤其是对于具有大量特征的数据集。TFDV提供了一种基于描述性统计信息,生成旨在反映数据稳定特征的模式的方法:
#根据统计信息推断模式
schema = tfdv.infer_schema(train_stats)
#以表格格式显示内联模式
tfdv.display_schema(schema)
上图是个简单的可视化,列出了数据集中的每个特征以及它在编码模式下的主要特征。
验证新数据
给定一个模式,TFDV可以根据模式中的期望验证一组新数据。
#统计一组新数据
new_stats = tfdv.generate_statistics_from_csv(NEW_DATA)
#比较新数据如何符合模式
anomalies = tfdv.validate_statistics(new_stats, schema)
#显示内联异常
tfdv.display_anomalies(异常)
上述异常报告了新数据和模式之间的差别
验证持续添加的数据
对于数据集中不断增加的新数据,我们需要用原模式对它们进行验证。但是,在常规设置中,这个模式每个一段时间都会维护一次,它基于统计信息,而统计信息又会受新加入的数据影响。因此,之前我们推断的模式只是原始模式,它还必须要能随着时间推移不断变化。
用validate_statistics验证新添加的数据
如果想可视化不同数据集(不同日期的数据集)的统计数据,用visualize_statistics:
用Facets可视化两组数据的比较,示例:DAY1、DAY2票价对比
TFDV还可以检测连续版本训练数据之间的分布变化,这有助于对比连续版本数据集之间的统计信息,如果发现有删改/添加的情况,应及时在检查数据异常时,更新信息。此外,TFDV还能检查训练数据和服务系统观察到的数据之间的特征值/分布差异,并用Facets可视化。
Github:github.com/tensorflow/data-validation
官方博客:medium.com/tensorflow/introducing-tensorflow-data-validation-data-understanding-validation-and-monitoring-at-scale-d38e3952c2f0?linkId=56682628
官方文档:www.tensorflow.org/tfx/datavalidation/getstarted