MIT发布首个贝叶斯「数据清洗」机器人!8小时洗200万条数据

来源: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智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484544.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的开源项目——Jerry

在日常工作中,经常会碰到一些问题,比如数字金额要写成千分位形式(1234 -> 123,4.00)、要写成汉字大写形式(123 -> 壹佰贰拾叁圆),又比如要进行 cookie 读写操作,这些问题都比较…

python-列表和元组

python 数据结构 1.序列(包括元组、列表、字符串、buffer对象和xrange对象)序列中第一个元素的索引为0,第二个为1,依次类推序列的最后一个元素标记为-1,最后第二个为-2,依次类推 既可以向前计数,也可以向后计数2.列表和…

李德毅院士:希望智能驾驶成为我国继高铁之后又一张新名片

来源:汽车俱乐部Plus/ 导读 /5月19日,在WIC2021第五届世界智能大会的分论坛“智能交通峰会”上,中国工程院院士,欧亚科学院院士李德毅发表了主题演讲。以下是演讲实录。让我们掌声欢迎中国工程院院士,欧亚科学院院士&a…

windows下vagrant的安装使用

vagrant是简便虚拟机操作的一个软件,而使用虚拟机有几个好处: 1、为了开发环境与生产环境一致(很多开发环境为windows而生产环境为linux),不至于出现在开发环境正常而移步到正式生产环境时出现各种问题,而v…

python-字符串

#字符串之间的拼接,转换 #str():他会把值转换成合理形似的字符串,repr()会创建一个字符串,然后以合法的形似来表示值 #事实上,str(),int()、float()和long()是一种类型对象,并不完全是普通的函数,而repr()是…

《2021全球脑科学发展报告》发布

来源:众诚智库编辑:蒲蒲近年来,以人工智能、量子信息、集成电路、生命健康、脑科学、生物育种、空天科技、深地深海等为代表的新一轮科技革命和产业变革深入发展,正在重构全球创新版图、重塑全球经济结构。在众多极具“颠覆性”的…

正则控制可以输两位小数、负数,整数

function num(obj){obj.value obj.value.replace(/[^\d.-]/g,""); //清除"数字"和"."以外的字符obj.value obj.value.replace(/^\./g,""); //验证第一个字符是.字obj.value obj.value.replace(/^[0]/g,"");//验证第一个字…

python之模块导入

#使用命令import来导入模块 import math #floor():对浮点数取下整 print(math.floor(32.9))#int():取整 print(int(1.9))#ceil():与floor相对,取大于或等于它的最小的整数 print(math.ceil(2.7))#从模块中导入某函数,可以在程序中直接使用,而…

学者要研究真问题做真学问

来源:秦四清科学网博客链接地址:http://blog.sciencenet.cn/blog-575926-1289864.html创新难,原创更难,难于上青天。究其原因,主要在于学者缺乏对“真问题”的发现能力和凝练能力。创新的本质,是通过新的思…

cordova使用cordova-plugin-baidumaplocation插件获取定位

cordova使用cordova-plugin-baidumaplocation插件获取定位 原文:cordova使用cordova-plugin-baidumaplocation插件获取定位版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mate_ge/article/details/78913914 1、首先在百度地…

神经网络完成芯片设计仅需几小时

来源:科技日报作者:张梦然 科技日报北京6月9日电 (记者张梦然)英国《自然》杂志9日发表一项人工智能突破性成就,美国科学家团队报告机器学习工具已可以极大地加速计算机芯片设计。研究显示,该方法能给出可行的芯片设计…

如何查看Apache的连接数和当前连接数

查看Apache的连接数和当前的连接数以及IP访问次数,下面有个不错的示例,大家可以参考下,希望对大家解决问题有所帮助 查看了连接数和当前的连接数 复制代码 代码如下: netstat -ant | grep $ip:80 | wc -l netstat -ant | grep $ip:80 | grep…

python-类的基本知识

#类的基本知识 #类对象的优点:多态,封装,继承#多态 from random import choice s[A,"B","C","D"] chchoice(s)#从列表中随机选择元素,并返回 print(ch)#例:序列中的count函数为多态函数…

ElementUI实现地址自动补全文本框

新冠疫情自我检测系统网页设计开发文档 Sylvan Ding 的第一个基于 Vue.js 的项目. 本项目所提供的信息,只供参考之用,不保证信息的准确性、有效性、及时性和完整性,更多内容请查看国家卫健委网站! Explore the docs View Demo…

孙茂松:机器能创造吗?

来源:TsinghuaNLP中国人工智能学会主办的2021全球人工智能技术大会(GAITC 2021)6月5日-6日在杭州举行。6月5日晚,中央音乐学院音乐人工智能系主任李小兵教授和清华大学人工智能研究院常务副院长孙茂松教授共同主持了《当AI与艺术相…

Nginx+Fastdfs

注: 在配置时,使用非root用户配置 fdfs/fdfs 1. 集群部署 1.1. 准备 创建目录:本文档中所有内容安装到/fdfs目录 [fdfs5861be93b5b0 /]$mkdir -p /fdfs/fastdfs/data /fdfs/nginx/nginx_temp /fdfs/soft && ln -s /fdfs/fastdf…

python-函数定义

#抽象-函数定义 #内建函数callable函数可以用来判断函数是否可用 import math x1 ymath.sqrt print(callable(x)) print(callable(y))#函数定义:使用def语句 #斐波那契数列函数定义: #为函数添加注释,并使其与函数一同存储在内存,…

6小时完成,Jeff Dean领衔AI设计芯片方案登Nature,谷歌第四代TPU已用 芯快递 今天...

来源:机器之心编辑:杜伟、陈萍将芯片的布局规划看作一个深度强化学习问题,谷歌大脑团队希望用 AI 来提升芯片设计效率。基于 AI 的最新设计方案可以在数小时内完成人类设计师耗费数月才能完成的芯片布局,这将有可能引领一场新的芯…

Dockerfile命令详解

说明&#xff1a; 当打包docker镜像时&#xff0c;docker build -t <image_name>:<tag> 时&#xff0c;该命令会自动读取当前文件夹下的Dockerfile文件里的命令行&#xff0c;来进行镜像打包。 FROM 说明&#xff1a;指定基础镜像&#xff0c;且必须是第一条指令…

python-异常

#异常&#xff1a;每个异常都是一些类的实例&#xff0c;这些实例可以被引发&#xff0c;也可以进行捕捉&#xff1b; #异常的引发&#xff1a;通过raise语句可以引发异常raise Exception raise Exception("MyException!")#通过dir函数可以得到模块的内容 import mat…