非统计学家工具自动生成的模型 收集到的见解从复杂的数

创投 2020-01-07 18:47:24

麻省理工学院的研究人员希望通过为非统计学家提供自动生成分析原始数据模型的新工具,推动数据科学的民主化。

将数据科学大众化是这样一种概念,即只要提供充足的数据和用户友好的分析工具,任何人都可以进行数据科学研究,即使他几乎没有专业知识。为了支持这个想法,这个新工具获取数据集并生成复杂的统计模型,这些模型通常被专家用来分析、解释和预测数据中的基本模式。

该工具目前存在于Jupyter Notebook中,这是一个开放源代码的web框架,允许用户在浏览器中交互式地运行程序。用户只需要编写几行代码,就可以了解金融趋势、航空旅行、投票模式、疾病传播和其他趋势。

在本周的ACM SIGPLAN编程语言原理研讨会上发表的一篇论文中,研究人员展示了他们的工具可以准确地从真实世界的数据集中提取模式并做出预测,甚至在某些数据分析任务中,它的表现甚至优于人工构建的模型。

第一作者Feras Saad "15,孟"16,电气工程和计算机科学(EECS)系博士生说:“高层次的目标是让那些不是统计专家的人也能接触到数据科学。”“人们有很多数据集,我们的目标是建立一个系统,让人们自动获得模型,他们可以用这些模型来询问有关数据的问题。”

最终,这个工具解决了数据科学领域的一个瓶颈。2009年,他是大脑和认知科学(BCS)部门的一名研究员,负责概率计算项目。他表示:“人们普遍认识到,缺乏懂得如何对数据进行建模的人。”“这是政府、非营利部门和人们负担不起数据科学家的地方的问题。”

论文的其他合著者是EECS博士生Marco Cusumano-Towner;Ulrich Schaechtle, BCS博士后,从事概率计算项目;和马丁·里纳德,EECS教授,计算机科学和人工智能实验室研究员。

贝叶斯建模

这项工作使用了贝叶斯建模,这是一种统计方法,当有更多关于变量的信息可用时,它会不断更新一个变量的概率。例如,统计学家兼作家内特•西尔弗(Nate Silver)在他广受欢迎的网站FiveThirtyEight上使用了贝叶斯模型。在总统大选之前,该网站的模型根据各种民意调查以及其他经济和人口数据,初步预测其中一位候选人将获胜。这个预测就是变量。在选举日,该模型利用这些信息,对选票和其他数据进行加权,不断更新候选人获胜的可能性。

更一般地说,贝叶斯模型可用于“预测”——预测数据集中的一个未知值——并揭示数据中的模式和变量之间的关系。在他们的工作中,研究人员关注两类数据集:时间序列,即按时间顺序排列的数据点序列;和表格数据,其中每一行表示一个感兴趣的实体,每一列表示一个属性。

时间序列数据集可以用来预测未来几个月或几年的航空客流量。概率模型处理大量的历史交通数据,并生成一个时间序列图,其中绘制了未来交通模式。该模型还可以揭示与其他变量相关的周期性波动,如一年中的时间。

另一方面,用于社会学研究的表格数据集可能包含数亿到数百万行,每一行代表一个人,变量表示职业、工资、家庭位置和调查问题的答案。概率模型可以用来填补缺失的变量,比如根据职业和位置预测某人的工资,或者识别相互通知的变量,比如发现一个人的年龄和职业可以预测他们的工资。

统计学家将贝叶斯建模视为从数据中构建模型的黄金标准。但是贝叶斯建模是出了名的耗时和挑战性。统计人员首先根据他们对问题和数据的一般知识,对必要的模型结构和参数进行有根据的猜测。使用统计编程环境(如R),统计人员然后构建模型,拟合参数,检查结果,并重复该过程,直到他们在权衡模型的复杂性和模型质量的适当性能权衡中得出适当的结果。

研究人员的工具自动化了这一过程的关键部分。Mansinghka说:“我们给了一个软件系统一项工作,你可能会让一个初级统计学家或数据科学家来做。”该软件可以根据数据自动回答问题——预测预测或者告诉你结构是什么——它可以严格地做到这一点,报告不确定性的定量测量。如果我们想让数据科学变得更容易理解,这种自动化和严谨性是很重要的。”

贝叶斯合成

使用这种新方法,用户可以编写一行代码来详细描述原始数据的位置。该工具加载数据并创建多个概率性程序,每个程序代表数据的贝叶斯模型。所有这些自动生成的模型都是用特定领域的概率编程语言编写的(针对特定应用程序开发的编码语言),这些语言经过优化后可用于表示特定类型数据的贝叶斯模型。

该工具使用一种被称为“程序合成”技术的修改版本,该技术根据给定的数据和要使用的语言自动创建计算机程序。该技术基本上是反向的计算机编程:给定一组输入-输出示例,程序合成以反向的方式工作,填补空白,构建一个基于示例输入生成示例输出的算法。

该方法在两个方面不同于一般的程序合成。首先,该工具综合了表示数据贝叶斯模型的概率性程序,而传统方法生成的程序根本不模拟数据。其次,该工具可以同时合成多个程序,而传统方法一次只能生成一个程序。用户可以挑选最适合他们的应用程序的模型。

“当系统生成一个模型时,它会吐出一段用这些领域特定的概率编程语言编写的代码……人们可以理解和解释,”Mansinghka说。“例如,用户可以通过读取代码来检查像航空交通量这样的时间序列数据是否具有季节性变化——这与黑箱机器学习和统计方法不同,在黑箱机器学习和统计方法中,用户必须相信模型的预测,但不能通过读取数据来理解其结构。”

概率编程是编程语言、人工智能和统计学交叉的新兴领域。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢