优化参数(网格)(并发)
剧情简介
此Operator在其子流程中为Operator查找所选参数的最优值。描述
优化参数(网格)操作符是一个嵌套操作符。它为所选参数值的所有组合执行子流程,然后通过参数集端口。参数最优值的性能向量通过性能端口和关联的模型(如果有的话)模型端口。最佳运行的任何其他结果都通过输出港口。根据传递给内部性能接口的性能值,确定哪些参数最优。
操作符的整个配置是通过编辑参数设置参数。这个参数的完整描述可以在参数部分找到。
这个操作符返回一个最优参数集,这个参数集也可以用写参数操作符写入文件。可以使用read Parameters Operator在另一个进程中读取该参数集,然后使用set Parameters Operator应用该参数集。
内部性能端口可用于记录内部子进程的性能。根据参数的不同,将自动创建日志以捕获运行次数、参数设置以及交付的性能矢量的主要标准或所有标准记录所有标准.这可以通过取消选择来禁用日志性能.内部性能端口还用于通过比较不同迭代的性能适应度来确定最佳模型。
请注意,此操作符有两种模式:同步和非同步。它们取决于设置同步参数。在后者中,生成所有参数组合,并为每个组合执行子流程。在同步模式下,不创建任何组合,但参数值被视为组合列表。对于单个参数的迭代,两种模式之间没有区别。请注意,在同步模式下,所有参数的可能性数量必须相同。作为一个例子,有两个布尔参数A和B(都有true/false作为可能的参数设置)将在非同步模式下产生四种组合(t/t, f/t, t/f, f/f),在同步模式下产生两种组合(t/t, f/f)。
如果同步参数未设置为true,选择大量参数和/或大量步骤(或参数的可能值)将导致大量组合。例如,如果您为每个参数选择3个参数和25个步骤,那么组合的总数将超过17576(即26 x 26 x 26)。对所有可能的组合执行子流程。为如此大量的迭代运行子流程将花费大量时间。所以一定要小心限制参数和它们的步骤。
分化
其他参数优化方案也可用。如果根本不知道最佳范围和依赖关系,则优化参数(进化)运算符可能很有用。另一个与这个参数优化操作符类似的操作符是循环参数操作符。与优化操作符相比,这个操作符只是迭代所有的参数组合。这对于绘图和记录特别有用。
参数优化(进化)
优化参数(进化)运算符使用进化方法找到一组参数的最优值,这种方法通常比网格搜索(如优化参数(网格)运算符)或贪婪搜索(如优化参数(二次)运算符)更合适,并产生更好的结果。如果根本不知道最佳范围和依赖关系,则优化参数(进化)运算符可能很有用。
优化参数(二次型)
优化参数(二次)算子使用二次交互模型找到最优值。首先,它运行与此操作符相同的迭代。从收集的参数集/性能对中,它尝试计算可能位于给定网格线之间的新参数集。结果要么是原始运行的最佳性能,要么是新计算的参数集的最佳性能。教程的过程
寻找SVM算子参数的最优值
使用检索操作符加载“加权”数据集。对其应用优化参数(网格)算子。看一下优化参数(网格)操作符的编辑参数设置参数。在“Selected Parameters”窗口中可以看到,SVM算子的C和gamma参数已被选择。在Selected Parameters窗口中单击SVM.C参数,您将看到C参数的范围从0.001到100000。以对数方式(在10步中)选择11个值。现在,单击SVM。在Selected Parameters窗口中设置gamma参数,您将看到gamma参数的范围从0.001到1.5。以对数方式(在10步中)选择11个值。两个参数有11种可能的值,因此有121种(即11 × 11)组合。 The subprocess will be executed for all combinations of these values, thus it will iterate 121 times. In every iteration, the values of the C and/or gamma parameters of the SVM(LibSVM) Operator are changed. The value of the C parameter is 0.001 in the first iteration. The value is increased logarithmically until it reaches 100000 in the last iteration. Similarly, the value of the gamma parameter is 0.001 in the first iteration. The value is increased logarithmically until it reaches 1.5 in the last iteration.
看一下优化参数(网格)操作符的子过程。首先,使用拆分数据操作符将数据拆分为两个相等的分区。支持向量机(LibSVM)算子在一个分区上应用。在第二个分区上使用Apply model Operator应用生成的分类模型。使用性能(分类)算子度量SVM模型在测试分区上的统计性能。嵌套的Operator还记录每次迭代的性能和参数。
运行流程并转到Results View。可以看到,最优的参数集有以下值:SVM. c = 398.107和SVM。Gamma = 0.001。现在来看一下Optimize Parameter (Grid) Operator记录的值,以验证这些值。您可以看到最小的测试误差是0.02(在第8次迭代中)。该迭代的C和gamma参数的值与最优参数集中给出的值相同。
参数
- edit_parameter_settings参数通过编辑参数设置菜单。您可以通过该菜单选择参数及其可能的值。这个菜单有一个运营商窗口,该窗口列出此操作符的子进程中的所有操作符。中的任何操作符时运营商窗口中,该操作符的所有参数都列在参数窗口。您可以通过菜单的方向键选择任意参数。所选参数列在选择的参数窗口。应该只选择那些您希望迭代子流程的参数。此操作符迭代指定范围内的参数值。应该指定每个选定参数的范围。当您单击任何选定的参数(参数在选择的参数窗口),网格/范围和值列表选项已启用。这些选项允许您指定所选参数的值范围。的最小值和马克斯字段分别用于指定范围的下界和上界。由于无法检查此范围内的所有值,因此步骤字段允许您指定要从指定范围中检查的值的数量。最后,规模选项允许您选择这些值的模式。您还可以以列表的形式指定值。范围:菜单
- error_handling此参数允许您选择处理内部流程执行期间发生的错误的方法。它有以下选项:
- fail_on_error:如果发生错误,流程的执行将失败并显示错误消息。
- ignore_error:如果发生错误,错误将被忽略,流程将继续执行下一次迭代。
- log_performance该参数仅在连接内部性能端口时可见。如果它被连接,如果该参数被设置为true,性能矢量的主要标准将自动与参数集一起记录。范围:布尔
- log_all_criteria这个参数允许更多的日志记录。如果设置为true,将记录所有性能标准。范围:布尔
- 同步该操作符有同步和非同步两种模式。它们取决于这个参数的设置。如果设置为false,则生成所有参数组合,并为每个组合应用内部操作符。如果将其设置为true,则不会创建任何组合,但参数值将被视为组合列表。对于单个参数的迭代,两种模式之间没有区别。请注意,在同步模式下,所有参数的可能性数量必须相同。范围:布尔
- enable_parallel_execution此参数启用子流程的并行执行。如果遇到内存问题,请禁用并行执行。范围:布尔
输入
输入(IOObject)
这个操作符可以有多个输入。当一个输入连接时,另一个输入端口变得可用,它准备接受另一个输入(如果有的话)。输入的顺序保持不变。在此操作符的第一个输入端口提供的Object在嵌套链的第一个输入端口(在子流程中)可用。不要忘记按正确顺序连接所有输入。确保在子流程级别连接了正确数量的端口。
输出
性能(性能向量)
该端口为所选参数的最优值提供性能矢量。性能矢量是性能标准值的列表。
模型(模型)
该接口提供所选参数最优值的Model。
参数(参数设置)
该端口用于下发所选参数的最优值。还可以使用Write Parameters操作符将此最佳参数集写入文件。写入的参数集可以在另一个进程中使用read Parameters操作符读取。
输出(IOObject)
子流程的任何结果都通过输出端口交付。这个运算符可以有多个输出。当一个输出端口被连接时,另一个输出端口就可用了,它可以提供另一个输出(如果有的话)。输出的顺序保持不变。在子流程的第一个输出端口交付的对象将在Operator的第一个输出端口交付。不要忘记以正确的顺序连接所有输出。确保您已经连接了正确数量的端口。