优化参数(网格)(并发)
剧情简介
该操作符为其子流程中的操作符找到所选参数的最优值。描述
优化参数(网格)操作符是一个嵌套操作符。它为所选参数值的所有组合执行子流程,然后通过参数集端口。参数的最优值的性能向量通过性能端口和关联的模型(如果有的话)模型端口。最佳运行的任何其他结果都通过输出港口。哪些参数最优,取决于下发到内部性能端口的性能值。
操作符的整个配置是通过编辑参数设置参数。这个参数的完整描述可以在参数部分找到。
该操作符返回一个最佳参数集,也可以使用写参数操作符将该参数集写入文件。可以使用read Parameters操作符在另一个进程中读取该参数集,然后使用set Parameters操作符应用该参数集。
内部性能端口可用于记录内部子进程的性能。根据参数的不同,自动创建一个日志来捕获运行次数、参数设置和交付的性能向量的主要标准或所有标准记录所有的标准.这可以通过取消选择来禁用日志性能.通过比较不同迭代的性能适应度,还使用内部性能端口来确定最佳模型。
请注意,该操作符有两种模式:同步和非同步。它们取决于同步参数。在后者中,生成所有参数组合,并为每个组合执行子流程。在同步模式中,不创建任何组合,但参数值被视为组合列表。对于单个参数的迭代,两种模式之间没有区别。请注意,对于同步模式中的所有参数,可能的参数数量必须相同。作为一个例子,有两个布尔参数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。对数选择11个值(10步)。现在,单击SVM。在Selected Parameters窗口中,你会看到gamma参数的范围被设置为0.001到1.5。对数选择11个值(10步)。2个参数有11个可能的值,因此有121个组合(即11 x 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.
看看优化参数(网格)操作符的子过程。首先,使用split data Operator将数据分割为两个相等的分区。SVM (LibSVM)运算符应用于一个分区。在第二个分区上使用Apply model Operator应用生成的分类模型。使用性能(分类)算子来度量SVM模型在测试分区上的统计性能。嵌套的Operator还记录每次迭代的性能和参数。
运行该流程并转到Results View。可以看到,最优参数集有以下值:SVM. c = 398.107和SVM。γ= 0.001。现在看看由优化参数(网格)操作符记录的值,以验证这些值。您可以看到最小的测试误差是0.02(在第8次迭代中)。此迭代的C和gamma参数的值与最佳参数集中给出的值相同。
参数
- edit_parameter_settings参数是通过编辑参数设置菜单。您可以通过此菜单选择参数及其可能的值。这个菜单有一个运营商窗口中列出了该操作符子进程中的所有操作符。中单击任何操作符时运营商窗口中,该操作符的所有参数都列在参数窗口。您可以通过菜单的方向键选择任何参数。所选参数列在选择的参数窗口。应该只选择您希望迭代子流程的那些参数。该Operator迭代指定范围内的参数值。应该指定每个所选参数的范围。当您单击任何选定的参数(参数在选择的参数窗口),网格/范围而且值列表选择启用。这些选项允许您指定所选参数的值范围。的最小值而且马克斯字段分别用于指定范围的下界和上界。由于不能检查此范围内的所有值,因此步骤字段允许您指定要从指定范围检查的值的数量。最后,规模选项允许您选择这些值的模式。还可以以列表的形式指定值。范围:菜单
- error_handling此参数允许您选择处理内部流程执行期间发生的错误的方法。它有以下选项:
- fail_on_error:如果发生错误,流程的执行将失败并显示错误消息。
- ignore_error:在发生错误的情况下,该错误将被忽略,流程将在下一个迭代中继续执行。
- log_performance只有当内部性能端口已连接时,此参数才可见。如果连接,如果该参数设置为true,则性能向量的主要准则将自动记录。范围:布尔
- log_all_criteria该参数允许更多的日志记录。如果设置为true,则将记录所有性能标准。范围:布尔
- 同步该操作符有两种模式:同步和非同步。它们取决于这个参数的设置。如果设置为false,则生成所有参数组合,并为每个组合应用内部操作符。如果它被设置为true,则不创建任何组合,但参数值被视为组合列表。对于单个参数的迭代,两种模式之间没有区别。请注意,对于同步模式中的所有参数,可能的参数数量必须相同。范围:布尔
- enable_parallel_execution此参数启用子流程的并行执行。如果遇到内存问题,请禁用并行执行。范围:布尔
输入
- 输入(IOObject)
该操作符可以有多个输入。当一个输入连接后,另一个输入端口变为可用,它准备接受另一个输入(如果有的话)。输入的顺序保持不变。在这个Operator的第一个输入端口提供的对象在嵌套链的第一个输入端口可用(在子流程内部)。不要忘记按正确的顺序连接所有输入。确保您在子进程级连接了正确数量的端口。
输出
- 性能(性能向量)
该端口为所选参数的最优值提供性能向量。性能向量是性能标准值的列表。
- 模型(模型)
该端口为所选参数的最优值提供模型。
- 参数(参数设置)
该端口提供所选参数的最优值。还可以使用Write Parameters操作符将此最优参数集写入文件。写入的参数集可以使用read Parameters操作符在另一个进程中读取。
- 输出(IOObject)
子流程的任何结果都通过输出端口传递。该操作符可以有多个输出。当一个输出端口被连接时,另一个输出端口变为可用的,它准备交付另一个输出(如果有的话)。输出的顺序保持不变。在子进程的第一个输出端口交付的对象在Operator的第一个输出端口交付。不要忘记按正确的顺序连接所有输出。确保您已经连接了正确数量的端口。