优化参数(进化)(RapidMiner工作室核心)
剧情简介
该运算符查找子过程中运算符所选参数的最优值。它使用了一种进化计算方法。描述
该操作符使用一种进化方法为一组参数找到最优值,这种方法通常比网格搜索(如优化参数(网格)操作符)或贪婪搜索(如优化参数(二次)操作符)更合适,并导致更好的结果。这是一个嵌套操作符,即它有一个子进程。它多次执行它的子流程,以找到指定参数的最优值。
该运算符通过参数端口,也可以使用写参数操作符写入文件。可以使用read Parameters操作符在另一个进程中读取该参数集。参数的最优值的性能向量通过性能端口。子流程的任何附加结果都通过结果港口。
RapidMiner中还提供了其他参数优化方案。如果根本不知道最佳范围和依赖关系,优化参数(进化)操作符可能很有用。与此参数优化操作符类似的另一个操作符是循环参数操作符。与优化操作符相比,该操作符只是遍历所有参数组合。这对于绘图尤其有用。
分化
优化参数(网格)
Optimize Parameters (Grid)操作符对所选参数值的所有组合执行它的子流程,然后交付最优参数值。输入
- 输入(数据表)
该操作符可以有多个输入。当一个输入连接后,另一个输入端口变为可用,它准备接受另一个输入(如果有的话)。输入的顺序保持不变。在该操作符的第一个输入端口提供的Object在嵌套链的第一个输入端口可用(在子流程内部)。不要忘记按正确的顺序连接所有输入。确保您在子进程级连接了正确数量的端口。
输出
- 性能(性能向量)
该端口为所选参数的最优值提供性能向量。性能向量是性能标准值的列表。
- 参数(参数设置)
该端口提供所选参数的最优值。可以使用Write Parameters操作符将此最优参数集写入文件。写入的参数集可以使用read Parameters操作符在另一个进程中读取。
- 结果(IOObject)
子流程的任何附加结果都通过结果端口传递。该操作符可以有多个输出。当一个结果端口被连接时,另一个结果端口将变为可用,准备交付另一个输出(如果有的话)。输出的顺序保持不变。在子进程的第一个结果端口交付的Object在操作符的第一个结果端口交付。不要忘记按正确的顺序连接所有输出。确保您已经连接了正确数量的端口。
参数
- edit_parameter_settings参数是通过编辑参数设置菜单。您可以通过此菜单选择参数及其可能的值。这个菜单有一个运营商窗口,该窗口列出了该操作符子进程中的所有操作符。中的任何操作符时运营商窗口中,该操作符的所有参数都列在参数窗口。您可以通过菜单的方向键选择任何参数。所选参数列在选择的参数窗口。只应该选择您希望为其找到最优值的那些参数。该运算符查找指定范围内参数的最优值。应该指定每个所选参数的范围。控件中的任何选定参数(参数)单击时选择的参数窗口)网格/范围选择启用。此选项允许您指定所选参数的值范围。的最小值而且马克斯字段分别用于指定范围的下界和上界。的步骤而且规模此操作符的选项已被禁用。注意,只显示数值参数,因为该操作符不支持非数值参数。范围:菜单
- error_handling此参数允许您选择处理内部流程执行期间发生的错误的方法。它有以下选项:
- fail_on_error:如果发生错误,流程的执行将失败并显示错误消息。
- ignore_error:在发生错误的情况下,该错误将被忽略,流程将在下一个迭代中继续执行。
- max_generations此参数指定算法应终止的代数。范围:整数
- use_early_stopping此参数启用提前停止。如果不设置为true,则总是执行的最大代数。范围:布尔
- generations_without_improval该参数仅在使用早期停止参数设置为true。该参数指定了早期停止的停止条件,即它在之后停止n几代人都没有进步的表现。n由此参数指定。范围:整数
- specify_population_size此参数指定总体的大小。如果不设置为true,则使用给定ExampleSet的每个示例。范围:布尔
- population_size该参数仅在指定人口规模参数设置为true。这个参数指定了种群的大小,即每一代的个体数量。范围:整数
- keep_best该参数指定最佳个体是否应存活。这也被称为精英选择。在下一代中保留最好的个体,这被称为精英主义或精英选择。范围:布尔
- mutation_type此参数指定突变操作符的类型。选择范围:
- selection_type此参数指定此进化算法的选择方案。选择范围:
- tournament_fraction该参数仅在选择类型参数设置为'tournament'。它指定了当前人口中应该用作比赛成员的比例。范围:真正的
- crossover_prob个体被选择进行交叉的概率由这个参数指定。范围:真正的
- use_local_random_seed该参数表示a当地的随机种子应用于随机化。的相同值当地的随机种子会产生相同的随机化。范围:布尔
- local_random_seed此参数指定当地的随机种子.该参数仅在使用本地随机种子参数设置为true。范围:整数
- show_convergence_plot此参数指示是否应绘制具有收敛图的对话框。范围:布尔
教程的过程
通过优化参数(Evolutionary)算子寻找SVM算子参数的最优值
使用Retrieve操作符加载'Weighting'数据集。优化参数(进化)算子被应用到它上面。看看优化参数(进化)操作符的编辑参数设置参数。您可以在Selected Parameters窗口中看到,SVM运算符的C和gamma参数被选中。单击“Selected Parameters”窗口中的SVM.C参数,可以看到C参数的取值范围为0.001 ~ 100000。现在,单击SVM。在Selected Parameters窗口中,你会看到gamma参数的范围被设置为0.001到1.5。在子过程的每次迭代中,为了寻找最优值,改变SVM(LibSVM)算子的C和/或gamma参数的值。
看看优化参数(进化)操作符的子过程。首先,使用split data操作符将数据分割为两个相等的分区。SVM (LibSVM)运算符应用于一个分区。在两个分区上使用两个Apply model操作符应用生成的分类模型。使用性能(分类)操作符度量支持向量机模型在测试和训练分区上的统计性能。最后,使用Log运算符存储所需的结果。
log操作符的log参数存储5个东西。优化参数(进化)运算符的迭代由支持向量机运算符的应用计数计数。它存储在名为“Count”的列中。应用在Training分区上的Performance (classification)操作符的分类错误参数值存储在名为“Training error”的列中。应用在Testing分区上的Performance (classification)操作符的分类错误参数的值存储在名为“Testing error”的列中。SVM (LibSVM)运算符的C参数值存储在名为“SVM C”的列中。SVM (LibSVM)运算符的gamma参数值存储在名为“SVM gamma”的列中。还要注意,存储的信息将被写入文件名参数中指定的文件中。
在该过程的最后,使用Write Parameters操作符将最优参数集写入文件中。可以使用read Parameters操作符读取该文件,以便在另一个进程中使用这些参数值。
运行该流程并转到Results Workspace。可以看到,最优参数集有以下值:SVM. c = 56462和SVM。Gamma约为0.115。现在看看Log操作符保存的值,以验证这些值。切换到表视图,以表格形式查看存储的值。您可以看到最小的测试误差是0.064(在第20次迭代中)。此迭代的C和gamma参数的值与最佳参数集中给出的值相同。