优化模型超参数

本文介绍如何使用 Azure 机器学习设计器中的“优化模型超参数”模块。 目标是确定机器学习模型的最佳超参数。 该模块使用不同的设置组合来生成并测试多个模型。 它将比较所有模型的指标,以获取设置组合。

术语“参数”和“超参数”可能会造成混淆。 模型的参数是在模块右窗格中设置的参数。 简单而言,此模块将对指定的参数设置执行参数扫描。 它将会习得一组最佳的超参数,而这些超参数对于每个特定的决策树、数据集或回归方法可能有所不同。 查找最佳配置的过程有时称为“优化”。

该模块支持使用以下方法来查找模型的最佳设置:集成式训练和优化。 在此方法中,你将配置一组要使用的参数。 然后,让模块迭代多个组合。 该模块将不断测量准确度,直到找到“最佳”模型。 对于大多数学习器模块,可以选择在训练过程中要更改的参数,以及要保持固定的参数。

根据优化过程的所需运行时长,你可能决定对所有组合进行穷尽测试。 或者,你可能会通过建立参数组合的网格,并测试参数网格的随机化子集,来缩短该过程的时长。

此方法将生成一个已训练的模型,可以保存该模型以供重复使用。

提示

可以执行相关的任务。 在开始优化之前,请应用特征选择,以确定信息价值最高的列或变量。

如何配置“优化模型超参数”

了解机器学习模型的最佳超参数需要大量使用管道。

使用参数扫描训练模型

本部分介绍如何执行基本的参数扫描,以使用“优化模型超参数”模块训练模型。

  1. 在设计器中,将“优化模型超参数”模块添加到管道。

  2. 将未经训练的模型连接到最左侧的输入。

    备注

    优化模型超参数 只能连接到内置机器学习算法模块,不能支持 创建 Python 模型 中内置的自定义模型。

  3. 添加要用于训练的数据集,然后将其连接到“优化模型超参数”的中间输入。

    (可选)如果有带标签的数据集,可将其连接到最右侧的输入端口(“可选的验证数据集”)。 这样,便可以在训练和优化时测量准确度。

  4. 在“优化模型超参数”的右侧面板中,为“参数扫描模式”选择值。 此选项控制参数的选择方式。

    • 整个网格 :如果选择此选项,模块将循环访问系统预定义的网格,以尝试不同的组合并识别最佳学习器。 如果你不知道最佳的参数设置是什么,并想要尝试所有可能的值组合,则此选项很有用。

    • 随机扫描 :如果选择此选项,模块将在系统定义的范围内随机选择参数值。 必须指定要让模块执行的最大运行次数。 如果你想要使用所选的指标提高模型性能,同时仍要节省计算资源,则此选项很有用。

  5. 对于“标签列”,打开列选择器以选择单个标签列。

  6. 选择运行次数:

    1. 针对随机扫描的最大运行次数 :如果选择随机扫描,则可以使用参数值的随机组合,指定要训练模型多少次。
  7. 对于“排名”,请选择用来为模型排名的单个指标。

    运行参数扫描时,模块将计算模型类型的所有适用指标,并在“扫描结果”报告中返回这些指标。 模块对回归模型和分类模型使用不同的指标。

    但是,所选的指标确定了模型的排名方式。 只有按所选指标排名最高的模型才会输出为已训练的模型用于评分。

  8. 对于“随机种子”,请输入一个数字用于启动参数扫描。

  9. 提交管道。

超参数优化的结果

训练完成时:

  • 若要查看扫描结果,可以右键单击模块,然后选择“可视化”,或者右键单击模块的左输出端口进行可视化。

    扫描结果包括应用到模型类型的所有参数扫描和准确度指标,而你选择的用于排名的指标决定了哪个模型会被视为“最佳”。

  • 若要保存已训练模型的快照,请选择“训练模型”模块右侧面板中的“输出+日志”选项卡 。 选择“注册数据集”图标将模型保存为可重用模块。

技术说明

本部分包含实现详细信息和提示。

参数扫描的工作原理

设置参数扫描时,需定义搜索范围。 搜索可以使用随机选择的有限数量的参数。 或者,可以针对定义的参数空间执行穷尽式搜索。

  • 随机扫描 :此选项使用设置的迭代次数训练模型。

    指定要迭代的值范围,模块将使用这些值的随机选择子集。 值是使用替换法选择的,这意味着,以前随机选择的数字不会从可用数字池中删除。 因此,选择任意值的机会在所有轮次中都保持相同。

  • 整个网格 :使用整个网格的选项意味着要测试每个组合。 此选项是最彻底的,但所需的时间最长。

控制训练的长度和复杂性

迭代许多的设置组合可能会很耗时,因此,模块提供多种方式来限制该过程:

  • 限制用于测试模型的迭代次数。
  • 限制参数空间。
  • 同时限制迭代次数和参数空间。

建议通过管道来处理设置,以根据特定的数据集和模型确定最有效的训练方法。

选择评估指标

测试结束时,模型将提供一份包含每个模型的准确度的报告,使你可以查看指标结果:

  • 用于所有二元分类模型的一组统一指标。
  • 准确度用于所有多类分类模型。
  • 用于回归模型的一组不同指标。

但是,在训练过程中,必须选择单个指标,用来为优化过程中生成的模型排名。 你可能发现,最佳指标根据业务问题以及误报和漏报的代价而各不相同。

用于二元分类的指标

  • “准确度”是真实结果与案例总数之比。

  • “精准度”是真实结果与正面结果之比。

  • “召回率”是所有结果中所有正确结果的分数。

  • “F 评分”是平衡精准度与召回率的指标。

  • “AUC”是一个值,表示在 x 轴上绘制误报、在 y 轴上绘制漏报时,曲线下的面积。

  • “平均对数损失”是以下两个概率分布之间的差:真实分布,以及模型中的分布。

用于回归的指标

  • “平均绝对误差”求模型中所有误差的平均值,其中,“误差”表示预测值与真实值之间的距离。 它通常缩写为 MAE

  • “均方根误差”度量误差平方的平均值,然后求该值的根。 它通常缩写为 RMSE

  • “相对绝对误差”以真实值的百分比表示误差。

  • “相对平方误差”除以预测值的总平方误差,以此规范化总平方误差。

  • “决定系数”是用于指示数据在模型中的拟合度的单个数字。 如果值为 1,则表示模型与数据完全匹配。 如果值为 0,则表示数据是随机的,或者无法拟合模型。 它通常称为 r 2R 2 或 r 平方。

不支持参数扫描的模块

在 Azure 机器学习中,几乎所有的学习器都支持使用集成式参数扫描进行交叉验证,可让你选择要通过管道处理的参数。 如果学习器不支持设置值的范围,你仍可以在交叉验证中使用它。 在这种情况下,将为扫描选择允许值的范围。

后续步骤

请参阅 Azure 机器学习的可用模块集