非统计学家工具自动生成可从复杂数据集中收集洞察力的模型

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

数据科学民主化的观点是,如果提供了充足的数据和用户友好的分析工具,那么几乎没有专业知识的人都可以进行数据科学。新工具支持这一想法,可以提取数据集,并生成通常由专家用于分析,解释和预测数据中基础模式的复杂统计模型。

该工具目前存在于Jupyter Notebook上,这是一个开源Web框架,允许用户在浏览器中以交互方式运行程序。用户只需编写几行代码即可发现有关金融趋势,航空旅行,投票模式,疾病传播和其他趋势等方面的见解。

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

“高级别的目标是让那些不是统计学专家的人能够获得数据科学,”第一作者Feras Saad '15,MEng '16说,他是电气工程和计算机科学系(EECS)的博士生。“人们有很多数据集,我们的目标是构建系统,让人们自动获得可用于询问有关数据的问题的模型。”

最终,该工具解决了数据科学领域的一个瓶颈,共同作者Vikash Mansinghka '05,MEng '09,博士'09,脑和认知科学系(BCS)的研究员,负责运行概率计算项目。“人们普遍认识到缺乏能够很好地建模数据的人,”他说。“这是政府,非营利部门以及人们买不起数据科学家的地方的一个问题。”

该论文的其他合着者是EECS博士生Marco Cusumano-Towner; Ulrich Schaechtle,概率计算项目的BCS博士后; 和EinS教授兼计算机科学与人工智能实验室研究员Martin Rinard。

贝叶斯建模

这项工作使用贝叶斯建模,这是一种统计方法,可以随着有关该变量的更多信息变得可用而不断更新变量的概率。例如,统计学家和作家Nate Silver在他的热门网站FiveThirtyEight中使用基于贝叶斯的模型。根据各种民意调查以及其他经济和人口统计数据,该网站的模型初步预测其中一名候选人将获胜,并在总统大选前进行。这个预测是变量。在选举日,模型使用该信息,并权衡传入的投票和其他数据,以不断更新候选人获胜的可能性。

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

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

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

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

研究人员的工具可自动完成此过程的关键部分。Mansinghka说:“我们为软件系统提供了一个初级统计学家或数据科学家的工作。” “该软件可以自动从数据中回答问题 - 预测预测或告诉您结构是什么 - 并且它可以严格执行,报告不确定性的量化指标。如果我们尝试以下,这种自动化程度和严谨性非常重要使数据科学更容易获取。“

贝叶斯合成

使用新方法,用户编写一行代码,详细说明原始数据的位置。该工具加载该数据并创建多个概率程序,每个程序代表数据的贝叶斯模型。所有这些自动生成的模型都是以特定领域的概率编程语言编写的 - 为特定应用程序开发的编码语言 - 针对特定类型的数据表示贝叶斯模型进行了优化。

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

该方法与普通程序合成有两种不同。首先,该工具合成表示数据的贝叶斯模型的概率程序,而传统方法产生根本不模拟数据的程序。其次,该工具同时合成多个程序,而传统方法一次只生成一个程序。用户可以选择最适合其应用的型号。

Mansinghka说:“当系统制作一个模型时,它会吐出一段用这些特定于领域的概率编程语言编写的代码......人们可以理解和解释。” “例如,用户可以通过阅读代码来检查航空器交通量等时间序列数据集是否具有季节性变化 - 与黑盒机器学习和统计方法不同,用户必须信任模型的预测但无法读取它要了解它的结构。“

概率编程是编程语言,人工智能和统计学交叉领域的新兴领域。今年,麻省理工学院举办了第一届概率编程国际会议,该会议有200多名与会者,其中包括微软,优步和谷歌等概率性编程方面的主要行业参与者。