作者:Daniel Kang, Edward Gan, Peter Bailis, Tatsunori Hashimoto, and Matei Zaharia

翻译:殷之涵

校对:方星轩

本文约2800字,建议阅读8分钟

本文以作者第一人称的方式向读者介绍了在2020年8月底对非结构化数据进行具有统计保证的近似选择查询方面所开展的工作,包含查询语义及查询背后的具体算法——如何在实现统计保证的同时提升查询结果的质量。

这篇文章介绍了我们最近在对具有统计保证的近似选择查询方面所开展的工作。虽然此文章将是独立出来的,但还是欢迎参阅我们的其他博客文章,以了解其他相关工作进展和更多背景信息(第1部分)!

正如我们在第1部分中所述,随着强大的深度神经网络(DNN)和人工标记服务(我们统称为“Oracle方法”)的出现,我们可以越来越多地对非结构化数据记录(例如,视频、文本)进行自动化查询。以我们正在与斯坦福生物系研究人员的合作为例,他们已经收集了数百天的实地视频,想要发现蜂鸟的出现与实地微生物记录的匹配规律。

(图注:鸟(左)和空灌木(右)视频的绝大多数是空的(> 99%),因此出于科学目的而变得无趣。)

然而详尽地人工注释这些数据实在太昂贵了——这将花费数十万美元, 因此我们的合伙人不得不做出权衡:通过近似选择(approximate selection)来找到80%的包含蜂鸟的视频帧(即80%的召回率)即可。在执行此类查询时,对科学分析的一项关键要求是实现召回的统计保证,即“在执行查询时,所得记录集将在100次中的95次里具有80%的召回率。” 这些统计保证是进行科学分析所必需的,就像我们在以往的相关工作(详见http://blinkdb.org/)中所做的那样。

先前的工作(包括我们的工作,请参阅我们关于NoScope的博客文章:https://dawn.cs.stanford.edu/2017/06/22/noscope/)旨在通过使用代理模型来加速这些查询,这些模型是“Oracle方法”的廉价近似值,但并不能达到统计保证,下面我们将对此进行说明。为了说明基于代理模型的朴素算法(Naive)无法获得统计上的查询准确性保证,我们在下方展示了在ImageNet数据集上运行100次蜂鸟查询的精度,此时目标精度为90%。正如我们在箱线图中所看到的那样,基于代理模型的朴素算法在过半情况下都无法达到目标精度,甚至出现了实际上返回的精度低至20%的情况,远低于目标值(90%)。

(图注:在ImageNet数据集中查找蜂鸟的朴素算法和SUPG算法。如图,朴素算法在过半情况下都无法达到目标精度。)

先前的工作使用代理模型来生成代理分数,分数代表的是给定数据记录满足oracle谓词(oracle predicate,即通过sql中的where语句得到的满足某些条件的记录,例如“包含蜂鸟”就可以作为对帧查询时的条件)的未经校准的可能性。虽然朴素算法无法获得统计保证,但是我们可以对其做一些修正来达到保证。

在本文的其余部分,我们将介绍带有保证的近似选择查询的查询语义、如何实现这些保证以及如何提高查询结果的质量。

查询语法和语义

为了让用户指定带有统计保证的近似选择(SUPG查询),我们提供了继承自SQL的语法。下面显示的是蜂鸟查询的示例:

1. SELECT frame FROM bush_video
2. WHERE HUMMINGBIRD_PRESET(frame)
3. ORACLE LIMIT 10,000
4. USING MASK_RCNN(frame)
5. RECALL TARGET 90%
6. WITH PROBABILITY 95%

我们的工作与先前的工作的关键不同之处在于我们提高了成功的可能性。直观地讲,95%的成功概率意味着:如果某一查询被执行100次,我们希望至少在95次中能够达到召回率/精度的目标值。这样的保证与其他系统为近似聚合查询(approximate aggregation queries)所提供的保证相似,但是对于近似选择查询(approximate selection queries)来说却是新的保证。

最后,为了避免琐碎的解决方案(例如,返回整个数据集确实能够实现100%的召回率,但这样做显然有悖我们的初衷),我们指定查询应尽可能精确地返回(即刚好保证90%的召回率,以上方的蜂鸟查询代码为例)。

实现统计保证

如前文所示,使用代理分数的朴素算法无法获得查询准确性的统计保证。为了解其原因,我们将概述朴素算法背后的算法过程,并说明问题出在哪里。

所有算法(包括先前的工作和我们的工作)都遵循相同的基本过程:

1. 对所有数据记录都分别生成代理分数

2. 在记录中对oracle谓词(oracle predicate,即通过sql中的where语句得到的满足某些制定条件的记录,下同)进行采样

3. 使用这些样本为代理分数设置阈值

4. 返回代理得分高于所选阈值的所有记录

要了解朴素算法为什么无法实现统计保证,让我们通过一个以60%为目标召回率的典型示例来说明。在下图中,蓝色记录代表与oracle谓词匹配的记录(即该帧包含蜂鸟),红色记录代表与oracle谓词不匹配的记录(即该帧不包含蜂鸟),这些记录是按代理分数进行排序的。在这个示例中,我们显示了一组记录,这些记录是被均匀随机抽样的,样本中的经验阈值为60%(即样本内召回率为60%时的代理分数阈值所在之处,在下图中由虚线表示)。显而易见的是,样本中的60%并不能反映整个数据集中的60%!这个例子具有更普遍的含义:朴素算法并不考虑采样中的随机性,并且很有可能失败。

(图注:使用样本内经验阈值朴素算法示例。这些朴素算法并未对抽样偏差进行校正,因此有较大概率无法实现目标。)

为了校正采样中的随机性,我们使用置信区间来限制失败的可能性。回到之前的相同示例,我们将用如下图所示的方式在样本中绘制经验阈值。但是,这一次我们不只是简单地返回超过该经验阈值的记录,而是在整个数据集中构建一个60%召回率的置信区间。

(图注:使用同样朴素算法的示例,但通过置信区间对经验阈值进行了校正。该算法实现了统计保证,但仍然可能返回质量较低的查询结果。)

为了把我们的算法(SUPG查询,即带有统计保证的近似选择)与朴素算法进行对比,我们在下图中展示了当尝试在四个真实数据集上实现90%的召回率时,运行100次的实际召回率。如我们所见,朴素算法始终失败,而SUPG算法成功的可能性很高。

(图注:当尝试实现90%召回率时SUPG算法和朴素算法100次运行的召回率表现。SUPG算法有较高概率成功,而朴素算法却正相反。)

实现高质量查询结果

我们在上文中已得知,使用具有置信区间的均匀采样会产生有效但质量较差的查询结果。为了提高查询质量,我们利用代理模型在为我们提供有关查询信息方面的关键属性:理想状态下,较高的代理分数表示该记录与oracle谓词相匹配可能性更高。

为了利用这一属性,我们使用“重要性采样”,即对代理得分较高的记录进行更多的采样。但是,我们的设置与标准重要性采样方法不同,因为真实数量(oracle谓词结果)是二项的(例如有或无蜂鸟出现)。为了说明不同的假设,我们提出了一种新的重要性加权方法——我们基于代理分数的平方根进行成比例的采样。至于为何这种加权方法是最佳设置,我们在这里不过多展开讨论,但是可以参阅这篇论文(https://ddkang.github.io/papers/2020/supg-paper.pdf)以获取详细信息!

(图注:使用同样重要性采样算法并通过置信区间对经验阈值进行了校正的示例。重要性采样在实现统计保证的同时提升了查询结果质量。)

为了说明重要性采样算法的实用性,我们展示了四个真实数据集上的召回目标查询的查询精度。我们改变召回率目标并显示相应的精度——高精度意味着表现更好。如我们所见,重要性采样算法在数据集中的表现优于均匀采样算法。

(图注:基于特定召回目标的SUPG算法和均匀采样算法在4个真实数据集上的精度表现(精度更高意味着表现更好)。重要性采样的表现在各数据集上都要更好。)

结论

在本篇博客中,我们描述了具有统计保证的近似选择查询的查询语义,以及能够高效执行此类查询的算法。我们还将在本周的VLDB 2020上介绍我们的工作——欢迎来听听我们的演讲!我们的代码都是开源的,并且非常有兴趣了解相关的新应用;如果您想进一步讨论,请通过supg@cs.stanford.edu与联系我们。

原文标题:

Accelerating Queries over Unstructured Data with ML, Part 2 (Approximate Selection Queries with Statistical Guarantees)

原文链接:

https://dawn.cs.stanford.edu/2020/08/31/supg/

编辑:王菁

校对:林亦霖

译者简介

殷之涵(Jane),研究生毕业于康奈尔大学生物统计与数据科学专业,本科毕业于普渡大学精算与应用统计专业。目前在腾讯担任数据科学家,主要负责腾讯视频用户增长&市场营销数据科学方面的工作;此前在京东任数据分析师一年半,负责通过指标体系搭建、统计分析、数据挖掘和机器学习建模来驱动决策、制定并落地亿级用户的精细化运营策略。对数据科学充满兴趣和热情,希望通过多年勤恳深耕成长为真正的领域专家。

翻译组招募信息

工作内容:需要一颗细致的心,将选取好的外文文章翻译成流畅的中文。如果你是数据科学/统计学/计算机类的留学生,或在海外从事相关工作,或对自己外语水平有信心的朋友欢迎加入翻译小组。

你能得到:定期的翻译培训提高志愿者的翻译水平,提高对于数据科学前沿的认知,海外的朋友可以和国内技术应用发展保持联系,THU数据派产学研的背景为志愿者带来好的发展机遇。

其他福利:来自于名企的数据科学工作者,北大清华以及海外等名校学生他们都将成为你在翻译小组的伙伴。

点击文末“阅读原文”加入数据派团队~

转载须知

如需转载,请在开篇显著位置注明作者和出处(转自:数据派ID:DatapiTHU),并在文章结尾放置数据派醒目二维码。有原创标识文章,请发送【文章名称-待授权公众号名称及ID】至联系邮箱,申请白名单授权并按要求编辑。

发布后请将链接反馈至联系邮箱(见下方)。未经许可的转载以及改编者,我们将依法追究其法律责任。

点击“阅读原文”拥抱组织

独家 | 使用机器学习对非结构化数据加速查询-第2部分(具有统计保证的近似选择查询)...相关推荐

  1. 独家 | 使用机器学习加速对非结构化数据的查询-第1部分(使用BlazeIt加速聚合和限制查询)...

    作者:Daniel Daniel,Peter Bailis和Matei Zaharia 翻译:Kay 校对:王雨桐 本文约2800字,建议阅读13分钟. 本文为大家介绍了针对非结构化数据如何加快聚合和 ...

  2. 非结构化数据怎么治理?

    编 辑:彭文华 来 源:大数据架构师 彭友们好,我是老彭.最近遇到几个项目,都跟非结构化数据脱不开关系. 老彭刚毕业的时候,做的是数据库的活儿,那都是结构化数据.后来有了hadoop技术,可以用来处理 ...

  3. 独家 | 处理非结构化数据的7个实例(附链接)

    作者:  PALAK11 翻译:王闯 (Chuck) 校对:陈 丹 本文约1700字,建议阅读5分钟 本文作者根据个人过往工作经验,整理出了处理非结构化数据的7个实例,希望能对读者处理相关实际问题有所 ...

  4. 福利 |《非结构化数据分析》书评:探索非结构化数据的魅力

    文末有数据派独家福利哦 在过去的几年里,围绕大数据.物联网和人工智能等信息的宣传铺天盖地.这些新闻源源不断地向我们展示了技术和分析工作如何改变我们的生活和商业模式.将大数据和物联网转化为有实际价值的信 ...

  5. 【华为云技术分享】Spark如何与深度学习框架协作,处理非结构化数据

    随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...

  6. 知识抽取学习笔记:面向非结构化数据的抽取

    1概念 知识抽取,即从不同来源.不同结构的数据中进行知识提取,形成知识(结构化数据)存入到知识图谱.大体的任务分类与对应技术如下图所示: 2知识抽取的技术与难点 从结构化数据库中获取知识:D2R 难点 ...

  7. 技术20期:结构化数据与非结构化数据:有什么区别?

    查看结构化和非结构化数据.它们的主要区别以及哪种形式最能满足您的业务需求. 并非所有数据都是平等的.有些数据是结构化的,但大部分是非结构化的.结构化和非结构化数据以不同的方式获取.收集和扩展,并且每一 ...

  8. 非结构化数据怎么存?

    IDC 预测,2018年到2025年间,全球产生的数据量将会从33 ZB增长到175 ZB,其中超过80%为非结构化数据,并且每年将以指数级趋势递增. 数字化汪洋之上,海雾弥漫,遮天蔽日,组织如何冲破 ...

  9. 夺权!非结构化数据制霸大数据

    结构化 数据与非结构化数据之争已经见到了眉目,而我国的 大数据 产业也正处在由结构化为主到非结构化为主的过程中.那么非结构化数据为何可以取代结构化数据制霸大数据市场呢? 一朝天子一朝臣,一个时代一尊神 ...

最新文章

  1. Java项目:车租赁管理系统(java+Gui+文档)
  2. HDU 1556 Color the ball
  3. 图像处理之应用篇-大米计数续
  4. mongodb的delete_MongoDB 删除数据库
  5. boost::multiprecision模块将 std::numeric_limits 用作 multiprecision.qbk 上的多精度文档片段的示例
  6. VTK:Utilities之ObserveError
  7. 在Apache上配置防盗链功能和隐藏版本号
  8. 冷热rx-java可观察
  9. Django开发微信公众平台
  10. 洛谷——P1548 [NOIP1997 普及组] 棋盘问题
  11. 计算机程序设计通讯录,(定稿)通讯录c语言程序设计(喜欢就下吧)
  12. linux 模拟windows7,Linux游戏:原生、Wine模拟对比Windows 7
  13. python归一化 增大差异_python-面向对象进阶
  14. 跟我一起学python3(一)
  15. 一个霸占程序员休息时间的 APP
  16. Springboot+MySQL实现多数据源的信息导入
  17. 帮助开发者和网站设计师更方便配色的在线配色工具 - PLTTS
  18. springboot2稳定版本_SpringBoot2.2.x 版本CPU增高BUG分析|chu
  19. 2021年焊工(初级)考试技巧及焊工(初级)作业考试题库
  20. 什么是产品经理 | 文末赠书

热门文章

  1. python-函数式编程
  2. SSH框架搭建问题总结
  3. HTTP详解(1)-工作原理【转】
  4. Android开源项目源码下载(不断更新中)
  5. java 3维_java 二维/三维/多维数组
  6. linux nohup 英文全称 no hang up(
  7. jar打包命令-指定主类一次搞定!
  8. 智源社区票选2021 AI十大进展出炉!
  9. 张宏江:开源时代如何解决人的思维孤岛
  10. AI Debate2 | 李飞飞提「AI北极星」,卡尼曼指「系统 1」理解有误