目录
AutoML简介
表AutoML基本原理
AutoX:一键run
AutoML简介
和AutoML结缘挺深的,读研期间在MSRA实习的时候,做了很多这方面的工作。当时基于微软的自动学习框架NNI,实现了表数据的自动机器学习。也拿了一些AutoML比赛的奖。
表automl做的事情,大概是给一个不太会机器学习的人,几张sql表,一个预测标签,自动做好一个有比较好预测能力的模型。
从学术价值和商业价值,都是十分有意义的。可以降低机器学习的成本,帮助养不起算法的企业,高效低成本落地智能化的能力。比如在第四范式这种toB企业,需要对接大量的企业客户实际预测预估任务,非常有价值。
输入几张表,设定好lable和样本id,直接一键出结果的东西,在我第四范式的朋友,恒兴把他实现了。恒兴经常玩比赛的同学可能认识,他是早年的KDD玩家,kaggle上也比较活跃,可能poteman这个id大家更熟悉一点。打比赛的人,总有一些套路。并且有个美好的追求,把这些套路尽量自动化了。
表AutoML基本原理
回到最核心的地方,automl for tabular data,区别于NAS做加架构搜索,他的发力点主要在于特征和pipeline上。
基本的原理就是定义一些预处理算子,一些特征算子,一个特征搜索空间,然后设计一个搜索的的方法进行高阶特征搜索,使用一个较为高效的特征选择算法,在一个NP难得问题上,找到比较优秀特征子集。提升模型的预测能力,并且结合参数自动调优,模型自动融合等,进一步提升效果。
恒兴是比赛资深玩家,对这些谙熟于心。这些套路是什么呢,用我赛圈朋友大顺的话来说就是,一把梭。
我用最通俗的话,把这类东西说明白。一把梭,很形象。在表这个领域上,AutoML就是聪明一点的一把梭。
比如下面这个预测任务
输入特征有 年龄,收入,消费次数,消费总额,地区,职业 预测他的信用卡还款能力
一把梭哈的意思就是把连续值,离散值归类,然后排列组合做高级特征。
用离散值在连续值上做聚合统计,比如统计一个地区的平均收入。
连续值和连续值做组合计算,比如消费总额除以消费次数。
连续值和连续值做交叉编码,比如标记地区的高中低收入人群。
一把梭哈的精髓就是,特征归类暴力排列组合,然后依靠特征筛选选出点有用的东西,取其精华,去其糟粕。
然后调调参数,模型融合一下。
这也是比赛里面,最最常见的套路。
你留心观察,上面那个过程是可以自动化的。
我把它总结成三部分:
1.特征衍生
2.特征选择
3.参数选择
4.模型融合
其中第一步和第二步,是影响预测结果一个关键的东西。
我们定义一些特征算子,类似groupby,value count,bag of words等。一个特征搜索空间,在哪些特征上可以执行哪些算子,然后定义又放回无放回生产,使用一个较为高效的特征选择算法,在一个NP难得问题上,找到最优秀特征子集。这里就这部分automl的基本原理。
其中有两个关键的问题是,第一,特征选择,怎么评估的又快又好。第二,用什么搜索方式去搜索特征空间,BFS,DFS,还是beam search,还是启发式地搜索,或者可以用强化学习。都行。
除此之外,参数调优算法研究的比较成熟了。
就不一一讲解了。
把这个pipeline串起来,你就能得到一个automl了。
AutoX:一键run
有了这个基本的想法,autox,除了在算法上做了创新探索,在用户体验上把细节做到了极致。使用起来非常简单,最近的天池比赛上的demo。
autox = AutoX(
target = 'qty',
train_name = 'train.csv',
test_name = 'test.csv',
id = ['unit'],
path = path,
time_series=True,
ts_unit='D',
time_col = 'ts',
relations = relations
)
sub = autox.get_submit_ts()
其他数据上横向效果表现也十分优秀,对比了AutoX,AutoGluon和H2o。
更具体的数据可以到github查看。
总结下这个包的特点吧
效果出色: AutoX在多个kaggle数据集上,效果显著优于其他解决方案,如上。
简单易用: AutoX的接口和sklearn类似,方便上手使用。
通用: 适用于分类和回归问题。
自动化: 无需人工干预,全自动的数据清洗、特征工程、模型调参等步骤。
灵活性: 各组件解耦合,能单独使用,对于自动机器学习效果不满意的地方,可以结合专家知识,AutoX提供灵活的接口。
最后
如果你耐心的看到这,不妨去GitHub点个star吧。
https://github.com/4paradigm/AutoX
如果你想贡献代码,加入社区群讨论,也可以加autox的作者微信poteman2021,注明包大人公众号。
另外我的知乎上也有一些零零散散的automl相关的文章和回答。
直达链接:https://www.zhihu.com/people/bao-bao-12-67
历史精彩文章:
Kaggle GM qrfaction:数据竞赛方法论看这一篇就够了