Automl
Automl:自动对数据抽取特征并进行模型训练
大部分automl框架是基于超参数搜索技术
超参数搜索技术:在数十甚至数百个超参数的候选中选取一个比较好的参数
Autogluon则依赖于融合多个“无需超参数搜索”的模型
在相同的时间内训练多个不一样的模型 Autogluon如何融合这些模型的:
技术一:stacking
在同一个数据上独立训练出多个不一样的模型,这些模型可以是简单的KNN、树模型、和方法,或者是复杂的神经网络。 这些模型的输出进入一个线性模型,得到最终的输出,也就是对这些输出做加权和,这里的权重是通过训练得到的。 这就是调用fit函数的时候,Autogluon默认使用的模型融合方法。 通过训练打印的信息或者leaderboard来查看具体尝试了哪些模型。
技术二:k-则交叉bagging
bagging是指训练多个同类型的模型,它们可能使用不同的初始权重或者不同的数据块,最后将这些模型的输出做平均来降低预测的方差。 k-则交叉bagging源自于k-则交叉验证,这里用三则bagging来举例 首先将数据分成三块: 第一则:前两块数据做训练,最后一块做验证评估模型的好坏 第二则:第一第三块数据做训练 第三则:后两块数据做训练 在最后的预测的时候用这三个模型的输出去平均得到最终的输出。
fit(..., num_bag_folds=3)
如果在调用fit的时候指定num_bag_folds=3,对stacking中的每一个模型都做三则交叉bagging
技术三:多层stacking
原理是将各个模型的输出跟数据合并起来再做一次stacking,也就是在上面再训练多个模型,最后用一个线性模型做输出。 当然也可以这样重复多次,为了避免后面的层过度拟合数据,多层stacking通常是要配合k-则交叉bagging使用。也就是说,这里的每一个模型是k个模型的bagging,它给下一层stacking的输出是指,每个bagging模型它对应的验证集上输出的合并。
fit(..., num_stack_levels=1,
num_bag_folds=3
在Autogluon中,可以使用num_stack_levels=1,num_bag_folds=3来选择额外使用一层stacking,而且每个模型使用三则交叉bagging。 因为这两个选项都会成倍地增加计算开销,所以需要用户在计算资源充分而且需要高精度模型的时候手动指定。
结果对比
对比AutoGluon和其他Automl框架地性能: 使用种类多样的50个数据集 每个框架限制4小时运行时间 意味着在给定资源的情况下,通过尽量多的训练各种不一样的模型,并有效地将它们融合到一起,是个有效的策略
论文
Paper
文档
Documentation
代码
Code
Reference
AutoGluon背后的技术–跟李沐学AI–Bilibili
|