TensorFlow新库TFDV:大规模理解、验证和监控你的ML数据

695 阅读3分钟
原文链接: mp.weixin.qq.com
来源:Medium 编译:Bot

编者按:在KDD 2017上,Google推出基于TensorFlow的可扩展机器学习平台TFX,主打管理数据、训练模型、模型评估和模型服务四块内容。而今天,TensorFlow宣布开源TXF的一个重要组件:“数据验证(tf.DataValidation)”,可帮助开发人员更好地认识数据,并将其用于机器学习。

ML算法及其性能一直是学术界和工业界关注的一个重点,如果输入数据有误,所有的优化工作就会付诸东流。在数据量较少的时候,理解和验证数据只是一项微不足道的任务,但是在实践中,研究人员使用的数据量往往非常庞大,这就给手动检查造成了巨大压力。因此,自动化数据分析、验证和监管是有必要的。

TFDV(数据验证)是TFX平台的一部分,它也是Google每天用来分析和验证数PB数据的技术。鉴于此前它在数据纠错上一直有不错的表现,Google相信,TFDV也可以被用户作为维持ML模型性能的一个好工具。

在设计TFDV的早期,Google就已经考虑到了在笔记本电脑环境中使用它的需求,所以对于硬件要求,大家可以放宽心。

计算描述性数据统计

TFDV可以计算描述性统计数据,根据存在的特征和值分布的形状快速概述数据。这些统计信息有助于开发人员调查和了解他们的数据,并据此推断数据模式。

用TFDV计算统计信息:

  1. stats = tfdv.generate_statistics_from_tfrecord(data_location=path)

可视化:

推断数据模式

所谓数据模式,就是描述数据的预期性能,它可以包括:

  • 预计将出现哪些特征

  • 它们的类型

  • 每个样本中,一个特征有几个值

  • 所有样本中,每个特征的出现几率

  • 特征的预期域

简而言之,模式描述了对“正确”数据的期望,因此可被用于检测数据中的错误。但是在实践中,编写模式可能是非常繁琐的,尤其是对于具有大量特征的数据集。TFDV提供了一种基于描述性统计信息,生成旨在反映数据稳定特征的模式的方法:

  1. #根据统计信息推断模式

  2. schema = tfdv.infer_schema(train_stats)

  3. #以表格格式显示内联模式

  4. tfdv.display_schema(schema)

上图是个简单的可视化,列出了数据集中的每个特征以及它在编码模式下的主要特征。

验证新数据

给定一个模式,TFDV可以根据模式中的期望验证一组新数据。

  1. #统计一组新数据

  2. new_stats = tfdv.generate_statistics_from_csv(NEW_DATA)

  3. #比较新数据如何符合模式

  4. anomalies = tfdv.validate_statistics(new_stats, schema)

  5. #显示内联异常

  6. 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