美文网首页Spark和机器学习
如何实现AutoML -- 先Auto每个环节

如何实现AutoML -- 先Auto每个环节

作者: 祝威廉 | 来源:发表于2018-05-02 15:13 被阅读838次

前言

先给AutoML做个定义:用户给出可能的raw数据(但是经过标注),机器自动完成整个特征化,模型训练,模型选择/组合,超参数调优,部署上线。

最近一直在思考如何提高算法工程师效率,并且能让普通工程师也参与进来,毕竟现在来看,招聘到一个合格的算法成本颇高。经过对现实中很多场景的观察,我发现很多情况下算法训练并没有太多的数据可以用(标注的好的数据是昂贵的),那么通过算力实现AutoML则是一种可能的选择。 在StreamingPro中,特征处理都是分布式的,但是到最后模型训练,tensorflow/sklearn目前还都都是单机实现,那么大部分节点都会是空闲的,所以这个时候通过加强算力的利用率来提供AutoML程度,显然是相当划算的。

而要实现最终的AutoML,则需要先Auto每一个环节。就目前而言,如果能实现以下四个Auto,则很容易实现最终的AutoML。实现真正的,标注,丢数据即可,后面的流程完全机器完成。

AutoFeature

丢过来一张表,系统自动实现特征抽取(组合,转化)。之前已经做过一个尝试,从DataFrame自动化特征抽取的尝试,对应的代码在easy_feature

当时提出的核心四点是:类型,规则,统计,先验,通过这四个信息决定该如何生成特征。

然而这样做到的是shallow featurize,其本质只是为每个字段生成一个vector/scalar 表示形式,最后concat成一个final向量,并不具备根据训练过程或者结果调整新的表达方式的能力。具体做法就是:得到多组特征表达,然后使用同一个模型对多组表达同时进行训练,选取表达最好的一组。

AutoSamples

自动化样本处理,这包含了如下几个部分:

  1. 通过合适的方式(比如随机)切分出测试和训练集。
  2. 计算得到每个分类的分布,选择下采样或者过采样,或者将样本多的分类切分成多份,使用同一个算法进行多次训练得到多个模型。

AutoModel

多模型同时训练choose best

AutoHyperParamTuning

单一模型的多组参数组合,自动探索参数的向上或者向下走。

处理流程

显然,如果把四步暴力组合,显然搜索空间是巨大的。实际上对于AutoFeature,我们会挑选一个通常表现会比较好的算法(如随机森林/SVM),先找出特征表达的最好的形式,接着才进入AutoSamples 阶段,之后再进入AutoModel阶段。在AutoModel阶段,我们会挑选出最好的一个模型,进入AutoHyperParamTuning阶段,对每个参数增大或则减少来判断效果(当然,可以去参考一些开源的的超参数自动调优算法)

最终我们会得到一个合适的模型,理论上用户可以预先设计一个准确率,如果达到了,那么就可以发布了,否则应该发邮件通知用户,告知用户状况,并且把自己的模型和参数给用户看。

在StreamingPro里,当训练结束时,其实对应的Predict Service已经可以用了,当然,我们可能需要进行单独作为API部署,这个时候只需要让StreamingPro能够和jekins发消息即可,即可完成自动部署流程,这也得益于StreamingPro支持多种模型的部署:MLSQL如何支持部署SKLearn,Tensorflow,MLLib模型提供API预测服务

相关文章

  • 如何实现AutoML -- 先Auto每个环节

    前言 先给AutoML做个定义:用户给出可能的raw数据(但是经过标注),机器自动完成整个特征化,模型训练,模型选...

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

    前言 我之前写过一篇如何实现AutoML -- 先Auto每个环节,大致思路是让机器先自动化每一个小环节,每个环节...

  • seminar notes

    two improvements of Auto-Sklearn for AutoML approach: inc...

  • Auto Layout 实现三等分

    如何实现Auto Layout 实现三等分: Auto Layout 的本质原理Auto Layout 的本质是...

  • Auto Layout (3)

    Auto Layout 是怎么进行自动布局的,性能如何? Auto Layout 到底是如何实现自动布局的,这种布...

  • Auto-Keras与AutoML:入门指南

    摘要: 不会机器学习?不会人工智能?没关系!自动化程序来了! 在本教程中,你将学习如何使用Auto-Keras(G...

  • SpringBoot中@Autowired是如何生效的

    前言 @Autowired修饰的字段会被容器自动注入.那么Spring Boot中使如何实现这一功能呢? Auto...

  • 清单——做一个有条理的人

    问题篇 要出去旅游了,我该带哪些东西呢?先收拾什么东西好呢?要安排一个会议流程,如何安排更合理呢?如何确保每个环节...

  • 做好每个环节

    我们要做好一件事情,不仅要做好事情前期的安排,做好充分的沟通,把整体事情的时间和过程,每个细节都做好安排。 当然在...

  • 智能指针

    一、auto_ptr 可以实现解决内存泄漏的方法——RAII,使用的是auto_ptr,但是auto_ptr并不是...

网友评论

    本文标题:如何实现AutoML -- 先Auto每个环节

    本文链接:https://www.haomeiwen.com/subject/soqcrftx.html