优化模型超参数
本文介绍如何在 Azure 机器学习设计器中使用“优化模型超参数”组件。 目标是确定机器学习模型的最佳超参数。 该组件使用不同的设置组合来生成和测试多个模型。 它将比较所有模型的指标,以获取设置组合。
术语“参数”和“超参数”可能会造成混淆。 模型的参数是在组件右侧窗格中设置的内容。 简单而言,此组件将对指定的参数设置执行参数扫描。 它将会习得一组最佳的超参数,而这些超参数对于每个特定的决策树、数据集或回归方法可能有所不同。 查找最佳配置的过程有时称为“优化”。
该组件支持使用以下方法来查找模型的最佳设置:集成训练和优化。在此方法中,你可以配置一组要使用的参数。 然后让组件循环访问多个组合。 该组件将测量准确度,直到找到“最佳”模型。 对于大多数学习器组件,可以选择在训练过程中应更改哪些参数,应保持固定哪些参数。
根据优化过程的所需运行时长,你可能决定对所有组合进行穷尽测试。 或者,你可能会通过建立参数组合的网格,并测试参数网格的随机化子集,来缩短该过程的时长。
此方法将生成一个已训练的模型,可以保存该模型以供重复使用。
提示
可以执行相关的任务。 在开始优化之前,请应用特征选择,以确定信息价值最高的列或变量。
如何配置“优化模型超参数”
了解机器学习模型的最佳超参数需要大量使用管道。
使用参数扫描训练模型
本部分介绍如何执行基本的参数扫描,以使用“优化模型超参数”组件训练模型。
在设计器中,将“优化模型超参数”组件添加到管道。
将未经训练的模型连接到最左侧的输入。
注意
“优化模型超参数”只能连接到内置的机器学习算法组件,不支持“创建 Python 模型”中生成的自定义模型 。
添加要用于训练的数据集,然后将其连接到“优化模型超参数”的中间输入。
(可选)如果有带标签的数据集,可将其连接到最右侧的输入端口(“可选的验证数据集”)。 这样,便可以在训练和优化时测量准确度。
在“优化模型超参数”的右侧面板中,为“参数扫描模式”选择值。 此选项控制参数的选择方式。
整个网格:如果选择此选项,该组件将循环扫描系统预定义的网格,以尝试不同的组合并识别最佳学习器。 如果你不知道最佳的参数设置是什么,并想要尝试所有可能的值组合,则此选项很有用。
随机扫描:如果选择此选项,该组件将在系统定义的范围内随机选择参数值。 必须指定你希望该组件执行的最大运行数。 如果你想要使用所选的指标提高模型性能,同时仍要节省计算资源,则此选项很有用。
对于“标签列”,打开列选择器以选择单个标签列。
选择运行次数:
- 针对随机扫描的最大运行次数:如果选择随机扫描,则可以使用参数值的随机组合,指定要训练模型多少次。
对于“排名”,请选择用来为模型排名的单个指标。
运行参数扫描时,该组件将计算模型类型的所有适用指标,并在“扫描结果”报告中返回这些指标。 该组件对回归模型和分类模型使用不同的指标。
但是,所选的指标确定了模型的排名方式。 只有按所选指标排名最高的模型才会输出为已训练的模型用于评分。
对于“随机种子”,请输入一个整数作为伪随机数生成器状态,用于在预定义范围内随机选择参数值。 仅当“参数扫描模式”为“随机扫描”时,此参数才有效 。
提交管道。
超参数优化的结果
训练完成时:
若要查看扫描结果,可以右键单击该组件并选择“可视化”,或者右键单击该组件的左侧输出端口以进行可视化。
扫描结果包括应用到模型类型的所有参数扫描和准确度指标,而你选择的用于排名的指标决定了哪个模型会被视为“最佳”。
若要保存已训练模型的快照,请选择“训练模型”组件右侧面板中的“输出+日志”选项卡 。 选择“注册数据集”图标以将模型保存为可重用组件。
技术说明
本部分包含实现详细信息和提示。
参数扫描的工作原理
设置参数扫描时,需定义搜索范围。 搜索可以使用随机选择的有限数量的参数。 或者,可以针对定义的参数空间执行穷尽式搜索。
随机扫描:此选项使用设置的迭代次数训练模型。
可以指定要循环访问的值的范围,该组件将使用这些值的随机选择子集。 值是使用替换法选择的,这意味着,以前随机选择的数字不会从可用数字池中删除。 因此,选择任意值的机会在所有轮次中都保持相同。
整个网格:使用整个网格的选项意味着要测试每个组合。 此选项是最彻底的,但所需的时间最长。
控制训练的长度和复杂性
循环访问多种设置组合可能很耗时,因此该组件提供了多种方式来约束该过程:
- 限制用于测试模型的迭代次数。
- 限制参数空间。
- 同时限制迭代次数和参数空间。
建议通过管道来处理设置,以根据特定的数据集和模型确定最有效的训练方法。
选择评估指标
测试结束时,模型将提供一份包含每个模型的准确度的报告,使你可以查看指标结果:
- 用于所有二元分类模型的一组统一指标。
- 准确度用于所有多类分类模型。
- 用于回归模型的一组不同指标。
但是,在训练过程中,必须选择单个指标,用来为优化过程中生成的模型排名。 你可能发现,最佳指标根据业务问题以及误报和漏报的代价而各不相同。
用于二元分类的指标
“准确度”是真实结果与案例总数之比。
“精准度”是真实结果与正面结果之比。
“召回率”是所有结果中所有正确结果的分数。
“F 评分”是平衡精准度与召回率的指标。
“AUC”是一个值,表示在 x 轴上绘制误报、在 y 轴上绘制漏报时,曲线下的面积。
“平均对数损失”是以下两个概率分布之间的差:真实分布,以及模型中的分布。
用于回归的指标
“平均绝对误差”求模型中所有误差的平均值,其中,“误差”表示预测值与真实值之间的距离。 它通常缩写为 MAE。
“均方根误差”度量误差平方的平均值,然后求该值的根。 它通常缩写为 RMSE。
“相对绝对误差”以真实值的百分比表示误差。
“相对平方误差”除以预测值的总平方误差,以此规范化总平方误差。
“决定系数”是用于指示数据在模型中的拟合度的单个数字。 如果值为 1,则表示模型与数据完全匹配。 如果值为 0,则表示数据是随机的,或者无法拟合模型。 它通常称为 r2 、R2 或 r 平方。
不支持参数扫描的组件
在 Azure 机器学习中,几乎所有的学习器都支持使用集成式参数扫描进行交叉验证,可让你选择要通过管道处理的参数。 如果学习器不支持设置值的范围,你仍可以在交叉验证中使用它。 在这种情况下,将为扫描选择允许值的范围。
后续步骤
请参阅 Azure 机器学习可用的组件集。