38

如何实现AutoML--让机器先做出Baseline

 5 years ago
source link: http://www.jianshu.com/p/d158ed42ed75?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

我之前写过一篇 如何实现AutoML -- 先Auto每个环节 ,大致思路是让机器先自动化每一个小环节,每个环节输出唯一一个结果,这样可以极大的简化搜索空间。比如我们有三个环节,A,B,C,分别产出10,10,10种可能,为了得到全局最优,我们需要10*10*10尝试1000次完整计算。而如果每个只取一个局部最优,那么只需要计算30次,虽然最终结果可能不是最优的,但在现实中,这也是一个比较可行的方案。

让机器先做出Baseline

受TransmogrifAI 启发,我觉得可从另外一个维度去减轻算法工程师的负担,基本思路就是,机器先做出前面的工作,找出最好的特征组合和算法,然后给出详细的结果细节,这包括:

  1. 机器得到的特征工程结果
  2. 机器选取的最优算法衡量指标值,比如F1,AUC等等
  3. 机器得到的最优算法使用的使用的参数详情

这可以给工程师很大的指导,让他们一下子就知道,通过当前的数据,使用一些常见的算法,能达到一个什么样的Baseline。如果数据足够好,机器的结果可能已经让人满意,算法工程师可以直接交付出去。如果机器的结果不好,算法工程师干预下,是不是可以增加新的数据或者新的维度?另外,再次重跑的时候,是不是可以让机器去掉一些特征组合和跳过某些算法的测试。

额外:对于特征工程

以前我一直想着如何从表中获取数据,从表中抽象数据,比如这篇文章 从DataFrame自动化特征抽取的尝试 。但其实从表中能抽取的信息是非常有限的,无非就是类型,规则,统计,以及人的先验知识。TransmogrifAI给了我一个极大的启发,就是我们需要知道我们数据的本源是什么,我们应该往数据的源头再前进一步,比如到网页端去,用户选择了下拉列表,提交了文本款,点击了一个checkbox,在特定时间做了一次点击,这些才是是用户的选择,数据的本源,这些才是影响最后的结果东西,我们可以把同样的思维,迁移到App里,小程序里。

通过上面的分析,我们对特征的抽象就比较简单了,我们抽象出来的是checkbox,textarea,textinput ,datatime,email,phone number,这些可以给我们带来额外的信息,比如checkbox,一般就是枚举类型,在机器学习里该怎么处理枚举类型呢,这个就变得更自动化了。源头可以带来很多新的信息,帮助机器更好的做自动化。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK