科幻剧情里,没有看过哪位大佬拿Python写代码。
眼前净是蓝汪汪的全息画面,用手指拖几下,再点几下,就算出了结果。
“我夜观星象,算出你上班时间看P站。” (误)
回到现实,虽说是没有全息图,但不写代码、拖拖拽拽就能搞机器学习,这等美事已经达成了:
MIT和布朗大学联合开发了交互式数据科学系统,名字叫Northstar。
团队说,这是“全球最快的交互式AutoML工具”;除了速度,它生成模型的成绩,也已经在DARPA D3M AutoML比赛上超越了所有对手。
作为用户,你只要加载好数据集,再把想预测的目标,拖进一个预测器。几 (十) 秒的光景,系统便会帮你找出最适合的机器学习模型。
有位不愿透露姓名的评论员说:
比用TNT还容易。
即便不是数据科学家,也可以充分利用手上的数据,来分析各种行业的现实问题。
并且,这套系统支持多人协作,不管是用同一台设备还是多台设备。电脑、平板、交互式白板……各种设备已支持。
现在,Northstar在工业界和学界都有了用户,Adobe便是其中之一。
能做些什么?
先拿医学研究人员举个栗子。
MIT在波士顿,那么就把整个波士顿的ICU患者健康信息全部投喂给Northstar。
加载完成之后,性别、年龄、BMI、有没有消化疾病、心脏衰竭等等,各种参数都会进入“属性 (Attributes) ”这一栏。
机器学习出场前
可以先观察不同属性之间的联系。
比如,通常认为男性比女性更容易发生心脏衰竭 (Heart Failure) ,就来验证一下这个规律适不适用。
把“心衰”和“性别”两个属性拖出来,然后相连,发现女性的发病人数稍低。但把两个属性拖近彼此就会看到,按照比例计算,反而是女性比男性发病率高:
另外,还可以轻松观察多类疾病共存的概率。
比如,传染病、血液疾病和代谢疾病。
除了把三者相连之外,Northstar还有一种更简洁的工具,叫frequent itemset:
它可以把三类疾病的所有可能组合,概率全部计算出来:
最容易并发的是代谢疾病和血液疾病,而代谢疾病单独存在的概率是全部可能性里最高的。
这时候,再用“年龄”属性筛选出50岁以上的患者,代谢疾病的百分数飙升到了73%。
注:发现数据里,有很多患者年龄填了零,也可以一键清除他们,只留有效部分。
数据就观察到这里。
机器学习出场了
如果要预测某个患者有没有心脏衰竭,就从算法栏里拽出一个预测器 (Predictor) 。
然后把要预测的“心脏衰竭”,拖到预测器的“目标 (Target) ”里去。
这样,预测器的右边,便会产出一系列模型,每个模型的预测准确率都会显示出来。
模型生成完毕之后,可以选择一个成绩最好的模型,打开来仔细查看:
这个准确率92.25%的方案,一共有8个步骤。
现在可以把这个模型导出为Python脚本,今后可以手动优化,也可以直接投入使用。
除此之外,还可以看到各个不同参数的权重:
其中,对预测心衰最有帮助的是一个叫“heart_ischemic”的特征。
意思是心脏缺血,常常是伴随着心脏衰竭而生。
所以下一步,就把这个特征也扔进预测器的目标里。
这样的话,再生成的模型就不依靠这个症状来预测了。
还有,可以把自己选中模型的预测结果,和Ground Truth对比观察。
像上图这样直接拖进去,就会得出假阴和假阳的情况。
选中这两部分,把它们和“年龄“摆在一起,就知道AI在哪个年龄段的预测更容易出错。
这个模型的错误率,几乎是随时间线性增长。
到这里,一个栗子就讲完了。
可问题是,AutoML找出的模型一定是有效的么?
并不,如果预测成绩看上去很迷,可能是因为属性栏里的数据集,并不是有用的预测工具。
但没关系,系统自带数据集搜索工具datamart,输入关键字,可以查找相关的数据集。
比如,输入“贫困 (Poverty) ”,就能看到美国各个县的人口数据。
有了这些数据,系统找出的贫困预测器,表现也会有所提升。
怎么做到的?
Northstar的英勇体现在三个角度,一是速度,二是生成模型的质量,三是交互能力。
团队说,这是由系统的四个部分共同决定的 (第三部分高能) 。
第一部分叫Vizdom,就是前端,人类最直观感受到的部分,像一个没有边界的画板,可以在上面自在地发挥。
之所以自在,是因为背后有个强大的数据引擎:
第二部分叫IDEA,就是这个引擎。全称“交互式数据探索加速器“,可以理解成样本管理器。
它把内存分成三份,一是结果缓存 (Result Cache) ,二是样本存储 (Sample Store) ,三是索引 (Indexes) 。
当用户开始操作,IDEA就会从各种数据源吸取数据,推测性地 (Speculatively) 执行运算,然后把结果缓存下来,支援用户后面可能下达的指令。
同时,IDEA还会把所有传入的数据,缓存到“样本存储”的位置。如果没空间了,IDEA就开始更新缓存:用水塘抽样 (Reservoir Sampling),给数据集生成一个代表性样本(Representative Sample) ,就算数据流有偏差也是后面再处理:
要避免数据流的偏差 (Bias) 带来的影响,IDEA利用了许多数据库都有的采样算子,以及这些数据的随机偏移 (Random Offsets) 。
IDEA还可能把水塘样本分成几个分层 (Stratified) 的子样本,用来过度表示 (Overrepresent) 一个分布的尾端,或者用来创建专门的索引。
它所有的决定,都要根据用户过往和当下的操作不断优化:
比如,当用户把一个新属性拖进画布,系统就会分配更多资源到这个新属性上,为用户可能发出的请求提前做好准备。
另外,随着计算的进行,IDEA还会把精确度越来越高的结果,不断传输到前端,也包括这些结果的完整性和误差分析。
这样,即便用户任意发挥,系统也能快速待命,不论数据大小,不论数据类型。
第三部分叫Alpine Meadow,重中之重。
在IDEA准备好数据之后,就是它负责选出最适合的算法,最适合的超参数。
2013年,团队曾经开发出MLbase:用一种简单的声明式方法 (Declarative Way) ,来说明ML任务是什么 (但不发出具体指令) ;还提供一个新的优化器,选出一个学习算法,并且能够动态地适应当前的任务。
只不过,MLbase不是为了和人类交互而生的,调参常常要几小时。
所以,团队在此基础上一顿操作,获得了快速有效的Alpine Meadow:
先是证明了,把基于规则的优化 (Rule-Based Optimization) 方法,和多臂老虎机、贝叶斯优化以及元学习,巧妙结合在一个系统里,能有效找到最好的ML模型。
并设计了一个自适应的选择算法,通过对比训练集和验证集的误差,早期就可以剪掉 (Prune) 一些不靠谱的pipeline。这在训练实例的样本越来越大的情况下,有助于达到更高的效率。
结果是,Alpine Meadow广泛支持各类任务,多才多艺的程度,远远超过其他AutoML系统:
并且,它在从前没见过的数据集上,有80%的情况超越了作为基线的专家系统:
下面看速度。
绿色是Alpine Meadow找出第一个方案需要的时间。在成功的数据集数量相同的情况下,用时远低于其他算法:
方案在数据集上的相对排名,依然明显超过其他算法 (越低越好) :
然后,是DARPA比赛的分数 (已Normalized) :
截至目前,它已经超越了DARPA D3M AutoML比赛上的全部对手。
虽然,Alpine Meadow单打独斗也没有问题。但在这个四部分组成的系统里,还有最后一个部分:
第四部分是QUDE,它可以监控用户的每一个交互动作,对常见的错误和问题给出警告。
这些模块合在一起,才是完整的Northstar。
美中不足,现在似乎还没有个人用户的入口。
“全MIT最聪明的人”
MIT和布朗大学组成的团队,已经在NorthStar上面耗时四年。
领队是Tim Kraska副教授,来自MIT赫赫有名的CSAIL实验室。
项目已经发射了许多篇论文,其中核心的Meadow Alpine论文,登上了SIGMOD ’19。
论文一作名叫尚泽远,也来自CSAIL,是Kraska的博士生。
少年的校园主页,域名瞩目:http://smartest.mit.edu/
下方还有一行傲娇的说明:
如果想知道谁是MIT最聪明的人,请前往https://www.shangzeyuan.com/
Alpine Meadow论文传送门:
http://sci-hub.tw/https://dl.acm.org/citation.cfm?id=3319863
NorthStar论文传送门:
http://www.vldb.org/pvldb/vol11/p2150-kraska.pdf
— 完 —
“