模型训练
AutoML
AutoML(VegaAutoML)是以华为诺亚实验室VegaAutoML为原型开发的SDK,便于开发者使用和开发AI模型。AutoML采用业界经典的AutoML框架,主要包括数据预处理、特征处理、算法模型、超参优化、集成学习五个模块。其中,超参优化模块是对数据预处理、特征处理、算法模型构成的pipeline进行超参寻优。AutoML框架图如图1所示。
下面以系统预置的样例数据为例,进行AutoML操作演示。
- 单击如所示的图标,运行“Import sdk”内容。
图2 导入SDK
- 单击“Import sdk”右侧的图标,新增cell。
输入如下代码:
from naie.datasets import samples samples.load_dataset("higgs", "higgs_train_10k") samples.load_dataset("higgs", "higgs_test_5k")
- 单击新增cell左侧的图标,加载两份higgs数据集分别作为训练集和测试集,如图3所示。
- 单击界面右上角的图标,选择“数据处理 > 数据集 > 加载数据”。
新增“加载数据”内容。设置如下参数取值,其余参数保持默认值即可。
- 数据集:从下拉框中选择“higgs”。
- 数据集实例:从下拉框中选择“higgs_train_10k”。
- 数据引用变量名:方便后面通过此变量名称,引用当前数据,示例为“train”。
- 单击图标,运行“加载数据”代码框内容。训练集绑定成功。
- 请参考4和5操作,绑定测试集。
下述参数,对应修改为:
- 数据集实例:选择“higgs_test_5k”。
- 数据引用变量名:设置为“test”。
- 单击界面右上角的图标,选择“模型训练 > 模型训练 > AutoML”。
界面新增如图4所示的内容。
参数设置说明,如表1所示。
表1 AutoML参数说明 参数
参数说明
训练数据集
训练数据集。从下拉框中选择“train”,即4中的“数据引用变量名”。
类型
训练的模型类型。
目前支持如下类型:
- classifier:分类类型
- regressor:回归类型
- time_series_classifier:时序分类类型;如果选择此类型,默认新增两个配置参数“标识列”和“时间列”。其中“标识列”的含义为:标记哪些数据是属于同一对象的,为必填参数;“时间列”的含义为:同一个对象的数据排序。
当前样例数据用于生成分类类型的模型,请选择“classifier”。
目标列
数据的标签列。必填参数。设置为“reponse”。
最大迭代次数
AutoML任务中模型训练迭代次数上限。默认值为“5”。
优化指标
AutoML任务的模型优化指标,请根据实际情况选择。
验证数据集
模型验证数据集。
测试数据集
模型测试数据集。
被忽略的列
数据集中不需要参与模型训练的无用列。
包含的模型
模型训练使用的算法列表。
交叉验证折数
交叉检验的折数。如果不使用交叉验证方法,请将该参数置为空。
K折交叉验证的含义:将数据集等比例划分成K份,其中一份作为测试数据,其他的(K-1)份数据作为训练数据,这样算是一次实验。K折交叉验证为实验K次才算完成的一次,即保证K份数据分别做过测试数据。最后把得到的K个实验结果进行评分。
保持默认值即可。
随机种子
以一个真随机数(随机种子)作为初始条件,使用一定的算法不停迭代产生随机数。
优化方法
超参优化方法。
目前支持如下方法:
- GPEI
- GPTS
- SMAC
- SMAC-P
优化方向
超参优化的目标。
包含如下选项:
- auto
- max
- min
默认值:auto。
平均策略
计算指标的平均策略。
包含如下选项:
- auto
- macro
- micro
- weighted
是否使用增量学习
训练时是否使用增量学习,默认关闭。
是否进行集成学习
训练时是否进行集成学习,默认开启。开启后训练结果增加模型集成节点,训练结果中生成两个stacking类型的模型包。
- 单击图标,运行AutoML代码框内容。运行结果如图5所示。
AutoML模型训练过程中,会展示“AutoML过程设置”内容,用户可调整此区域的参数设置,重新选择使用的模型,或关闭特征搜索。
其中“排行榜”展示所有训练出的模型列表,支持对模型进行如下操作:
- 单击模型所在行对应“操作”列的“详情”,查看模型超参取值和模型评分结果。
- 单击模型所在行对应“操作”列的“预测”,在新增的“AutoML模型预测”内容中,选择测试数据集test,运行代码框,查看模型预测结果,如图6所示。
通常使用最优模型,配合测试数据集进行结果预测和模型评分,查看测试结果是否符合预期。
- 单击模型所在行对应“操作”列的“保存”,保存当前模型。可在左侧文件目录“特征处理工程名称/debug/output”目录下查看同名模型包文件。
超参优化
超参优化是对数据预处理、特征处理、算法模型构成的pipeline进行超参寻优。这一过程不仅需要专家经验,还会耗费大量时间。使用超参优化功能可以快速、自动、高效地找到最优模型超参,帮助用户节约时间,降低工作复杂度。
- 单击界面右上角的图标,选择“模型训练 > 模型训练 > 超参优化”。
界面新增“超参优化配置”代码框。“超参优化配置”如图7所示。
超参优化配置参数含义如表2所示。
- 单击“超参优化配置”对应的图标,运行代码框内容。
- 使用模板代码进行超参优化。
- 单击“超参优化配置”代码框下方的“使用模板代码进行超参优化”,弹出如图8所示内容。
- 从特征列中选取标签列,然后单击“使用模板代码进行超参优化”对应的图标,运行代码框内容。
- 使用py文件进行超参优化。
- 右键单击算法工程左侧目录列表空白区域,选择“New File”新增一个名为“train.py”的主函数文件,并在该文件中定义主函数。
主函数内容参考如下:
from naie.context import Context from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split def train_func(): iris = load_iris() X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target) model = RandomForestClassifier(n_estimators = Context.get("n_estimators"), max_features = Context.get("max_features")) model.fit(X_train, y_train) y_pred = model.predict(X_train) return accuracy_score(y_train, y_pred)
- 单击“超参优化配置”代码框下方的“使用py文件进行超参优化”,弹出如图9所示内容。
- 单击“使用py文件进行超参优化”对应的图标,运行代码框内容。
运行成功后,可查看“评分”、“超参”、“试验时长”以及“详情”四个超参优化结果,如图10所示。
- 单击图10的“详情”页签,该页签展示模型评分、训练耗时、超参优化参数及其取值信息,如图11所示。
- 单击其中一个模型操作列对应的“操作”,提取超参做进一步操作,如图12所示。
- 从特征列中选取标签列,然后单击“超参优化模型操作”对应的图标,运行代码框内容。
- 右键单击算法工程左侧目录列表空白区域,选择“New File”新增一个名为“train.py”的主函数文件,并在该文件中定义主函数。