模型自动化生成
定义内涵
模型自动化生成是对指定的经过数据预处理后的数据文件,按照预设的一定参数,自动 训练出一系列机器学习模型。通过多个模型的对比,保存效果和性能较为优秀的模型,或者 按照一定的集成学习策略,如 Stacking、Bagging 等,将多个简单模型进行集成,形成效果 更优的模型。
技术背景
目前有很多开源的 AutoML 项目已经实现了模型的自动化生成,如 H2O、Autogluon 等。 作为一个用于分布式 、可扩展机器学习的内存平台,H2O 能够与 Hadoop 和 Spark 等大数据技术无缝协作。H2O 提供了许多流行算法的实现,例如广义线性模型 (GLM)、梯度提升机 (包括 XGBoost)、随机森林、深度神经网络、堆叠集成、朴素贝叶斯、广义加性模型 (GAM)、 Cox 比例风险、K- Means、PCA、Word2Vec,以及全自动机器学习算法。通过输入一系列超 参数即可完成模型的训练,对零代码基础的用户非常友好。 033 SecXOps 关键技术 Autogluon 是亚马逊推出的一个新的开源库,开发人员可以使用该库构建包含图像、文本 或表格数据集的机器学习应用程序。使用 Autogluon,只需编写几行代码就可以利用深度学 习的力量来构建应用程序。 大部分 Automl 框架是基于超参数搜索技术,例如基于贝叶斯搜索的 hyperopt 技术等, Autogluon 则依赖融合多个无需超参数搜索的模型。例如 Stacking 方法:Autogluon 在同一 份数据上训练出多个不同类型的模型,这些模型可以是 K 均值聚类、决策树、核方法等等, 这些模型的输出进入到一个线性模型里面得到最终的输出。多层 Stacking:将多个模型输出 的数据,合并起来,再做一次 Stacking。在上面再训练多个模型,最后用一个线性模型做输出。 为了避免后面层过多拟合数据,多层 Stacking 通常配合 K 折交叉 Bagging 使用,也就是说这 里的每个模型是 K 个模型的 Bagging。它对下一层 Stacking 的输出,是指每个 Bagging 模型 对应验证集上输出的合并。 K 折交叉 Bagging 则是源于 k 折交叉验证。Bagging 是训练同类别的多个模型,他们可 能使用不同的初始权重或者数据块,最终将这些模型的输出做平均来降低模型的方差。相同 的初始参数,训练多次,对每次的误差求平均后作为这些初始参数的最终误差,可以最大化 利用数据集,同时有效避免过拟合和欠拟合现象。K 折交叉 Bagging:每一折对应不同的初 始参数,训练出多个模型,对结果求平均。
思路方案
SecXOps 对 Autogluon 在表格数据上进行操作的流程进行了封装,并在前端进行了可视 化展示。用户只需要选择训练集、验证集、测试集、标签列的名称索引以及最终模型保存策 略(如最优性能、最优质量、性能与质量平衡等)即可进行一键式的模型生成,可用于后续 的模型服务中去