类别

版本

优化选择(RapidMiner Studio Core)

剧情简介

该操作符选择给定ExampleSet中最相关的属性。采用“正向选择”和“反向消除”两种确定性贪婪特征选择算法进行特征选择。

描述

特征选择,即为分类或回归问题选择最相关的特征,是数据挖掘的主要任务之一。RapidMiner集成了多种搜索方法,包括进化算法。对于所有的搜索方法,我们都需要一个性能度量来表明一个搜索点(一个特征子集)在给定数据集上的表现。

确定性算法是一种算法,用非正式的术语来说,其行为是可预测的。给定一个特定的输入,它将始终产生相同的输出,并且底层机器将始终通过相同的状态序列。

贪心算法是一种遵循在每一阶段进行局部最优选择,并希望找到全局最优的启发式求解问题的算法。在某些问题上,贪婪策略可能不会产生最优解,但贪婪启发式可能会产生近似全局最优解的局部最优解。

该算子实现了确定性贪婪特征选择算法“前向选择”和“后向消除”。然而,我们在标准算法中增加了一些增强功能,如下所述:

提出了选择

创建初始人口n个人在那里n是输入ExampleSet中的属性数量。每个人只会使用其中一个功能。评估属性集并只选择最好的k.对于每一个k属性集做:如果有的话j未使用的属性j复制属性集,并向属性集添加一个以前未使用的属性。只要在最后的表现有所提高p迭代转到步骤2

落后的消除

从使用所有特性的属性集开始。评估所有属性集并选择最好的k.对于每一个k属性集做:如果有的话j所使用的属性j复制属性集,并从属性集中删除以前使用的一个属性。只要在最后的表现有所提高p迭代转到步骤2

的参数k可以通过保持最好的参数,参数p可以通过没有进步的世代参数。这些参数具有默认值1,这意味着使用标准选择算法。使用其他值会增加运行时间,但可能有助于避免在搜索全局最优时出现局部极值。

另一个不寻常的参数是最大代数参数。该参数将迭代次数限定为特征选择/取消选择的最大值。结合没有进步的世代参数,这允许几种不同的选择方案(它们被描述为向前选择,向后消除工作类似):

最大代数= m,无改进代数= p:

选择最大的特性。如果最后一次没有测量到性能改进,则停止选择p一代又一代。

最大代数= -1,无改进代数= p:

尝试选择新特性,直到最后一次没有测量到性能改进p一代又一代。

最大代数= m,无改进代数= -1:

选择最大的特性。选择停止直到所有组合达到最大值才停止都试过了。然而,结果可能包含比这些更少的特性。

最大代数= -1,无改进代数= -1:

测试所有的属性组合(蛮力,这可能需要很长时间,应该只应用于小的属性集)。

分化

优化选择(进化)

这也是一个属性集约简运算符,但它使用遗传算法来实现此目的。

输入

  • 示例设置为(数据表)

    这个输入端口需要一个ExampleSet。这个ExampleSet在嵌套链的第一个端口(在子流程中)可用,以便在子流程中进行处理。

  • 通过(IOObject)

    该操作符可以有多个直通端口。当一个输入与通过端口连接时,另一个通过端口可用,该端口准备接受另一个输入(如果有的话)。输入的顺序保持不变。在此操作符的第一个直通端口提供的Object在嵌套链的第一个直通端口(在子进程内)可用。不要忘记按正确顺序连接所有输入。确保在子流程级别连接了正确数量的端口。

输出

  • 举例说明(数据表)

    将特征选择算法应用于输入的ExampleSet。带有简化属性的最终exampleeset通过该端口交付。

  • 权重(权重)

    属性权重通过该端口下发。

  • 性能(性能向量)

    该端口为所选属性提供性能矢量。性能矢量是性能标准值的列表。

参数

  • selection_direction此参数指定应使用“正向选择”和“反向消除”算法中的哪一种。选择范围:
  • limit_generations_without_improval此参数指示如果此代数未显示任何改进,则是否应中止优化。如果未选中,则始终使用最大代数。范围:布尔
  • generations_without_improval此参数仅在在没有改进的情况下限制世代参数设置为true。此参数指定提前停止的停止标准,即在之后停止n几代人的表现没有改善。n由此参数指定。范围:整数
  • limit_number_of_generations此参数指示是否应将代数限制为特定数量。范围:布尔
  • keep_best最好的n个体被保存在每一代n是该参数的值。范围:整数
  • maximum_number_of_generations此参数仅在限制代数参数设置为true。此参数指定算法应终止的代数。范围:整数
  • normalize_weights该参数指示最终权重是否应该规范化。如果设置为true,则对最终权重进行规范化,使最大权重为1,最小权重为0。范围:布尔
  • use_local_random_seed该参数表示a局部随机种子应该用于随机化。使用相同的值局部随机种子会产生相同的随机化。范围:布尔
  • local_random_seed此参数指定局部随机种子并且只有在使用当地的随机种子参数设置为true。范围:整数
  • show_stop_dialog此参数确定具有停止按钮,停止搜索最佳特征空间。如果停止对最佳特征空间的搜索,则返回搜索到的最佳个体。范围:布尔
  • user_result_individual_selection如果将此参数设置为true,则允许用户从上次填充中选择最终结果个体。范围:布尔
  • show_population_plotter此参数确定是否应在性能空间中显示当前人口。范围:布尔
  • plot_generations此参数仅在显示人口分布图参数设置为true。人口绘图仪在这几代中更新。范围:整数
  • constraint_draw_range此参数仅在显示人口分布图参数设置为true。此参数决定是否将人口绘图仪的绘制范围限制在0到1之间。范围:布尔
  • draw_dominated_points此参数仅在显示人口分布图参数设置为true。该参数决定是否只在总体绘图仪上绘制非帕累托支配的点。范围:布尔
  • population_criteria_data_file此参数指定保存最终人口的标准数据的文件的路径。范围:文件名
  • maximal_fitness此参数指定最大适应度。如果适应度达到这个值,优化将停止。范围:真正的

教程的过程

多项式数据集的特征约简

使用检索操作符加载“多项式”数据集。这里插入了一个断点,以便您可以查看ExampleSet。您可以看到,除了label属性之外,ExampleSet有5个常规属性。优化选择操作符应用于ExampleSet,这是一个嵌套操作符,即它有一个子进程。子流程有必要交付一个性能向量。该性能向量由底层特征约简算法使用。看看这个操作符的子过程。这里使用了分割验证操作符,它本身就是一个嵌套操作符。看一下分割验证操作符的子流程。SVM算子在“Training”子过程中用于训练模型。 The trained model is applied using the Apply Model operator in the 'Testing' subprocess. The performance is measured through the Performance operator and the resultant performance vector is used by the underlying algorithm. Run the process and switch to the Results Workspace. You can see that the ExampleSet that had 5 attributes has now been reduced to 2 attributes.