基于筛选器的特征选择
本文介绍如何在 Azure 机器学习设计器中使用“基于筛选器的特征选择”组件。 此组件可帮助你标识输入数据集中预测能力最高的列。
概括而言,“特征选择”是指在指定了输出的情况下,将统计测试应用到输入的过程。 目标是确定哪些列能够更准确地预测输出。 “基于筛选器的特征选择”组件提供多种特征选择算法供用户选择。 该组件包含“皮尔逊相关”和卡方值等关联方法。
使用“基于筛选器的特征选择”组件时,需要提供一个数据集,并标识包含标签或因变量的列。 然后,指定一个用于度量特征重要性的方法。
该组件将输出包含最佳特征列(按预测能力排名)的数据集。 它还根据所选的指标输出特征的名称及其评分。
基于筛选器的特征选择是什么?
此组件之所以称为“基于筛选器”的特征选择,是因为你要使用所选的指标来查找不相关的属性。 然后从模型中筛选出多余的列。 选择适合数据的单个统计度量后,该组件将计算每个特征列的评分。 返回的列已按其特征评分排名。
选择适当的特征可能会改善分类的准确度和效率。
通常只使用具有最高评分的列来生成预测模型。 可将特征选择评分不佳的列保留在数据集中,并在生成模型时将其忽略。
如何选择特征选择指标
“基于筛选器的特征选择”组件提供各种指标用于评估每个列中的信息值。 本部分将大致介绍每个指标及其应用方式。 可以在技术说明以及有关配置每个组件的说明中,找到使用每个指标所要满足的其他要求。
皮尔逊相关
皮尔逊相关统计(或皮尔逊相关系数)在统计模型中也称为
r
值。 对于任意两个变量,它会返回指示相关性强度的值。皮尔逊相关系数的计算方式是:将两个变量的协方差除以其标准偏差的积。 这两个变量的标度变化不影响该系数。
卡方
双向卡方测试是测量预期值与实际结果的接近程度的一种统计方法。 该方法假设变量是随机的,并且是从独立变量的足够样本中抽取的。 生成的卡方统计信息指示实际结果与预期(随机)结果之间的差距。
提示
如果需要对自定义特征选择方法使用不同的选项,请使用执行 R 脚本组件。
如何配置“基于筛选器的特征选择”
选择标准统计指标。 该组件计算一对列之间的关联:标签列和特征列。
将“基于筛选器的特征选择”组件添加到管道。 可以在设计器的“特征选择”类别中找到它。
连接至少包含两个列(潜在特征)的输入数据集。
为了确保分析某列并生成特征评分,请使用编辑元数据组件来设置 IsFeature 属性。
对于“特征评分方法”,请选择以下已建立的统计方法之一,以便在计算评分时使用。
方法 要求 皮尔逊相关 标签可以是文本或数字。 特征必须是数字。 卡方 标签和特征可以是文本或数字。 使用此方法来计算两个分类列的特征重要性。 提示
如果更改所选的指标,将重置所有其他选择。 因此,请务必先设置此选项。
选择“仅对特征列运行”选项,以便仅为事先已标记为特征的列生成评分。
如果清除此选项,该组件也会为不满足条件的任何列创建评分,直到达到“所需特征数”中指定的列数。
对于“目标列”,请选择“启动列选择器”,以按名称或索引选择标签列。 (索引从 1 开始。)
涉及到统计相关性的所有方法都需要一个标签列。 如果你未选择一个或多个标签列,该组件将返回设计时错误。对于“所需特征数”,请输入要作为结果返回的特征列数目:
可指定的最小特征数为 1,但我们建议增大此值。
如果指定的所需特征数大于数据集中的列数,将返回所有特征。 甚至会返回评分为零的特征。
如果指定的结果列少于特征列,则会按评分的降序将特征排名。 只返回评分最高的特征。
提交管道。
重要
如果打算在推理中使用“基于筛选器的特征选择”,则需要使用选择列转换来存储特征选择结果,并使用应用转换将特征选择转换应用到评分数据集。
请参考下面的屏幕截图来构建管道,以确保列选择与评分过程相同。
结果
处理完成后:
若要查看已分析的特征列及其分数的完整列表,请右键单击该组件并选择“可视化”。
若要根据特征选择条件查看数据集,请右键单击该组件并选择“可视化”。
如果数据集包含的列数少于预期,请检查组件设置。 此外,请检查作为输入提供的列数据类型。 例如,如果将“所需特征数”设置为 1,则输出数据集只包含两列:标签列,以及排名最高的特征列。
技术说明
实现详细信息
如果对数字特征和分类标签使用皮尔逊相关,则特征评分的计算方式如下:
对于分类列中的每个级别,将计算数字列的条件平均值。
将条件平均列与数字列相关联。
要求
对于指定为“标签”或“评分”列的任何列,无法生成特征选择评分。
如果你尝试对评分方法不支持的数据类型的列使用评分方法,该组件将引发错误。 或者,会将零评分分配到该列。
如果某个列包含逻辑 (true/false) 值,这些值将作为
True = 1
和False = 0
进行处理。如果已将某个列指定为“标签”或“评分”,则该列不能是特征。
如何处理缺失值
无法将包含所有缺失值的列指定为目标(标签)列。
如果某个列包含缺失值,则该组件在计算该列的评分时,会忽略这些缺失值。
如果指定为特征列的某个列包含所有缺失值,该组件将分配零评分。
后续步骤
请参阅 Azure 机器学习可用的组件集。