更新时间:2021-09-18 GMT+08:00
分享

模型训练

AutoML

AutoML(VegaAutoML)是以华为诺亚实验室VegaAutoML为原型开发的SDK,便于开发者使用和开发AI模型。AutoML采用业界经典的AutoML框架,主要包括数据预处理、特征处理、算法模型、超参优化、集成学习五个模块。其中,超参优化模块是对数据预处理、特征处理、算法模型构成的pipeline进行超参寻优。AutoML框架图如图1所示。

图1 AutoML框架图

下面以系统预置的样例数据为例,进行AutoML操作演示。

  1. 单击如所示的图标,运行“Import sdk”内容。

    图2 导入SDK

  2. 单击“Import sdk”右侧的图标,新增cell。

    输入如下代码:

    from naie.datasets import samples
    samples.load_dataset("higgs", "higgs_train_10k")
    samples.load_dataset("higgs", "higgs_test_5k")

  3. 单击新增cell左侧的图标,加载两份higgs数据集分别作为训练集和测试集,如图3所示。

    图3 加载训练集

  4. 单击界面右上角的图标,选择“数据处理 > 数据集 > 加载数据”。

    新增“加载数据”内容。设置如下参数取值,其余参数保持默认值即可。

    • 数据集:从下拉框中选择“higgs”。
    • 数据集实例:从下拉框中选择“higgs_train_10k”。
    • 数据引用变量名:方便后面通过此变量名称,引用当前数据,示例为“train”。

  5. 单击图标,运行“加载数据”代码框内容。训练集绑定成功。
  6. 请参考45操作,绑定测试集。

    下述参数,对应修改为:

    • 数据集实例:选择“higgs_test_5k”。
    • 数据引用变量名:设置为“test”。

  7. 单击界面右上角的图标,选择“模型训练 > 模型训练 > AutoML”。

    界面新增如图4所示的内容。

    图4 AutoML参数设置

    参数设置说明,如表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类型的模型包。

  8. 单击图标,运行AutoML代码框内容。运行结果如图5所示。

    AutoML模型训练过程中,会展示“AutoML过程设置”内容,用户可调整此区域的参数设置,重新选择使用的模型,或关闭特征搜索。

    其中“排行榜”展示所有训练出的模型列表,支持对模型进行如下操作:

    • 单击模型所在行对应“操作”列的“详情”,查看模型超参取值和模型评分结果。
    • 单击模型所在行对应“操作”列的“预测”,在新增的“AutoML模型预测”内容中,选择测试数据集test,运行代码框,查看模型预测结果,如图6所示。

      通常使用最优模型,配合测试数据集进行结果预测和模型评分,查看测试结果是否符合预期。

    • 单击模型所在行对应“操作”列的“保存”,保存当前模型。可在左侧文件目录“特征处理工程名称/debug/output”目录下查看同名模型包文件。
    图5 AutoML运行结果
    图6 模型预测结果

超参优化

超参优化是对数据预处理、特征处理、算法模型构成的pipeline进行超参寻优。这一过程不仅需要专家经验,还会耗费大量时间。使用超参优化功能可以快速、自动、高效地找到最优模型超参,帮助用户节约时间,降低工作复杂度。

  1. 单击界面右上角的图标,选择“模型训练 > 模型训练 > 超参优化”。

    界面新增“超参优化配置”代码框。“超参优化配置”如图7所示。

    图7 超参优化配置

    超参优化配置参数含义如表2所示。

    表2 超参优化配置参数说明

    参数

    参数说明

    迭代次数

    超参优化任务的最小迭代次数。

    优化目标

    超参优化任务的目标,在训练算法中进行定义,支持“max”和“min”两个目标。

    优化方法

    超参优化方法:

    • smac
    • bayesian
    • random
    • grid

    超参名称

    超参名称,可根据算法自定义设置。

    超参类型

    超参的类型,请根据实际情况选择超参类型。

    超参范围

    超参的取值区间,请根据实际需要设置超参最小值和最大值。

    使用多进程

    超参优化过程是否启动多进程,默认开启。

  2. 单击“超参优化配置”对应的图标,运行代码框内容。
  3. 使用模板代码进行超参优化。

    1. 单击“超参优化配置”代码框下方的“使用模板代码进行超参优化”,弹出如图8所示内容。
      图8 使用模板代码进行超参优化
    2. 从特征列中选取标签列,然后单击“使用模板代码进行超参优化”对应的图标,运行代码框内容。

  4. 使用py文件进行超参优化。

    1. 右键单击算法工程左侧目录列表空白区域,选择“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)
    2. 单击“超参优化配置”代码框下方的“使用py文件进行超参优化”,弹出如图9所示内容。
      “文件”和“函数”自动回填为已定义的主函数文件名及主函数文件内定义的主函数名。
      图9 使用py文件进行超参优化
    3. 单击“使用py文件进行超参优化”对应的图标,运行代码框内容。

      运行成功后,可查看“评分”、“超参”、“试验时长”以及“详情”四个超参优化结果,如图10所示。

      图10 使用py文件的超参优化结果
    4. 单击图10的“详情”页签,该页签展示模型评分、训练耗时、超参优化参数及其取值信息,如图11所示。
      图11 使用py文件的超参优化结果详情
    5. 单击其中一个模型操作列对应的“操作”,提取超参做进一步操作,如图12所示。
      图12 超参优化模型操作
    6. 从特征列中选取标签列,然后单击“超参优化模型操作”对应的图标,运行代码框内容。

相关文档