HoloClean

半自动数据修复框架
授权协议 Apache
开发语言 Python
所属分类 神经网络/人工智能、 机器学习/深度学习
软件类型 开源软件
地区 不详
投 递 者 公孙辰龙
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

脏数据和错误数据是数据分析工作的主要瓶颈,数据清理和修复约占数据科学家工作的60%。最近出现一个新的开源项目 HoloClean ,这是一个半自动数据修复框架,依赖于统计学习和推理来修复结构化数据中的错误。HoloClean 建立在弱监督范式的基础上,利用各种信号,包括用户定义的启发式规则(如通用数据完整性约束)和外部词典,来修复错误的数据。

HoloClean 关键特性:

  • 它是第一个整体数据清理框架,在统一的框架中结合了各种异构信号,例如完整性约束,外部知识(词典)和定量统计

  • 它是由概率推理驱动的第一个数据清理框架。用户只需提供要清理的数据集并描述高级域特定信号

  • 它可以扩展到大型真实世界的脏数据集,并执行比最先进的方法还要准确两倍的自动修复功能

检测和修复错误数据

HoloClean 可以修复结构化数据集中的各种错误,包括冲突和拼写错误的值,以及异常值和空条目。

公司,组织和研究人员收集的数据常常充满错误,错误和不完整的信息,这被称为脏数据,这些脏数据对下游应用程序来说可能是一个巨大的障碍。例如,芝加哥市出版的 Food Inspections 数据集中的一个片段: 

此数据集中的错误包括拼写错误的条目(例如,“芝加哥”拼写为“Cicago”)和相同地址的冲突邮政编码值(例如,芝加哥同一地址的“60608”与“60609”)相对应为异常值关键属性(例如,“Johnnyo's”而不是“John Veliotis Sr.”)。

HoloClean 专注于结构化数据集,如上所示。它的目标是识别和修复所有单元格数据,由于其初始观察值与其真实值 不同,而真实值可能是未知的。我们称这些错误的单元格数据。鉴于上述情况,数据清理分为两个任务:

  1. 错误检测,识别错误的单元格
  2. 数据修复,推断检测到的错误单元的真实值
数据清理是一种统计学习和推理问题。

HoloClean 将数据清理作为统计学习和推理问题。输入脏数据集的每个单元格与随机变量相关联。如果未检测到相应的单元是错误的,则该随机变量可以具有固定值,或者如果检测到相应的单元是错误的,则该随机变量可以具有未知值。HoloClean 使用具有固定值的随机变量作为训练数据来学习用于修复错误单元格数据的概率模型,错误单元格数据的随机变量具有未知值。

通过弱监督进行数据清理

在HoloClean中,用户只需要指定高级断言,捕获关于输入数据需要满足的不变量的域专业知识。无需其他监督!

如何有效地训练数据清理的概率模型?与任何其他大规模机器学习问题一样,用户无法负担起迭代具有数百万元组的数据集中的所有单元格来识别错误单元格并建议修复的算力。这便是弱监督的用武之地!

HoloClean 统一了异构弱信号,提供结构化数据正确值的证据,用以检测和修复错误。

HoloClean 利用各种微弱信号来解决错误检测和数据修复问题:

  • 在HoloClean中,用户可以指定拒绝约束(一种常规的完整性约束方法)来检测报告冲突信息的元组。例如,在 Food Inspections 数据集中,功能依赖性City,State,Address→Zip可用于识别由元组 t1 提供的信息与元组 t2 和 t3 的信息冲突。拒绝约束是捕获用户域专业知识的高级一阶逻辑规则。这些规则可以由用户指定,甚至可以自动发现。

  • 用户还可以选择使用外部数据集或词典,并指定高级规则,将可信外部数据集提供的数据与要清理的输入数据集相匹配。

  • HoloClean 使用最先进的异常值检测方法,利用定量统计数据查找其值不符合输入数据总体分布特性的单元格。异常值检测自动运行,无需用户输入。

上述所有信号用于自动生成数据清理的概率模型:

  • 拒绝约束引入了随机变量集的相关性。例如,如果元组 t1 和 t2 中单元格 Address,City 和 State 的随​​机变量具有匹配值,则 t1.Zip 和 t2.Zip 的随机变量应采用相同的值。

  • 外部数据确定不同单元格的正确值的先验。例如,在外部数据集中将地址“3465 S Morgan St,Chicago,IL”分配给邮政编码“60608”的事实提供了证据,即最初观察到的邮政编码“60609”是错误的。

  • 最后,HoloClean 使用可用的标记数据(通过上述弱信号生成)来学习输入数据的一系列定量统计(例如,对属性值对的共现统计)。定量统计用于形成对应于错误单元的随机变量的分配的先验。

总的来说,HoloClean 是一个数据清理框架,它将脏数据集,完整性约束集合以及可能的外部数据集合作为输入,并形成数据清理的概率模型。HoloClean 以通用推理引擎 DeepDive 为基础,对其模型进行学习和推理。对于每个随机变量,HoloClean 估计其最大后验分配以及其域中值的边际分布。后者可用于以低置信度识别修复并以原则方式请求额外的用户反馈。

HoloClean 实践

在HoloClean 团队的论文中,在各种真实数据集上评估 HoloClean,包括上面提供的 Food Inspections 数据集。将 HoloClean 与各种最先进的数据清理方法进行比较。所有现有方法都被设计成单独使用上面给出的每个信号。另一方面,由于概率模型的灵活性和可扩展性,HoloClean 可以在统一的框架中组合所有信号。

在上面的实验中,HoloClean 发现数据修复的平均精度约为 90%,并且在表现出不同类型错误的各种数据集中平均召回率高于76%。相对于最先进的方法,这使得平均 F1 改善超过2倍。

扩展概率推理

硬约束(例如,完整性约束)导致复杂且不可扩展的修复模型。

HoloClean 的主要技术挑战是对用于数据清理的概率模型进行缩放推理。众所周知,存在约束时的推断是#P-complete。这是因为在推理期间,需要考虑相关的随机变量集的所有可能的联合分配。例如,考虑下图中显示的数据集:

此例中显示的用户指定的完整性约束引入了对应于元组t1和t3的单元的四个随机变量的相关性。如果我们通过将完整性约束转换为一阶逻辑约束来简单地编码这种相关性,我们需要枚举这四个随机变量的所有可能的赋值。很容易看出,对于具有数百万元组的复杂约束和数据清理实例以及具有大域的随机变量,这种简单的方法很难进行扩展。

HoloClean 将对数据单元集的约束放宽到单个数据单元上的简单特征。这给出了仅具有独立随机变量的可扩展修复模型。

为确保可伸缩性,HoloClean 对输入数据集应用完整性约束,以识别提供冲突信息的元组,并使用完整性约束来学习与对应于这些元组的单元格相关联的随机变量的特征。HoloClean 生成的最终概率模型对应于独立随机变量投票模型,该模型确保分配给不同单元的值的局部一致性。

凭经验发现,当在观察数据集中单元格的正确值时有足够的冗余时,HoloClean的近似模型获得更准确的修复,并且在概率模型中对随机变量域的错误指定更加稳健。

下一步

  • 积极探索 HoloClean 轻松模型与其他结构化预测任务之间的联系。具体而言,关注的是由于观察数据的冗余,可以用局部一致的先验替换全局一致约束的情况。事实上,权衡约束特征一直是结构模型概率推理领域的一个开放研究领域

  • 将 HoloClean 与新的数据编程引擎 Snorkel 相结合,为用户提供指定和修改弱信号的交互方式,以构建数据清理模型。

本文翻译自 HoloClean 团队的文章

 相关资料
  • 我不知道像这样的s特性的确切名称是什么,但我将只是描述它。 我使用的是android studio,我从一个不同的项目中添加了一些java类。现在它说

  • 我正在将MWS提要API项目从Ant迁移到Maven。参见MWS馈送Maven端口。 在执行时,我总是遇到同样的错误,这对我来说毫无意义。 [错误]未能执行目标org.apache.maven.plugins:maven-javadoc-plugin:3.2.0:修复(default-cli)对项目amazon-mws-feeds-maven:执行default-cli的目标org.apache.

  • 问题内容: 是否有一个jQuery插件或JavaScript脚本自动循环遍历每个CSS悬停(在外部样式表中找到)并将其与double touchdown事件绑定在一起? 触地得分1-CSS:悬停被触发 触地得分2-点击(链接关注或表单操作) 如果还没有这样的东西,可以制作出来,怎么做(指南)? 编辑: 需要明确的是,我不是要双击。触地1与触地2一样是一个选项卡。两者之间的间隔可以少于0秒,最多3分

  • 我从头开始创建了一个rails应用程序(Rails 4.1.0 ),但是我遇到了一个我无法解决的问题。我已经安装并配置了Apache乘客模块,它运行良好。每当我尝试访问虚拟主机时,都会收到错误500: secret.yml文件包含以下配置: 即使不被推荐,我还是这样做了: 但阿帕奇日志显示: 如何修复此错误?如何访问开发环境?我的意思是如何编写代码,在浏览器中进行测试,然后部署到Heroku,或者

  • 问题内容: 我在弄清楚为什么在使用chrome而不是firefox或ie9时为什么#screen元素的边框半径消失了? 对于每个浏览器,我都有所有不同的前缀以及标准的border-radius: 保存图片的上方内容框称为#screen 屏幕css的副本粘贴: 是因为chrome无法正确处理图像的“裁剪”吗?我认为这只是一个问题,当您在圆角容器中包含实际标签时,而不是通过css将img称为背景图像时

  • 本文向大家介绍MySQL怎么恢复半个月前的数据?相关面试题,主要包含被问及MySQL怎么恢复半个月前的数据?时的应答技巧和注意事项,需要的朋友参考一下 通过整库备份+binlog进行恢复. 前提是要有定期整库备份且保存了binlog日志.