前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何实现AutoML -- 先Auto每个环节

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

作者头像
用户2936994
发布2018-08-27 14:42:41
4550
发布2018-08-27 14:42:41
举报
文章被收录于专栏:祝威廉祝威廉

前言

先给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预测服务

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.05.02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • AutoFeature
  • AutoSamples
  • AutoModel
  • AutoHyperParamTuning
  • 处理流程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档