来源:GitHub和数据派THU
编辑:王菁
校对:林亦霖
脏数据可以说是所有AI从业者、数据分析师、数据科学家的噩梦。
好消息来了!
麻省理工学院的研究人员最近带来了一种全新的系统PClean,能够自动地清洗脏数据,如错误、值缺失、拼写错误和值不一致。
并且还能够根据概率统计出常识知识来推断信息。
这个名为 PClean 的系统是概率计算项目(Probabilistic Computing Project)研究人员编写的针对特定领域的概率编程语言,旨在简化人工智能应用程序的开发并实现自动化,例如时间序列和数据库进行建模)。
根据Anaconda和Figure Eight所做的调查,清洗数据可能会占用数据科学家四分之一的时间。如何将这个任务自动化,一直以来都是一个具有挑战性的任务。因为不同的数据集需要不同类型、不同层次的清理,而且清晰过程经常需要依赖常识来对世界上的物体进行判断,例如一个城市表中,需要判断哪些值不属于这列。
PClean 为这类判断提供了一个通用的常识模型,可以根据特定的数据库和错误类型进行定制化操作。
PClean 使用基于知识的方法来自动化数据清洗的过程: 即用户在定义数据的时候,已经隐含包括了数据库的背景知识以及可能出现的各种问题。
例如,有一个场景,当清理公寓列表数据库中的国家名称的时候,如果有人说他们住在比佛利山庄,但是没有留下任何其他信息怎么办?虽然在加州有著名的比弗利山庄,但在佛罗里达州、密苏里州和德克萨斯州也有一个,而且在巴尔的摩有一个被称为比弗利山庄的社区。你怎么知道这个人住在哪里?这就是 PClean 这门脚本语言创造的初衷。
用户可以向 PClean 提供有关域以及数据可能如何损坏的背景知识。PClean 通过常识性概率推理将这些知识结合起来得出答案。
例如,如果对租金类的常识有更多的了解,PClean 就能推断正确的比弗利山是在加利福尼亚,因为被调查者居住的地方的租金成本很高。
PClean 拉近人机之间距离
这篇论文的第一作者是MIT电子工程和计算机科学系(EECS)的博士生Alex Lew,合著者还包括 EECS 的博士生 Monica Agrawal、 EECS 的副教授 David Sontag 和脑与认知科学系的首席研究科学家 Vikash k. Mansinghka。
他们认为PClean 提供了一种从计算机中检索常识的一种方法,就像人们寻求彼此帮助的方式一样。
当你向朋友寻求帮助时通常比向电脑寻求帮助要容易。这是因为在大多数编程语言中,程序员必须给出一步一步的明确指令,这种指令不能假定计算机具有任何关于世界或任务的上下文,甚至不能假定计算机具有常识推理能力。
但对于人类,可以假设所有聊天的双方有共同的常识。
PClean可以让我告诉计算机我所知道的问题,编码的背景知识就像我向一个帮助我清理数据的人解释的那样。我还可以给出 PClean 我已经发现的快速解决问题的技巧。
Hanna Pasula和其他来自加州大学伯克利分校Stuart Russell实验室的研究人员在2003年的一篇论文中提出,基于陈述性、生成性知识的概率性数据清洗可能比机器学习提供更高的准确性。
加州大学伯克利分校(UC Berkeley)计算机科学教授Russell表示,在现实世界中,确保数据质量是一个巨大的问题,几乎所有现有的解决方案都是临时性的、昂贵的,而且容易出错。
共同作者 Agrawal也自吹自擂,PClean 是第一个可扩展的、经过良好设计的、基于生成式数据建模的通用解决方案,这肯定是正确的方向,结果不言自明。现有的数据清理方法在表达能力方面受到更多的限制,这可能更加用户友好,但是代价是限制性太强。此外,我们发现 PClean 可以扩展到非常大的数据集。
基于概率编程的最新进展,麻省理工学院概率计算项目建立的一个新的人工智能编程模型,使得应用人类知识的现实模型来解释数据变得更加容易。
PClean对于数据的修复基于贝叶斯推理,这种方法结合了先验概率(给定的手头数据)和后验概率,能够对填补的数据给出一个概率值。
做出这种不确定的决策的能力是概率编程的核心——由数据集告诉计算机它可能会看到什么样的东西,并让计算机自动使用这种能力以便找出可能正确的答案。
PClean 是第一个贝叶斯数据清洗系统,它可以结合领域专业知识和常识推理,自动清洗数百万条记录的数据库,主要包括了三个创新:
首先,PClean 的脚本语言可以让用户对他们所了解的常识信息的进行编码。这就产生了更准确的模型,即使对于复杂的数据库也是如此。
其次,PClean 的推断算法使用了一种两阶段的方法,基于一次处理一条记录的方式来对如何清理记录做出明智的猜测,然后再次调用其判断函数来修复错误。这将产生稳健、准确的推断结果。
第三,PClean 提供了一个自定义编译器,用于生成快速推理代码。这使得 PClean 能够以比多种相似方法更快的速度在万条记录的数据库上运行。
PClean 用户可以向 PClean 提示如何更有效地推理他们的数据库,并调整其性能ーー这与以前的数据清理概率编程方法不同,后者主要依赖于通用推理算法,而这些算法往往过于缓慢或不准确。
与所有概率程序一样,该工具工作所需的代码行数比其他最先进的选项少得多: PClean 程序只需要大约50行代码就可以在准确性和运行时间方面超过基准测试。相比之下,一个简单的贪吃蛇游戏需要100行代码,而《我的世界》则需要超过100万行的代码。
在他们刚刚在2021年Society for Artificial Intelligence and Statistics上发表的论文中,作者们展示了 PClean 通过使用 PClean 来检测错误和估算220万行医疗保险医生比较国家数据集中的缺失值来扩展包含数百万记录的数据集的能力。运行了7个半小时后,PClean 发现了8000多个错误。然后,作者通过手工验证(通过在医院网站和医生 LinkedIn 页面上的搜索) ,他们中超过96% 的人认为,PClean 提出的修正方法是正确的。
因为 PClean 是基于贝叶斯概率的,它也可以给出校准的不确定性的估计。“它可以维持多种假设ーー给你分级判断,而不仅仅是是/否的回答。这可以建立信任,并帮助用户在必要时覆盖 PClean。例如,你可以看到一个判断,其中 PClean 是不确定的,并告诉它正确的答案。然后,它可以根据你的反馈更新其余的判断。
这种将人类判断与机器判断相互交织的互动过程具有很多潜在价值。我们认为,PClean 是一种新型人工智能系统的早期例子,它可以告诉人们更多的人们所知道的信息,在不确定的时候报告,以更有用的、类似人类的方式推理和与人交流。
DeepMind 的资深研究科学家David Pfau在一条推文中指出,PClean 满足了一种商业需求: 考虑到绝大多数商业数据不是狗的图片,而是关系数据库和电子表格中的条目,像这样的事情还没有像深度学习那样成功,真是个奇迹。
利益、风险和监管
PClean 使得将混乱、不一致的数据库连接到干净的记录中变得更容易,而不需要像目前以数据为中心的公司那样,在人力和软件系统上进行大规模投资。
这有潜在的社会利益,但也有风险,其中包括,通过将来自多个公共来源的不完整信息联合起来,PClean 可能会让侵犯人们隐私的成本更低、更容易,甚至可能去匿名化。
我们最终需要更细致的数据、更强大的人工智能和隐私监管,以减轻这些危害,与机器学习方法相比,PClean 可能允许更细粒度的监管控制。
例如,PClean 不仅可以告诉我们它合并了两个指向同一个人的记录,还可以告诉我们它为什么这样做,我可以自己判断我是否同意。我甚至可以告诉 PClean 只考虑合并两个条目的某些原因。
不幸的是,无论数据集被如何公平地清理,隐私问题依然存在。
有些人希望利用 PClean 改进新闻和人道主义应用的数据质量,例如反腐败监测和整理提交给州选举委员会的捐助者记录。阿格拉瓦尔说,她希望 PClean 能腾出数据科学家的时间,专注于他们关心的问题,而不是清洗数据。
参考资料:
https://github.com/probcomp/PClean
http://proceedings.mlr.press/v130/lew21a/lew21a.pdf
未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。
如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”