优化模型超参数
重要
对机器学习工作室(经典)的支持将于 2024 年 8 月 31 日结束。 建议在该日期之前转换到 Azure 机器学习。
从 2021 年 12 月 1 日开始,你将无法创建新的机器学习工作室(经典)资源。 在 2024 年 8 月 31 日之前,可继续使用现有的机器学习工作室(经典)资源。
ML 工作室(经典)文档即将停用,将来可能不会更新。
对模型执行参数扫描以确定最佳参数设置
类别:机器学习/训练
模块概述
本文介绍如何使用 机器学习 Studio (经典 ) 中的优化模型超参数模块来确定给定机器学习模型的最佳超参数。 该模块使用不同的设置组合生成和测试多个模型,并比较所有模型的指标,以获得设置的组合。
术语“参数”和“超参数”可能会造成混淆。 模型的参数是在“属性”窗格中设置的参数。 基本上,此模块对指定的参数设置执行参数扫描,并了解一组最佳的超参数,这些超参数可能不同于每个特定决策树、数据集或回归方法。 查找最佳配置的过程有时称为“优化”。
该模块支持两种方法来查找模型的最佳设置:
集成训练和优化:配置一组参数以使用,然后让模块对多个组合进行访问,测量准确性,直到找到"最佳"模型。 对于大多数学习器模块,可以选择在训练过程中要更改的参数,以及要保持固定的参数。
根据优化过程的运行时间,可以决定全面测试所有组合,或者可以通过建立参数组合网格并测试参数网格的随机子集来缩短该过程。
通过优化进行交叉验证:使用此选项,可将数据划分为若干折,然后在每个折叠上生成和测试模型。 此方法提供最佳的准确性,并有助于查找数据集的问题;但是,训练需要更长时间。
这两种方法都会生成一个经过训练的模型,可以保存该模型供重新使用。
相关任务
如果要生成聚类分析模型,请使用 扫描 聚类分析自动确定最佳分类数和其他参数。
在优化之前,应用功能选择以确定信息值最高的列或变量。 有关详细信息,请参阅 Feature Selection。
如何配置“优化模型超参数”
通常,了解给定机器学习模型的最佳超参数需要进行大量试验。 此模块支持初始优化过程和交叉验证来测试模型准确性:
使用参数扫描训练模型
本部分介绍如何执行基本参数扫描,该扫描使用优化模型 超 参数模块训练模型。
将 "优化模型超参数" 模块添加到工作室中的试验 (经典) 。
连接 iLearner 格式 (模型创建未训练的模型) 最左侧的输入。
将"创建训练器模式"选项设置为"参数范围",并使用范围生成器指定参数扫描中要使用的值范围。
几乎所有分类和回归模块都支持集成参数扫描。 对于不支持配置参数范围的学习器,只能测试可用的参数值。
可以手动设置一个或多个参数的值,然后扫描剩余的参数。 这可能会节省一些时间。
添加要用于训练的数据集,并连接到优化模型 超参数的中间输入。
(可选)如果有带标签的数据集,可将其连接到最右侧的输入端口(“可选的验证数据集”)。 这样,便可以在训练和优化时测量准确度。
在" 优化 模型超参数" 的"属性"窗格中,选择"参数 扫描模式"的值。 此选项控制参数的选择方式。
- 整个网格:如果选择此选项,模块将循环访问系统预定义的网格,以尝试不同的组合并识别最佳学习器。 如果不知道最佳参数设置是什么,并且想要尝试所有可能的值组合,则此选项非常有用。
还可以减小网格的大小并运行随机 网格 扫描。 研究表明,此方法生成的结果相同,但计算效率更高。
- 随机扫描:如果选择此选项,模块将在系统定义的范围内随机选择参数值。 必须指定要让模块执行的最大运行次数。 对于想要使用你选择的指标提高模型性能但仍节省计算资源的情况,此选项非常有用。
对于 "标签列",启动列选择器以选择单个标签列。
选择要在对模型进行排名 时使用的单个 指标。
运行参数扫描时,将计算模型类型的所有适用指标,并返回 在扫描结果 报告中。 单独的指标用于回归和分类模型。
但是,你选择的指标决定了如何对模型进行排名。 只有按所选指标排名最高的模型才会输出为已训练的模型用于评分。
对于 "随机种子",键入初始化参数扫描时要使用的数量。
如果要训练支持集成参数扫描的模型,还可以设置一系列种子值,以使用和访问随机种子。 这可用于避免种子选择引入的偏差。
运行试验。
超参数优化的结果
训练完成时:
若要查看最佳模型的一组准确度指标,请右键单击模块,然后依次选择“扫描结果”、“可视化”。
适用于模型类型的所有准确性指标都是输出,但为排名选择的指标决定了哪个模型被视为"最佳"模型。 仅为排名最顶层的模型生成指标。
若要查看为"最佳"模型派生的设置,请右键单击模块,选择 "训练的最佳模型",然后单击"可视化 "。 报表包括输入列的参数设置和特征权重。
若要在其他试验中使用该模型进行评分,而无需重复优化过程,请右键单击模型输出并选择"另存 为已训练模型"。
使用参数扫描执行交叉验证
本部分介绍如何将参数扫描与交叉验证相结合。 此过程需要更长时间,但可以指定折叠数,并获取有关数据集和可能模型的最大信息量。
将 分区和示例 模块添加到试验,并连接训练数据。
选择 "分配到折叠"选项 ,并指定要将数据划分为的一些折叠数。 如果未指定数字,则默认使用 10 折。 行随机放入这些折叠,无需替换。
若要平衡某些列的采样,将 "分层 "拆分设置为 TRUE,然后选择 "层次"列。 例如,如果数据集不均衡,可能需要划分数据集,使每个折叠获得相同数量的少数事例。
将 "优化模型超参数"模块 添加到试验。
连接类别中的一个机器学习模块调整为"优化模型超参数"的左侧输入。
在学习器"属性"窗格中,将"创建训练器模式"选项设置为"参数范围",并使用范围生成器指定参数扫描中要使用的值范围。
无需指定所有值的范围。 可以手动设置某些参数的值,然后扫描其余参数。 这可能会节省一些时间。
有关不支持此选项的学员列表,请参阅技术 说明 部分。
(可选)可以将验证数据集连接到优化模型 超参数的最右侧输入。 对于交叉验证,只需要训练数据集。
在" 优化 模型超参数" 的"属性"窗格中,指示要执行随机扫描还是网格扫描。 网格扫描详尽,但更耗时。 随机参数搜索可以在不花太多时间的情况下获得良好的结果。
随机扫描时的最大运行数:如果选择随机扫描,则可以使用参数值的随机组合来指定该模型应定型多少次。
随机网格上的最大运行数:此选项还控制随机采样参数值的迭代次数,但不会从指定范围内随机生成值;而是会创建一个矩阵,该矩阵是参数值的所有可能组合,并对矩阵进行随机采样。 此方法更高效,且不容易出现区域过采样或欠采样的情况。
提示
有关这些选项的更深入讨论,请参阅 技术说明 部分。
选择单个标签列。
选择要用于对模型进行排名的 单个 度量值。 计算多个度量值,因此选择对结果进行排序时要使用的最重要的度量值。
对于 " 随机种子",请键入初始化参数扫描时要使用的数字。
如果要训练支持集成参数扫描的模型,则还可以设置要使用的种子值的范围,并同时循环访问随机种子。 这是可选的,但对于避免由 seed 选择引入的偏差非常有用。
添加 " 交叉验证模型 " 模块。 连接分区和示例的输出输出到数据集输入,并将调谐模型超参数的输出连接到未定型的模型输入。
运行试验。
交叉验证的结果
交叉验证完成时:
若要查看评估结果,请右键单击该模块,选择 " 通过折叠评估结果",然后选择 " 可视化"。
准确性指标是通过交叉验证处理进行计算的,可能会因所选的折叠数量而略有不同。
若要查看数据集的划分方式,以及 "最佳" 模型对数据集中每一行的评分,请右键单击该模块,选择 " 评分结果",然后选择 " 可视化"。
如果保存此数据集供以后重复使用,则保留折叠分配。 例如,保存的 datsaet 可能如下所示:
折叠分配 类 Age (第一个功能列) 2 0 35 1 1 17 3 0 62 若要获取 "最佳" 模型的参数设置,请右键单击 "微调模型超参数"
示例
有关如何使用此模块的示例,请参阅 Azure AI 库:
带计数的 Learning:二元分类:使用基于计数的学习生成一组精简功能,然后应用参数扫描以查找最佳模型参数。
二元分类:网络入侵检测:在交叉验证模式中使用 优化模型超参数 ,其中自定义拆分为五个折叠,以查找 双类逻辑回归 模型的最佳超参数。
技术说明
本部分包含实现详情、使用技巧和常见问题解答。
参数扫描的工作原理
本部分介绍了参数扫描的常规工作方式,以及此模块中的选项如何进行交互。
设置参数扫描时,可以定义搜索范围,使用随机选择的有限数目的参数,或对定义的参数空间进行穷举搜索。
随机扫描:此选项使用一组迭代数训练模型。
指定要迭代的值范围,模块将使用这些值的随机选择子集。 值是使用替换法选择的,这意味着,以前随机选择的数字不会从可用数字池中删除。 因此,任何选定值的可能性在所有阶段都保持不变。
网格扫描:此选项创建一个矩阵或网格,其中包含指定的值范围内参数的每个组合。 开始使用此模块进行优化时,将使用这些参数的组合训练多个模型。
整个网格:使用整个网格的选项只是指测试每个组合并对其进行测试。 此选项可被视为最彻底,但要求最多时间。
随机网格:如果选择此选项,则计算所有组合的矩阵,并根据指定的迭代数从矩阵对值进行采样。
最新研究表明,随机扫描可以比网格扫描更好。
控制训练的长度和复杂性
迭代许多的设置组合可能会很耗时,因此,模块提供多种方式来限制该过程:
- 限制用于测试模型的迭代数
- 限制参数空间
- 同时限制迭代的收藏和参数空间
建议您尝试使用这些设置来确定最有效的方法来针对特定数据集和模型进行定型。
选择评估指标
其中包含每个模型的准确性的报表显示在末尾,以便您可以查看指标结果。 一组统一的指标用于所有分类模型,另一组指标用于回归模型。 但是,在训练过程中,必须选择单个指标,用来为优化过程中生成的模型排名。 您可能会发现,最佳指标会根据您的业务问题和误报和漏报的成本而变化。
有关详细信息,请参阅如何在机器学习中评估模型性能
用于分类的指标
准确性 True 结果与事例总数的比例。
精度 True 结果的比例为正值。
召回 所有结果中所有正确结果的部分。
F 分数 一个度量值,该度量值用于平衡精度和回调。
AUC 一个值,该值表示在 x 轴上绘制误报时曲线下的区域,而实际的正值绘制在 y 轴上。
平均日志丢失 两个概率分布之间的差异: true 和模型中的一个。
训练日志丢失 模型通过随机预测提供的改进。
用于回归的指标
平均绝对误差 对模型中的所有错误求平均值,其中错误表示预测值与真实值之间的距离。 通常缩写为 MAE。
平均方形错误的根 测量错误平方的平均值,然后获取该值的根。 通常缩写为 RMSE
相对绝对错误 将错误表示为真正值的百分比。
相对平方误差 通过将总平方误差除以预测值的总平方误差来规范化。
确定系数 一个数字,用于指示数据与模型的匹配程度。 如果值为1,则表示模型完全匹配数据;如果值为0,则表示数据是随机的,否则不能适合模型。 通常称为 r2、 r2或 r 平方。
不支持参数扫描的模块
几乎所有机器学习的学员都支持通过集成参数扫描进行交叉验证,这使你可以选择要试验的参数。 如果学习器不支持设置值的范围,你仍可以在交叉验证中使用它。 在这种情况下,会为扫描选择某些允许值范围。
以下学习器不支持设置要在参数扫描中使用的值的范围:
预期输入
名称 | 类型 | 说明 |
---|---|---|
未训练的模型 | ILearner 接口 | 用于参数扫描的未训练模型 |
训练数据集 | 数据表 | 用于训练的输入数据集 |
验证数据集 | 数据表 | 用于验证的输入数据集(适用于训练/测试验证模式)。 此为可选输入。 |
模块参数
名称 | 范围 | 类型 | 默认 | 说明 |
---|---|---|---|---|
指定参数扫描模式 | 列表 | 扫描方法 | 随机扫描 | 扫描参数空间上的整个网格,或使用有限数量的示例运行进行扫描 |
随机扫描最大运行次数 | [1; 10000] | Integer | 5 | 使用随机扫描执行的最大运行次数 |
随机种子 | any | Integer | 0 | 提供一个值用于设置随机数生成器的种子 |
标签列 | any | ColumnSelection | 标签列 | |
用于测量分类性能的指标 | 列表 | 二元分类指标类型 | 精确度 | 选择用于评估分类模型的指标 |
用于测量回归性能的指标 | 列表 | RegressionMetric 类型 | 平均绝对误差 | 选择用于评估回归模型的指标 |
Outputs
名称 | 类型 | 说明 |
---|---|---|
扫描结果 | 数据表 | 参数扫描运行的结果指标 |
训练后的最佳模型 | ILearner 接口 | 对训练数据集具有最佳性能的模型 |